Contract 0x24B20dA7A2Fa0D1D5aFcD693e1c8AFff20507eFd

 

Contract Overview

Medi Token: MEDI Token
Balance:
0.234507219203540509 Ether

EtherValue:
$310.55 (@ $1,324.25/ETH)

Token:
Txn Hash
Method
Block
From
To
Value
0xfa595121ea6cc35450aa00afe9ca0a809f38f8fea1200c6cd089793c4663e731Approve156473532022-09-30 16:29:476 hrs 21 mins ago0x42c40da871a9eb994f691ac7ebc2ef20dda14844 IN  Medi Token: MEDI Token0 Ether0.00131808 28.26928698
0x244e95a3ca9bbae9ad4e86672ded8469307502fd0d3083396138fb42f0b9100dApprove156472872022-09-30 16:16:356 hrs 34 mins ago0xcc6ca4db7eb39c80fd57985097678a1f8b73af19 IN  Medi Token: MEDI Token0 Ether0.001307 28.03167676
0xa41c7df4b0c001253ea34bc425aea6082937d3b8aba085b5482d166e76e59b13Approve156472152022-09-30 16:02:116 hrs 48 mins ago0x27ba5e30810752766ad31ba2b85150bfbd789e2d IN  Medi Token: MEDI Token0 Ether0.00194203 41.65127997
0x6caa30461e909bd93193b660887223cd10bad6a4ce205051423f754fde119f3cApprove156464202022-09-30 13:22:239 hrs 28 mins ago0x855de3931429aad2dae065951103c926b1d75e45 IN  Medi Token: MEDI Token0 Ether0.00097966 21.01113926
0x67b3d8457a30c398ebb3806c0788bba5c8b29d30065cd94cfe8917359388ea6eApprove156460572022-09-30 12:08:5910 hrs 42 mins ago0x30b468959508ca3800ce28dd1beae562adf292ac IN  Medi Token: MEDI Token0 Ether0.00064244 13.7787795
0xc3b606c8e4f16bd0f824df1693be5a332570b7d7758420a4b1af081e31b8471aApprove156263972022-09-27 18:11:593 days 4 hrs ago0x152207dc0322acad547dd60eba710218ee044b84 IN  Medi Token: MEDI Token0 Ether0.0010206 21.88919079
0xcf86787e647d00caa05cba4233535a5d903321711ec6921bb0b5186bbc3b762cTransfer156213982022-09-27 1:25:233 days 21 hrs ago0x81b13b2e17480f4625c40468bba63adf9309928e IN  Medi Token: MEDI Token0 Ether0.00545286 10.58354
0x082d447e56c9b7849b71d70878127053346ed0aa7ec90df2eaa4ec89727eb8e8Approve156187702022-09-26 16:35:114 days 6 hrs ago0xcc6ca4db7eb39c80fd57985097678a1f8b73af19 IN  Medi Token: MEDI Token0 Ether0.00081751 31.03480989
0xece50f9dfd67be167e09d16f9602257743eb58ed6f7fb4cf890507fc6c456ce0Approve156187692022-09-26 16:34:594 days 6 hrs ago0xcc6ca4db7eb39c80fd57985097678a1f8b73af19 IN  Medi Token: MEDI Token0 Ether0.00076958 31.61542704
0x79273492f1b4e9ec9a2cd06b8b520db9f9c05107a63d237ab244de05f954da24Approve156061722022-09-24 22:22:236 days 28 mins ago0x2f19f8716400269755a1e7f78f1390a3b7971ab9 IN  Medi Token: MEDI Token0 Ether0.0002668 5.72215003
0xe79d6f00eab54771497a85ff6ecdfe0e4e94d4eb6f24288f3590e1d71046a33fTransfer156043142022-09-24 16:07:596 days 6 hrs ago0x102a4732ce6af7784ee456c9350f7cd463b7b092 IN  Medi Token: MEDI Token0 Ether0.003029296.06606559
0x95c7a809b8575d630382bb077bd5e71c3a742175a5d1f90f7de8fb2f7b65c8e0Transfer156042722022-09-24 15:59:356 days 6 hrs ago0x5d4f0c8e4589e8a23e1d59768ba7eb9604faf121 IN  Medi Token: MEDI Token0 Ether0.00257604 5
0x82a02482448dddd5b10978c677f9de5d3ab0aa23aa86891b0fa29546037b99c9Approve156036252022-09-24 13:49:596 days 9 hrs ago0xef80eb26f8b310d4f441c594e2c78f7a6a784da3 IN  Medi Token: MEDI Token0 Ether0.00030699 6.58417312
0x0759ce09846961346c9af8f021de170aba4165535447251c0989e294dcf8acbcApprove156010562022-09-24 5:13:476 days 17 hrs ago0xcc6ca4db7eb39c80fd57985097678a1f8b73af19 IN  Medi Token: MEDI Token0 Ether0.00025638 5.49879622
0x7932ad34dac7b6b8a06a34269434e0a845bdfed869375dcb021e1be35a99cfa4Approve155886702022-09-22 11:45:598 days 11 hrs agoENS Name phalonlestercraigperry2067472338.eth IN  Medi Token: MEDI Token0 Ether0.00017868 3.83225943
0xa7bb78b128def46284fc7f321e6e8fbcb7ced354ef1fb35ee07c7ed30aaaadcfSet Taxes155410632022-09-15 19:07:1115 days 3 hrs agoMedi Token: Deployer IN  Medi Token: MEDI Token0 Ether0.00056014 14.11682919
0x1d6494133327221efaa86525e09f64a68e3f11b588b1b365274e7c407c71568dApprove155353612022-09-14 22:20:3616 days 30 mins ago0xe0c8b1c95c3d68c01efa757668a78d73c0f30c1d IN  Medi Token: MEDI Token0 Ether0.00052784 11.32083947
0xce78c8f8445258dc4d912b0a5b4ffb42d28884061b0e34beedc25c36de2d3e4fApprove155091002022-09-10 13:44:4720 days 9 hrs ago0xcbca9cdfe7e97c60e13446ef52bcdc32595e57da IN  Medi Token: MEDI Token0 Ether0.00045134 9.68004807
0x21efd349a6cac08bb6a2c08000be444140ad09510e4937b4f18501a43edf9c6bApprove154971002022-09-08 14:23:1422 days 8 hrs ago0x387a1fb981cc9184141be167387ad430b7d47978 IN  Medi Token: MEDI Token0 Ether0.00065398 14.02623641
0x9245d794a8fe4d3c80c2f42d085304101dcaba78d2728c80c468e25d689e0cd4Approve154935522022-09-08 0:56:1622 days 21 hrs ago0xcbca9cdfe7e97c60e13446ef52bcdc32595e57da IN  Medi Token: MEDI Token0 Ether0.00053362 11.4449009
0xfc2f1369eab7a29d4322e705d8a54585843c4daf0f7e8ff4cc5eb397e62a9783Approve154741762022-09-04 22:17:3626 days 33 mins ago0xa5b757831f55379e8bfa9fac0a1c76a0fc8b33f6 IN  Medi Token: MEDI Token0 Ether0.00055522 11.9079708
0xfb942d7597d3d8e2bd9ba13f02f456c3da6361185589a528ceeec5485646b73cTransfer154618502022-09-02 22:46:3128 days 4 mins ago0xc70bf0918d18979061be8b5d4a5408e1f37220c0 IN  Medi Token: MEDI Token0 Ether0.00604993 10.78478741
0x1506ae055dab0653015baaf16429ca621f39ba677d52bce67cbcf4951d3c050bApprove154600282022-09-02 15:43:0028 days 7 hrs ago0x5f6229402f0595e4b3590085d85abc9442195fda IN  Medi Token: MEDI Token0 Ether0.0004463 9.57211539
0xac2fd745d5b079f28119bdfbd3cdb230837a993ccd5bf14b0bd116e17ec5602eApprove154540602022-09-01 17:04:2429 days 5 hrs ago0x2924b904b76c37252bf3f5a81697c50a784297a8 IN  Medi Token: MEDI Token0 Ether0.00101335 21.7337849
0xde269d84f5c11e4c08fea2c63b4e4159bde93b304a10f0efb32831b7b9dd3e9cApprove154512902022-09-01 6:26:0429 days 16 hrs ago0x14d486776982a7bec8430fe168e7fd08d8263a5b IN  Medi Token: MEDI Token0 Ether0.00028071 10.50347524
[ Download CSV Export 

OVERVIEW

Medi Token, or $MEDI, is a token created to revolutionize the way you think about charity in the crypto space while providing utility to the world. We aim to do this through worldwide donations in the healthcare sector and beyond, while creating a robust crypto ecosystem for $MEDI.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x101ec45c33262acb854061c0a094ff1df2b1f9c43f247f3d9eb56a349c77474e156473622022-09-30 16:31:476 hrs 19 mins ago Medi Token: MEDI Token Uniswap V2: Router 20.0144001 Ether
0x101ec45c33262acb854061c0a094ff1df2b1f9c43f247f3d9eb56a349c77474e156473622022-09-30 16:31:476 hrs 19 mins ago Uniswap V2: Router 2 Medi Token: MEDI Token0.0144001 Ether
0x182a38ada343461b50f3268402e34c3e2c6b8bcbee840d208ad7c405bf204f79156460622022-09-30 12:09:5910 hrs 41 mins ago Medi Token: MEDI Token Uniswap V2: Router 20.02402343 Ether
0x182a38ada343461b50f3268402e34c3e2c6b8bcbee840d208ad7c405bf204f79156460622022-09-30 12:09:5910 hrs 41 mins ago Uniswap V2: Router 2 Medi Token: MEDI Token0.02402343 Ether
0xf7ffeaa1b52cb092c309ba9b826718e0a3edd366392001c0cf3e3396316e013f156264012022-09-27 18:12:473 days 4 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.02077198 Ether
0xf7ffeaa1b52cb092c309ba9b826718e0a3edd366392001c0cf3e3396316e013f156264012022-09-27 18:12:473 days 4 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.02077198 Ether
0xcf86787e647d00caa05cba4233535a5d903321711ec6921bb0b5186bbc3b762c156213982022-09-27 1:25:233 days 21 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.02053809 Ether
0xcf86787e647d00caa05cba4233535a5d903321711ec6921bb0b5186bbc3b762c156213982022-09-27 1:25:233 days 21 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.02053809 Ether
0xb85b9be6d155f0a9a2dc13fe6fb75f5aee17dc609ff912f8ed230bf259c7162a156061762022-09-24 22:23:116 days 27 mins ago Medi Token: MEDI Token Uniswap V2: Router 20.01526619 Ether
0xb85b9be6d155f0a9a2dc13fe6fb75f5aee17dc609ff912f8ed230bf259c7162a156061762022-09-24 22:23:116 days 27 mins ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01526619 Ether
0xe79d6f00eab54771497a85ff6ecdfe0e4e94d4eb6f24288f3590e1d71046a33f156043142022-09-24 16:07:596 days 6 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01530382 Ether
0xe79d6f00eab54771497a85ff6ecdfe0e4e94d4eb6f24288f3590e1d71046a33f156043142022-09-24 16:07:596 days 6 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01530382 Ether
0x95c7a809b8575d630382bb077bd5e71c3a742175a5d1f90f7de8fb2f7b65c8e0156042722022-09-24 15:59:356 days 6 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01534163 Ether
0x95c7a809b8575d630382bb077bd5e71c3a742175a5d1f90f7de8fb2f7b65c8e0156042722022-09-24 15:59:356 days 6 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01534163 Ether
0xb78ccda515594814e5406658c235e48abd0a32ad809694199cf503da069c04e7156039612022-09-24 14:57:116 days 7 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01540032 Ether
0xb78ccda515594814e5406658c235e48abd0a32ad809694199cf503da069c04e7156039612022-09-24 14:57:116 days 7 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01540032 Ether
0xb16d0bb8642f85a1a23fee8e5e967b438c1f56d3c2bc3de6fd9934fdedb519dd156036282022-09-24 13:50:356 days 9 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01593504 Ether
0xb16d0bb8642f85a1a23fee8e5e967b438c1f56d3c2bc3de6fd9934fdedb519dd156036282022-09-24 13:50:356 days 9 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01593504 Ether
0x78a22d4438cc3379ac35c12a29d60aabf7bc11f351786cc4d0fd66be4573bc8d156010772022-09-24 5:17:596 days 17 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01611629 Ether
0x78a22d4438cc3379ac35c12a29d60aabf7bc11f351786cc4d0fd66be4573bc8d156010772022-09-24 5:17:596 days 17 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01611629 Ether
0xa77d5b01230ebe3cf82086692fa50f067e20e4d715ad3ea892b750a5127c105a156010602022-09-24 5:14:356 days 17 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01270291 Ether
0xa77d5b01230ebe3cf82086692fa50f067e20e4d715ad3ea892b750a5127c105a156010602022-09-24 5:14:356 days 17 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01270291 Ether
0x5a13a92827e25f2b3daefab889e93822c5528e96d369f827bbaeb8406b3ded31156010602022-09-24 5:14:356 days 17 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01616786 Ether
0x5a13a92827e25f2b3daefab889e93822c5528e96d369f827bbaeb8406b3ded31156010602022-09-24 5:14:356 days 17 hrs ago Uniswap V2: Router 2 Medi Token: MEDI Token0.01616786 Ether
0x2506f1e691bfa596beaf9e9c595616220c13d71d117293b35f40bf5df6a08d9a155998602022-09-24 1:13:596 days 21 hrs ago Medi Token: MEDI Token Uniswap V2: Router 20.01273962 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MediTokenV2

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Audited
File 1 of 1 : MediTokenV2.sol
// SPDX-License-Identifier: NOLICENSE
                     
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&.(@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,@@@@@@@@@@@@%.&@@@[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@&**&@@@@@@@@@.*#@@#*,,*@,..,&@@@&,.&,...,./@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@((((((/**@@@.,*,***&,.,*(@&@%,,,***%@@@@@@@@@@@@,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@#*((((((((((((@.****@,,**@,,.******,,@(((((/*@....,*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@*#(((((((((((#%@*,*,,*@***@,,,**,,*****&#((((((((**@***@%***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@&#%(((((%%.,,**(,,,#***/,**,,*******@(((((((((((((*&@,,,....,**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@/@@@@@@@,..******,,,****,,*,,*@**/@*@#(((((((((((((((****@****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@,........,****%,,,*,,,,,,@*,,,,*/#((((((((((*******((/@**@@&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@#@(******@**@,/,*,,,&***(,,,**#(((((***%@@%######(@(,../@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@,,*@@#(*/(**%***/,/,@,/#&,,#,.,*#@%***%**/&****/&&%&***@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@,/&#******@*#,..............,,#,.,*#......../@(*******[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@,@@#&,****@*//,................,,,,*,,*#... ./((/,&*****(@@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@%***(*/@,..................,%.***,,*,%..#******,,@(**.**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@%*,,(*/@@@[email protected]@@@@@%&**##****,[email protected]********#,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@*.,#**#@/*@&,,,,,,...%@,,,/&@@/**[email protected],%@**#&@&&@@/****/#(,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@&*@&(###%@@@&#*,,@#@,...,#(/(**../.(/.,,,,*%@@@@**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@#####*. [email protected]%,......,@  ...  (.(,.,,,(#@ ...... #&@@@**@@@,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@###,,*,,@,........,&     /.      @......./&...,,@(@,.,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@%@@@&%(@*...............,.....................&*****&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@/****,,.................................#(****(*@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@&//,@@@@@#..........*&@@...........*@@/***&***/&@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&&&&%%&@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@(*(*/**,,,[email protected]&((,&@.......,.&*(#/********@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@(/&,....../@((( ./.......,,@***(.....**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@*#....,[email protected]&@,,,,,.,,,&(**(*......*@&///@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**,,@&(,,,,,*,,@#****(.....,*%#(((((%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@############@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&**,,**%@%&******.....,*&(((((((#,[email protected]@/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%&&&@@@@@@############@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&@@@@@@@@@%/****/@(,,,.,*&((((((((#@.. (@* @@@@@@@@@@@@@@@@@@@@@@@@@@@%#####################################&@@
// @@@@@@@@@@@@@@@@@@@@@@&..%@@@#@@@@@@@@@%%&*******,,,,*@/((((((((##*..&[email protected]@ * %@@@@@@@@@@@@@@@@@@@@@@@%#####################################@@@
// @@@@@@@@@@@@@@@@@@@*,&,,&#%@@*,@@@@@@@%@%%&***/&*,,##(//((#(((###&..,.. (@&   *  @@@@@@@@@@@@@@@@@@@@######################################@@@
// @@@@@@@@@@@@@@@@,.....&*&&&**@@@@&[email protected]@%%&%%&**,,,**@%%%@/####(#((&..&.   @@           @@@@@@@@@@@@@@@#####################################%@@@
// @@@@@@@@@@@@,.,%...&,,,&/**@@@,[email protected]@%%%&&%*******/%%%%%&/(##((((,../,   &@         /    %@@@@@@@@@@@@@@@@@@@@@@@@############@@@@@@@@@@@@@@@@
// @@@@@@@@@@,,,...%..,(/,(**@@.....(@@&%%%&&&********@%&&&&&./((((@.. %.   @@   ..        .%%#&@@@@@@@@@@@@@@@@@@@@@############@@@@@@@@@@@@@@@@
// @@@@@@@@@(.,@*(.,,%,.&.#*,*[email protected]@@@&&.#&&&#*******&&&&&&[email protected](....&.   @@ ...,     [email protected]        ,@@@@@@@@@@@@@@@@@&############@@@@@@@@@@@@@@@@
// @@@@@@@@@@..,***(#.&.%***/..,@@@  (@@@[email protected]&&&******%&&&&&&  [email protected]   [email protected]&..../  ..&           @@@@@@@@@@@@@@@@@&############@@@@@@@@@@@@@@@@
// @@@@@@@@@@(.************,%..(/@     @@[email protected]&&&/***(&&&&&#/.   ......*&,.   @@ [email protected] ...#            @@@@@@@@@@@@@@@@@%############@@@@@@@@@@@@@@@@
// @@@@@@@@@@@,***********(/   /@#    ,@&*%&&&&*&&&@%%#/(&   ....&*,.     ##@ ..& ..&..             @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@********&*#.     %     @(*%%%&&&&&&@(((((%    .........*%  &@  ..,..&..              /@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@*****@***..     .(     * @%(%&&&&&&&((((#@    [email protected] @@*  .&..,..    .           @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@********,&.*@@@@@@@@@@# %%((&&&&@@@@@@@@@@@@@@@@@@@@@@&, @@/   .&@@@@@@@@@@@@@@@@@@/  [email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@         @@*******.,@@(        @@ &(/(%&&@@                    @@*@@*    *@@                  /@@@@@@@@@@@@@@@@@@@         @@@@@@@@@@@@@@@@@
// @@.         @@(*****/@@          @@@((((&&&@@.                   ,@@./     ,@@                      [email protected]@@@@@@@@@@@@@@         @@@@@@@@@@@@@@@@@
// @@/          @@@***(@@           @@#(((#&&&@@/        @@@@&%#*.   @@&@&    [email protected]@        @@@@@#          ,@@@@@@@@@@@@@*        @@@@@@@@@@@@@@@@@
// @@#           *@@*@@@            @@%#((&&&&@@&        @@@@@@@@@@@@@  &@    /@@        @@    @@@         @@@@@@@@@@@@#        @@@@@@@@@@@@@@@@@
// @@&             @@@.            [email protected]@%%#%&&&&@@@                   @@  @(   [email protected]@        @@      @@,       &@@@@@@@@@@@&       ,@@@@@@@@@@@@@@@@@
// @@@[email protected] [email protected]@#((%&&&&&@@.................. @@ ##/  ..,@@....... @@      #@@.......*@@@@@@@@@@@&.......*@@@@@@@@@@@@@@@@@
// @@&[email protected]%@[email protected]@(((&&&&&@@@........&&&&&&&%/./@@@@    ./[email protected]@[email protected]@..    @@[email protected]@@@@@@@@@@@(.......,@@@@@@@@@@@@@@@@@
// @@([email protected]@/[email protected]@@[email protected]@%@(&&&&&@@([email protected]@@@@@@@@@@@@@    #.([email protected]@[email protected]@&&@@@@&........%@@@@@@@@@@@@,[email protected]@@@@@@@@@@@@@@@@
// @@,[email protected]@@@[email protected]@@&[email protected]@((%&&&&&@@,[email protected]@#  ..(,*@@[email protected]@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@
// @@[email protected]@@@@....,@@@@#[email protected]@((&&&&&&@@[email protected]@  ..#@%[email protected]@.....................,@@@@@@@@@@@@@@@@[email protected]@@@@@@@@@@@@@@@@
// @@.,,,,,,,@@/*@@,,,@@*@@#,,,,,,,,@@((@&&&&&@@.,,,,,,,,,,,,,,,,,,,(@@ .,,@%.*@@,,,,,,,,,,,,,,..(@@@@@@@@@@@@@@@@@@@@@.,,,,,,,[email protected]@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
// @@@            @@@@@@@@@@@@@@@          /@@@@@@@@@@@@@@@@    [email protected]@@@     @@@@@@@@@@@@@           @@@@@@@@@@@@@@     @@@@@#    @@@@@@@@@@@@@@@@@@
// @@@@@@(    @@@@@@@@@@@@@@@@@      %@(      @@@@@@@@@@@@@@    #@@@     @@@@@@@@@@@@@@    ,@@@@@@@@@@@@@@@@@@@@       @@@@    @@@@@@@@@@@@@@@@@@
// @@@@@@&    @@@@@@@@@@@@@@@@     @@@@@@@    /@@@@@@@@@@@@@           @@@@@@@@@@@@@@@@           @@@@@@@@@@@@@@         @@    @@@@@@@@@@@@@@@@@@
// @@@@@@%[email protected]@@@@@@@@@@@@@@@ ... @@@@@@@....(@@@@@@@@@@@@@.......... @@@@@@@@@@@@@@@@.....    . @@@@@@@@@@@@@@[email protected]@[email protected]@@@@@@@@@@@@@@@@@
// @@@@@@/[email protected]@@@@@@@@@@@@@@@@......*#,.....,@@@@@@@@@@@@@@..../@@.....%@@@@@@@@@@@@@@.....%@@&#//@@@@@@@@@@@@@[email protected]@@@[email protected]@@@@@@@@@@@@@@@@@
// @@@@@@,,,,,@@@@@@@@@@@@@@@@@@@/,,,,,,,,,&@@@@@@@@@@@@@@@@,,,,,@@@@,,,,[email protected]@@@@@@@@@@@@,,,,,,,,,,,&@@@@@@@@@@@@@,,,,@@@@@@.,,,,@@@@@@@@@@@@@@@@@@
// @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@


pragma solidity ^0.8.9;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract MediTokenV2 is Context, IERC20, Ownable {

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isBot;

    address[] private _excluded;
    
    bool public swapEnabled;
    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1000000000000000000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    
    uint256 public swapTokensAtAmount = 1000000 * 10**_decimals;
    uint256 public maxTxAmount = 2000000000000000 * 10**_decimals;

    bool private _isTradingState = true;
    
    // Anti Dump //
    mapping (address => uint256) public _lastTrade;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 69 seconds;

    address public constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public devAddress = 0xC56d6d2ae78102C9D7a72bCab720ca1CAe97b2cC;
    address public charityAddress = 0xb3AaE54BE35E8044c8044F5488aAF3861279328B;
    address public marketingAddress = 0x45b495b912c33db96D57B18FbB5f4A439573D770;

    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;  //uniswap v2

    string private constant _name = "Medi Token V2";
    string private constant _symbol = "MEDI";


    struct Taxes {
      uint256 rfi;
      uint256 burn;
      uint256 liquidity;
      uint256 charity;
      uint256 dev;
      uint256 marketing;   
    }

    Taxes public taxes = Taxes(1,1,1,3,3,2);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 burn;
        uint256 liquidity;
        uint256 charity;
        uint256 dev;
        uint256 marketing;
    }
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
        uint256 rAmount;
        uint256 rTransferAmount;
        uint256 rRfi;
        uint256 rBurn;
        uint256 rLiquidity;
        uint256 rCharity;
        uint256 rDev;
        uint256 rMarketing;
        uint256 tTransferAmount;
        uint256 tRfi;
        uint256 tBurn;
        uint256 tLiquidity;
        uint256 tCharity;
        uint256 tDev;
        uint256 tMarketing;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor () {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);
        excludeFromReward(deadAddress);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[charityAddress]=true;
        _isExcludedFromFee[devAddress]=true;
        _isExcludedFromFee[marketingAddress]=true;
        _isExcludedFromFee[deadAddress] = true;

        _isTradingState = true;
        swapEnabled = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        require(_isTradingState == true, "Trading is currently disabled.");
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function tradingEnabled() public view returns (bool) {
        return _isTradingState;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            return s.rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }


    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _charity, uint256 _dev, uint256 _marketing, uint256 _liquidity, uint256 _burn) public onlyOwner {
        taxes.rfi = _rfi;
        taxes.charity = _charity;
        taxes.dev = _dev;
        taxes.marketing = _marketing;
        taxes.liquidity = _liquidity;
        taxes.burn = _burn;
        emit FeesChanged();
    }


    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.dev +=tDev;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDev;
        }
        _rOwned[address(this)] +=rDev;
    }
    
    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }

    function _takeCharity(uint256 rCharity, uint256 tCharity) private {
        totFeesPaid.charity +=tCharity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tCharity;
        }
        _rOwned[address(this)] +=rCharity;
    }

    function _takeBurn(uint256 rBurn, uint256 tBurn) private{
        totFeesPaid.burn +=tBurn;

        if(_isExcluded[deadAddress])
        {
            _tOwned[deadAddress]+=tBurn;
        }
        _rOwned[deadAddress] +=rBurn;
    }

    function _getValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rCharity, to_return.rDev, to_return.rMarketing, to_return.rLiquidity, to_return.rBurn) = _getRValues(to_return, tAmount, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        
        s.tRfi = tAmount*taxes.rfi/100;
        s.tCharity = tAmount*taxes.charity/100;
        s.tDev = tAmount*taxes.dev/100;
        s.tMarketing = tAmount*taxes.marketing/100;
        s.tLiquidity = tAmount*taxes.liquidity/100;
        s.tBurn = tAmount*taxes.burn/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tCharity-s.tDev-s.tMarketing-s.tLiquidity-s.tBurn;
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rCharity, uint256 rDev, uint256 rMarketing, uint256 rLiquidity, uint256 rBurn) {
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0,0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rCharity = s.tCharity*currentRate;
        rDev = s.tDev*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rBurn = s.rBurn*currentRate;
        rTransferAmount =  rAmount-rRfi-rCharity-rDev-rMarketing-rLiquidity-rBurn;
        return (rAmount, rTransferAmount, rRfi, rCharity, rDev, rMarketing, rLiquidity, rBurn);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }


    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBot[from] && !_isBot[to], "You are a bot");
        

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxTxAmount ,"Amount is exceeding maxTxAmount");

            if(from != pair && coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastTrade[from];
                require(timePassed > coolDownTime, "You must wait coolDownTime");
                _lastTrade[from] = block.timestamp;
            }
            if(to != pair && coolDownEnabled){
                uint256 timePassed2 = block.timestamp - _lastTrade[to];
                require(timePassed2 > coolDownTime, "You must wait coolDownTime");
                _lastTrade[to] = block.timestamp;
            }
        }
        
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            swapAndLiquify(swapTokensAtAmount);
        }

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]));
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        _reflectRfi(s.rRfi, s.tRfi);
        _takeLiquidity(s.rLiquidity,s.tLiquidity);
        _takeDev(s.rDev, s.tDev);
        _takeMarketing(s.rMarketing, s.tMarketing);
        _takeCharity(s.rCharity, s.tCharity);
        _takeBurn(s.rBurn, s.tBurn);

        emit Transfer(sender, deadAddress, s.tBurn);
        emit Transfer(sender, recipient, s.tTransferAmount);
        emit Transfer(sender, address(this), s.tLiquidity + s.tCharity + s.tDev + s.tMarketing);
        
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap{
       // Split the contract balance into halves
        uint256 denominator = (taxes.liquidity + taxes.dev + taxes.charity + taxes.marketing ) * 2;
        uint256 tokensToAddLiquidityWith = tokens * taxes.liquidity / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForETH(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - taxes.liquidity);
        uint256 ethToAddLiquidityWith = unitBalance * taxes.liquidity;

        if(ethToAddLiquidityWith > 0){
            // Add liquidity to uniswap
            addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
        }

        uint256 devAmt = unitBalance * 2 * taxes.charity;
        if(devAmt > 0){
            payable(devAddress).transfer(devAmt);
        }

        uint256 charityAmt = unitBalance * 2 * taxes.dev;
        if(charityAmt > 0){
            payable(charityAddress).transfer(charityAmt);
        }

        uint256 marketingAmt = unitBalance * 2 * taxes.marketing;
        if(marketingAmt > 0){
            payable(marketingAddress).transfer(marketingAmt);
        }

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function updatedevWallet(address newWallet) external onlyOwner{
        require(devAddress != newWallet ,'Wallet already set');
        devAddress = newWallet;
        _isExcludedFromFee[devAddress];
    }

    function updatecharityWallet(address newWallet) external onlyOwner{
        require(charityAddress != newWallet ,'Wallet already set');
        charityAddress = newWallet;
        _isExcludedFromFee[charityAddress];
    }

    function updatemarketingWallet(address newWallet) external onlyOwner{
        require(marketingAddress != newWallet ,'Wallet already set');
        marketingAddress = newWallet;
        _isExcludedFromFee[marketingAddress];
    }

    function updatMaxTxAmt(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10 **_decimals;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10 **_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }

    function updateCoolDownSettings(bool _enabled, uint256 _timeInSeconds) external onlyOwner{
        coolDownEnabled = _enabled;
        coolDownTime = _timeInSeconds * 1 seconds;
    }

    function setAntibot(address account, bool state) external onlyOwner{
        require(_isBot[account] != state, 'Value already set');
        _isBot[account] = state;
    }
    
    function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isBot[accounts[i]] = state;
        }
    }
    
    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    function isBot(address account) public view returns(bool){
        return _isBot[account];
    }
    

    //Use this in case ETH are sent to the contract by mistake
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }
    
    // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake)
    // Owner cannot transfer out cakecoin from this smart contract
    function rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    function setTradingState(bool _state) external onlyOwner{
        _isTradingState = _state;
    }

    receive() external payable{
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "berlin",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_charity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"setTradingState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"charity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updatMaxTxAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_timeInSeconds","type":"uint256"}],"name":"updateCoolDownSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatecharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatemarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000a54565b6200002690670de0b6b3a764000062000a65565b600a819055620000399060001962000a9d565b620000479060001962000ab4565b600b55620000586009600a62000a54565b6200006790620f424062000a65565b600c55620000786009600a62000a54565b6200008b9066071afd498d000062000a65565b600d55600e805460ff19908116600190811790925560108054909116821790556045601155601280546001600160a01b031990811673c56d6d2ae78102c9d7a72bcab720ca1cae97b2cc1790915560138054821673b3aae54be35e8044c8044f5488aaf3861279328b1790556014805482167345b495b912c33db96d57b18fbb5f4a439573d77017905560158054909116737a250d5630b4cf539739df2c5dacb4c659f2488d1790556040805160c0810182528281526020810183905290810182905260036060820181905260808201819052600260a0909201829052601683905560178390556018929092556019829055601a91909155601b553480156200019357600080fd5b506200019f3362000506565b6015546040805163c45a015560e01b815290516001600160a01b0390921691600091839163c45a015591600480820192602092909190829003018186803b158015620001ea57600080fd5b505afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000ace565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026e57600080fd5b505afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000ace565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002f257600080fd5b505af115801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000ace565b600880546001600160a01b03808616620100000262010000600160b01b031990921691909117909155600980549183166001600160a01b0319909216821790559091506200037b9062000556565b6200038861dead62000556565b600b5460016000620003a26000546001600160a01b031690565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160046000620003dc620006e460201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260049093528183208054851660019081179091556013548216845282842080548616821790556012548216845282842080548616821790556014549091168352908220805484168217905561dead9091527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd8054831682179055600e805483168217905560088054909216179055620004ae6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620004f691815260200190565b60405180910390a3505062000b44565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005b65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620006215760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620005ad565b6001600160a01b038116600090815260016020526040902054156200067e576001600160a01b0381166000908152600160205260409020546200066490620006f3565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031690565b6000600b548211156200075c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005ad565b6000620007686200077d565b905062000776818462000af9565b9392505050565b600080806200078b620007a3565b90925090506200079c818362000af9565b9250505090565b600b54600a546000918291825b6007548110156200090b57826001600060078481548110620007d657620007d662000b10565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806200084557508160026000600784815481106200081e576200081e62000b10565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156200085c57600b54600a54945094505050509091565b600160006007838154811062000876576200087662000b10565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008a7908462000ab4565b92506002600060078381548110620008c357620008c362000b10565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008f4908362000ab4565b915080620009028162000b26565b915050620007b0565b50600a54600b546200091e919062000af9565b8210156200093657600b54600a549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620009965781600019048211156200097a576200097a6200093f565b808516156200098857918102915b93841c93908002906200095a565b509250929050565b600082620009af5750600162000a4e565b81620009be5750600062000a4e565b8160018114620009d75760028114620009e25762000a02565b600191505062000a4e565b60ff841115620009f657620009f66200093f565b50506001821b62000a4e565b5060208310610133831016604e8410600b841016171562000a27575081810a62000a4e565b62000a33838362000955565b806000190482111562000a4a5762000a4a6200093f565b0290505b92915050565b60006200077660ff8416836200099e565b600081600019048311821515161562000a825762000a826200093f565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000aaf5762000aaf62000a87565b500690565b60008282101562000ac95762000ac96200093f565b500390565b60006020828403121562000ae157600080fd5b81516001600160a01b03811681146200077657600080fd5b60008262000b0b5762000b0b62000a87565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141562000b3d5762000b3d6200093f565b5060010190565b6133748062000b546000396000f3fe6080604052600436106103035760003560e01c80638c0b5e2211610190578063bff78169116100dc578063e2f4560511610095578063f2fde38b1161006f578063f2fde38b146109e1578063f887ea4014610a01578063f965aa1d14610a27578063fc17044114610a4757600080fd5b8063e2f4560514610991578063ea2f0b37146109a7578063ee36e359146109c757600080fd5b8063bff78169146108b5578063d257b34f146108d5578063d2ce0db2146108f5578063d5ccb8ee1461090b578063dd62ed3e1461092b578063e11655451461097157600080fd5b8063a457c2d711610149578063a8aa1b3111610123578063a8aa1b3114610835578063a9059cbb14610855578063afcf2fc414610875578063b31470a41461089557600080fd5b8063a457c2d7146107c8578063a5ece941146107e8578063a87859f61461080857600080fd5b80638c0b5e22146106fc5780638da5cb5b14610712578063924de9b71461073057806395d89b41146107505780639ba5e4d51461077d5780639e252f00146107a857600080fd5b806340b28c2f1161024f5780635342acb411610208578063715018a6116101e2578063715018a614610636578063728f8eea1461064b57806388f82020146106a35780638c0ae3df146106dc57600080fd5b80635342acb4146105c35780636ddd1713146105fc57806370a082311461061657600080fd5b806340b28c2f1461050b578063437823ec1461052b5780634549b0391461054b57806349244cb01461056b5780634ada218b1461058b57806352390c02146105a357600080fd5b806327c8f835116102bc5780633685d419116102965780633685d4191461047257806339509351146104925780633ad10ef6146104b25780633bbac579146104d257600080fd5b806327c8f835146104085780632d83811914610436578063313ce5671461045657600080fd5b806304d4c9901461030f57806306fdde0314610331578063095ea7b3146103795780630d65df9b146103a957806318160ddd146103c957806323b872dd146103e857600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032f61032a366004612d17565b610a67565b005b34801561033d57600080fd5b5060408051808201909152600d81526c26b2b234902a37b5b2b7102b1960991b60208201525b6040516103709190612d5a565b60405180910390f35b34801561038557600080fd5b50610399610394366004612dd4565b610ae9565b6040519015158152602001610370565b3480156103b557600080fd5b5061032f6103c4366004612e00565b610b00565b3480156103d557600080fd5b50600a545b604051908152602001610370565b3480156103f457600080fd5b50610399610403366004612e00565b610bb2565b34801561041457600080fd5b5061041e61dead81565b6040516001600160a01b039091168152602001610370565b34801561044257600080fd5b506103da610451366004612e41565b610c63565b34801561046257600080fd5b5060405160098152602001610370565b34801561047e57600080fd5b5061032f61048d366004612e5a565b610ce7565b34801561049e57600080fd5b506103996104ad366004612dd4565b610e9e565b3480156104be57600080fd5b5060125461041e906001600160a01b031681565b3480156104de57600080fd5b506103996104ed366004612e5a565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561051757600080fd5b5061032f610526366004612e77565b610ed5565b34801561053757600080fd5b5061032f610546366004612e5a565b610f39565b34801561055757600080fd5b506103da610566366004612ec9565b610f87565b34801561057757600080fd5b5061032f610586366004612e5a565b611011565b34801561059757600080fd5b50600e5460ff16610399565b3480156105af57600080fd5b5061032f6105be366004612e5a565b611092565b3480156105cf57600080fd5b506103996105de366004612e5a565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561060857600080fd5b506008546103999060ff1681565b34801561062257600080fd5b506103da610631366004612e5a565b6111e5565b34801561064257600080fd5b5061032f611244565b34801561065757600080fd5b50601654601754601854601954601a54601b5461067695949392919086565b604080519687526020870195909552938501929092526060840152608083015260a082015260c001610370565b3480156106af57600080fd5b506103996106be366004612e5a565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156106e857600080fd5b5061032f6106f7366004612eee565b61127a565b34801561070857600080fd5b506103da600d5481565b34801561071e57600080fd5b506000546001600160a01b031661041e565b34801561073c57600080fd5b5061032f61074b366004612f0c565b6112c4565b34801561075c57600080fd5b506040805180820190915260048152634d45444960e01b6020820152610363565b34801561078957600080fd5b50601c54601d54601e54601f5460205460215461067695949392919086565b3480156107b457600080fd5b5061032f6107c3366004612e41565b611301565b3480156107d457600080fd5b506103996107e3366004612dd4565b6113a8565b3480156107f457600080fd5b5060145461041e906001600160a01b031681565b34801561081457600080fd5b506103da610823366004612e5a565b600f6020526000908152604090205481565b34801561084157600080fd5b5060095461041e906001600160a01b031681565b34801561086157600080fd5b50610399610870366004612dd4565b611443565b34801561088157600080fd5b5060135461041e906001600160a01b031681565b3480156108a157600080fd5b5061032f6108b0366004612f3f565b6114a8565b3480156108c157600080fd5b5061032f6108d0366004612e5a565b61153e565b3480156108e157600080fd5b5061032f6108f0366004612e41565b6115bf565b34801561090157600080fd5b506103da60115481565b34801561091757600080fd5b5061032f610926366004612f0c565b611605565b34801561093757600080fd5b506103da610946366004612e77565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561097d57600080fd5b5061032f61098c366004613016565b611642565b34801561099d57600080fd5b506103da600c5481565b3480156109b357600080fd5b5061032f6109c2366004612e5a565b6116fa565b3480156109d357600080fd5b506010546103999060ff1681565b3480156109ed57600080fd5b5061032f6109fc366004612e5a565b611745565b348015610a0d57600080fd5b5060085461041e906201000090046001600160a01b031681565b348015610a3357600080fd5b5061032f610a42366004612e41565b6117e0565b348015610a5357600080fd5b5061032f610a62366004612e5a565b611826565b6000546001600160a01b03163314610a9a5760405162461bcd60e51b8152600401610a9190613044565b60405180910390fd5b60168690556019859055601a849055601b839055601882905560178190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050505050565b6000610af63384846118a7565b5060015b92915050565b6000546001600160a01b03163314610b2a5760405162461bcd60e51b8152600401610a9190613044565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b158015610b7457600080fd5b505af1158015610b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac9190613079565b50505050565b6000610bbf8484846119cb565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610c445760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610a91565b610c588533610c5386856130ac565b6118a7565b506001949350505050565b6000600b54821115610cca5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610a91565b6000610cd4611ef9565b9050610ce081846130c3565b9392505050565b6000546001600160a01b03163314610d115760405162461bcd60e51b8152600401610a9190613044565b6001600160a01b03811660009081526005602052604090205460ff16610d795760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610a91565b60005b600754811015610e9a57816001600160a01b031660078281548110610da357610da36130e5565b6000918252602090912001546001600160a01b03161415610e885760078054610dce906001906130ac565b81548110610dde57610dde6130e5565b600091825260209091200154600780546001600160a01b039092169183908110610e0a57610e0a6130e5565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610e6257610e626130fb565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610e9281613111565b915050610d7c565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610af6918590610c5390869061312c565b6000546001600160a01b03163314610eff5760405162461bcd60e51b8152600401610a9190613044565b6008805462010000600160b01b031916620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b03163314610f635760405162461bcd60e51b8152600401610a9190613044565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a54831115610fdb5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610a91565b81610ff7576000610fed846001611f1c565b519150610afa9050565b6000611004846001611f1c565b602001519150610afa9050565b6000546001600160a01b0316331461103b5760405162461bcd60e51b8152600401610a9190613044565b6013546001600160a01b03828116911614156110695760405162461bcd60e51b8152600401610a9190613144565b601380546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146110bc5760405162461bcd60e51b8152600401610a9190613044565b6001600160a01b03811660009081526005602052604090205460ff16156111255760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610a91565b6001600160a01b0381166000908152600160205260409020541561117f576001600160a01b03811660009081526001602052604090205461116590610c63565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6001600160a01b03811660009081526005602052604081205460ff161561122257506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610afa90610c63565b6000546001600160a01b0316331461126e5760405162461bcd60e51b8152600401610a9190613044565b6112786000611f6e565b565b6000546001600160a01b031633146112a45760405162461bcd60e51b8152600401610a9190613044565b6010805460ff19168315151790556112bd816001613170565b6011555050565b6000546001600160a01b031633146112ee5760405162461bcd60e51b8152600401610a9190613044565b6008805460ff1916911515919091179055565b6000546001600160a01b0316331461132b5760405162461bcd60e51b8152600401610a9190613044565b8047101561137b5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610a91565b604051339082156108fc029083906000818181858888f19350505050158015610e9a573d6000803e3d6000fd5b3360009081526003602090815260408083206001600160a01b03861684529091528120548281101561142a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a91565b6114393385610c5386856130ac565b5060019392505050565b600e5460009060ff16151560011461149d5760405162461bcd60e51b815260206004820152601e60248201527f54726164696e672069732063757272656e746c792064697361626c65642e00006044820152606401610a91565b610af63384846119cb565b6000546001600160a01b031633146114d25760405162461bcd60e51b8152600401610a9190613044565b60005b82518110156115395781600660008584815181106114f5576114f56130e5565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061153181613111565b9150506114d5565b505050565b6000546001600160a01b031633146115685760405162461bcd60e51b8152600401610a9190613044565b6014546001600160a01b03828116911614156115965760405162461bcd60e51b8152600401610a9190613144565b601480546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b031633146115e95760405162461bcd60e51b8152600401610a9190613044565b6115f56009600a613273565b6115ff9082613170565b600c5550565b6000546001600160a01b0316331461162f5760405162461bcd60e51b8152600401610a9190613044565b600e805460ff1916911515919091179055565b6000546001600160a01b0316331461166c5760405162461bcd60e51b8152600401610a9190613044565b6001600160a01b03821660009081526006602052604090205460ff16151581151514156116cf5760405162461bcd60e51b815260206004820152601160248201527015985b1d5948185b1c9958591e481cd95d607a1b6044820152606401610a91565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117245760405162461bcd60e51b8152600401610a9190613044565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b0316331461176f5760405162461bcd60e51b8152600401610a9190613044565b6001600160a01b0381166117d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a91565b6117dd81611f6e565b50565b6000546001600160a01b0316331461180a5760405162461bcd60e51b8152600401610a9190613044565b6118166009600a613273565b6118209082613170565b600d5550565b6000546001600160a01b031633146118505760405162461bcd60e51b8152600401610a9190613044565b6012546001600160a01b038281169116141561187e5760405162461bcd60e51b8152600401610a9190613144565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6001600160a01b0383166119095760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a91565b6001600160a01b03821661196a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a91565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611a2f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a91565b6001600160a01b038216611a915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a91565b60008111611af35760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a91565b611afc836111e5565b811115611b655760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610a91565b6001600160a01b03831660009081526006602052604090205460ff16158015611ba757506001600160a01b03821660009081526006602052604090205460ff16155b611be35760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610a91565b6001600160a01b03831660009081526004602052604090205460ff16158015611c2557506001600160a01b03821660009081526004602052604090205460ff16155b8015611c395750600854610100900460ff16155b15611e0057600d54811115611c905760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e7420697320657863656564696e67206d61785478416d6f756e74006044820152606401610a91565b6009546001600160a01b03848116911614801590611cb0575060105460ff165b15611d48576001600160a01b0383166000908152600f6020526040812054611cd890426130ac565b90506011548111611d2b5760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610a91565b506001600160a01b0383166000908152600f602052604090204290555b6009546001600160a01b03838116911614801590611d68575060105460ff165b15611e00576001600160a01b0382166000908152600f6020526040812054611d9090426130ac565b90506011548111611de35760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610a91565b506001600160a01b0382166000908152600f602052604090204290555b6000600c54611e0e306111e5565b6008549111159150610100900460ff16158015611e2d575060085460ff165b8015611e365750805b8015611e5057506009546001600160a01b03858116911614155b8015611e7557506001600160a01b03841660009081526004602052604090205460ff16155b8015611e9a57506001600160a01b03831660009081526004602052604090205460ff16155b15611eaa57611eaa600c54611fbe565b6001600160a01b038416600090815260046020526040902054610bac9085908590859060ff1680611ef357506001600160a01b03871660009081526004602052604090205460ff165b156121c3565b6000806000611f066124aa565b9092509050611f1581836130c3565b9250505090565b611f24612ca1565b611f2e838361262d565b9050611f43818484611f3e611ef9565b61276f565b6060890152608088015260e087015260c086015260a085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff001916610100179055601b54601954601a546018546000939291611fe79161312c565b611ff1919061312c565b611ffb919061312c565b612006906002613170565b90506000816016600201548461201c9190613170565b61202691906130c3565b9050600061203482856130ac565b90504761204082612867565b600061204c82476130ac565b60185490915060009061205f90876130ac565b61206990836130c3565b60185490915060009061207c9083613170565b9050801561208e5761208e86826129f5565b60195460009061209f846002613170565b6120a99190613170565b905080156120ed576012546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156120eb573d6000803e3d6000fd5b505b601a546000906120fe856002613170565b6121089190613170565b9050801561214c576013546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561214a573d6000803e3d6000fd5b505b601b5460009061215d866002613170565b6121679190613170565b905080156121ab576014546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121a9573d6000803e3d6000fd5b505b50506008805461ff0019169055505050505050505050565b60006121cf8383611f1c565b6001600160a01b03861660009081526005602052604090205490915060ff1615612231576001600160a01b0385166000908152600260205260409020546122179084906130ac565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff1615612295576101008101516001600160a01b03851660009081526002602052604090205461227b919061312c565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546122ba91906130ac565b6001600160a01b03808716600090815260016020908152604080832094909455840151918716815291909120546122f1919061312c565b6001600160a01b03851660009081526001602052604090819020919091558101516101208201516123229190612ae6565b6123358160800151826101600151612b1b565b6123488160c00151826101a00151612b91565b61235b8160e00151826101c00151612ba6565b61236e8160a00151826101800151612bbb565b6123818160600151826101400151612bd0565b61dead6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8361014001516040516123cd91815260200190565b60405180910390a3836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83610100015160405161241f91815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101c00151846101a0015185610180015186610160015161247e919061312c565b612488919061312c565b612492919061312c565b60405190815260200160405180910390a35050505050565b600b54600a546000918291825b6007548110156125fc578260016000600784815481106124d9576124d96130e5565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612544575081600260006007848154811061251d5761251d6130e5565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561255a57600b54600a54945094505050509091565b6001600060078381548110612571576125716130e5565b60009182526020808320909101546001600160a01b031683528201929092526040019020546125a090846130ac565b925060026000600783815481106125b9576125b96130e5565b60009182526020808320909101546001600160a01b031683528201929092526040019020546125e890836130ac565b9150806125f481613111565b9150506124b7565b50600a54600b5461260d91906130c3565b82101561262457600b54600a549350935050509091565b90939092509050565b612635612ca1565b81612647576101008101839052610afa565b6016546064906126579085613170565b61266191906130c3565b6101208201526019546064906126779085613170565b61268191906130c3565b610180820152601a546064906126979085613170565b6126a191906130c3565b6101a0820152601b546064906126b79085613170565b6126c191906130c3565b6101c08201526018546064906126d79085613170565b6126e191906130c3565b6101608201526017546064906126f79085613170565b61270191906130c3565b61014082018190526101608201516101c08301516101a084015161018085015161012086015161273190896130ac565b61273b91906130ac565b61274591906130ac565b61274f91906130ac565b61275991906130ac565b61276391906130ac565b61010082015292915050565b600080808080808080612782898c613170565b9750896127a357508695506000945084935083925082915081905080612858565b888c61012001516127b49190613170565b9550888c61018001516127c79190613170565b9450888c6101a001516127da9190613170565b9350888c6101c001516127ed9190613170565b9250888c61016001516128009190613170565b9150888c606001516128129190613170565b905080828486886128238b8e6130ac565b61282d91906130ac565b61283791906130ac565b61284191906130ac565b61284b91906130ac565b61285591906130ac565b96505b94995094995094999196509450565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061289c5761289c6130e5565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561290a57600080fd5b505afa15801561291e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129429190613282565b81600181518110612955576129556130e5565b6001600160a01b03928316602091820292909201015260085461298191309162010000900416846118a7565b60085460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906129bf90859060009086903090429060040161329f565b600060405180830381600087803b1580156129d957600080fd5b505af11580156129ed573d6000803e3d6000fd5b505050505050565b600854612a139030906201000090046001600160a01b0316846118a7565b6008546001600160a01b03620100009091041663f305d719823085600080612a436000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015612aa657600080fd5b505af1158015612aba573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612adf9190613310565b5050505050565b81600b6000828254612af891906130ac565b9091555050601c8054829190600090612b1290849061312c565b90915550505050565b80601c6002016000828254612b30919061312c565b90915550503060009081526005602052604090205460ff1615612b72573060009081526002602052604081208054839290612b6c90849061312c565b90915550505b3060009081526001602052604081208054849290612b1290849061312c565b80601c6004016000828254612b30919061312c565b80601c6005016000828254612b30919061312c565b80601c6003016000828254612b30919061312c565b80601c6001016000828254612be5919061312c565b909155505061dead60005260056020527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460ff1615612c635761dead600090815260026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc8054839290612c5d90849061312c565b90915550505b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054849290612b1290849061312c565b604051806101e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008060008060008060c08789031215612d3057600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600060208083528351808285015260005b81811015612d8757858101830151858201604001528201612d6b565b81811115612d99576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146117dd57600080fd5b8035612dcf81612daf565b919050565b60008060408385031215612de757600080fd5b8235612df281612daf565b946020939093013593505050565b600080600060608486031215612e1557600080fd5b8335612e2081612daf565b92506020840135612e3081612daf565b929592945050506040919091013590565b600060208284031215612e5357600080fd5b5035919050565b600060208284031215612e6c57600080fd5b8135610ce081612daf565b60008060408385031215612e8a57600080fd5b8235612e9581612daf565b91506020830135612ea581612daf565b809150509250929050565b80151581146117dd57600080fd5b8035612dcf81612eb0565b60008060408385031215612edc57600080fd5b823591506020830135612ea581612eb0565b60008060408385031215612f0157600080fd5b8235612df281612eb0565b600060208284031215612f1e57600080fd5b8135610ce081612eb0565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612f5257600080fd5b823567ffffffffffffffff80821115612f6a57600080fd5b818501915085601f830112612f7e57600080fd5b8135602082821115612f9257612f92612f29565b8160051b604051601f19603f83011681018181108682111715612fb757612fb7612f29565b604052928352818301935084810182019289841115612fd557600080fd5b948201945b83861015612ffa57612feb86612dc4565b85529482019493820193612fda565b96506130099050878201612ebe565b9450505050509250929050565b6000806040838503121561302957600080fd5b823561303481612daf565b91506020830135612ea581612eb0565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561308b57600080fd5b8151610ce081612eb0565b634e487b7160e01b600052601160045260246000fd5b6000828210156130be576130be613096565b500390565b6000826130e057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060001982141561312557613125613096565b5060010190565b6000821982111561313f5761313f613096565b500190565b60208082526012908201527115d85b1b195d08185b1c9958591e481cd95d60721b604082015260600190565b600081600019048311821515161561318a5761318a613096565b500290565b600181815b808511156131ca5781600019048211156131b0576131b0613096565b808516156131bd57918102915b93841c9390800290613194565b509250929050565b6000826131e157506001610afa565b816131ee57506000610afa565b8160018114613204576002811461320e5761322a565b6001915050610afa565b60ff84111561321f5761321f613096565b50506001821b610afa565b5060208310610133831016604e8410600b841016171561324d575081810a610afa565b613257838361318f565b806000190482111561326b5761326b613096565b029392505050565b6000610ce060ff8416836131d2565b60006020828403121561329457600080fd5b8151610ce081612daf565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132ef5784516001600160a01b0316835293830193918301916001016132ca565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561332557600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220460f4278c074493a99e2d3383abf1beb5fa1cdd1d0d21d8ca5aa0080df4fb5cd64736f6c63430008090033

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.