Contract 0x52345867fb6d79247a91cda18d46f10b5597fc82

 

Contract Overview

Ape Troop: TROOP Token
Balance:
0.606469110154337447 BNB

BNB Value:
$285.03 (@ $469.99/BNB)
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x08af30837efd68fa3d5b16476e835986bb23eba75d5d0869e42171748f4c74a8Approve117978942021-10-15 15:57:322 days 13 hrs ago0x16688c5320d69d3a64ca92d9422c93736770c4ba IN  Ape Troop: TROOP Token0 BNB0.0001606275
0x46937afa985a2d5e75b515bdac578b49c668ed1323eaf16175d042113e15ca70Approve117780682021-10-14 23:23:423 days 5 hrs ago0x194e9ef98ea15cc39547af183b27e4405cc2a7a5 IN  Ape Troop: TROOP Token0 BNB0.000222525
0x7f539444fb2025a16e3e827f937d46e4ef56b072dbc458369647d1fcd70420c8Approve114936482021-10-05 0:40:3413 days 4 hrs ago0xb578089b6590097c678579a978f8c59a8ad221cf IN  Ape Troop: TROOP Token0 BNB0.000222525
0x813283d7d16ef1d6056e86a5123f2ad9630c737eb3ef54ba061885ffa1131f55Transfer114836772021-10-04 16:21:1713 days 13 hrs ago0x6912b36c15c224a0d2bd6b5eca7f45110ce58dca IN  Ape Troop: TROOP Token0 BNB0.00448976
0x643ac31e3a69aa1e9945c6d2c8d4c9fd1e7fa7c5f0a3bdedf6988bcac9c723ccTransfer114834232021-10-04 16:08:3513 days 13 hrs ago0x5b9e8c4a018266dfa13abc406e092fc6ded7a2e7 IN  Ape Troop: TROOP Token0 BNB0.0045647
0x593a386ece31078303c37f520c7921c068ff6c88ff3594113aca6b9710e84137Approve114354942021-10-03 0:03:5715 days 5 hrs ago0xbe78501c57827fa1e125ccb3e3f341e03983605b IN  Ape Troop: TROOP Token0 BNB0.000101927
0x4e13486698dd0763e5b584f6a36e0bf4b280b4803b9af63a2c7ba665a22f7f5aApprove114205532021-10-02 11:26:5015 days 17 hrs ago0x16688c5320d69d3a64ca92d9422c93736770c4ba IN  Ape Troop: TROOP Token0 BNB0.000222525
0x9346f9efd1e2d1e619b1c2a9218d88ca3b22978c10997b860bcab733390a2452Transfer114145222021-10-02 6:23:0915 days 22 hrs ago0xc3c9f93bd1f0d9545000cbac88bcc7a131634fc5 IN  Ape Troop: TROOP Token0 BNB0.0044897
0x502a97cf79d1ce41da23000f9d61efbcfb73a838ef5bffff6b9868ea4ca4e702Approve114112202021-10-02 3:37:3516 days 1 hr ago0x67ef1610762cb9d725e80c81acfed2c8f3bda38e IN  Ape Troop: TROOP Token0 BNB0.000222525
0x8093a5bb76f5c2d498a986459ec0b7b6b5054032826c7bba8259cd6f4b48a15cTransfer114084712021-10-02 1:17:4716 days 4 hrs ago0xc3c9f93bd1f0d9545000cbac88bcc7a131634fc5 IN  Ape Troop: TROOP Token0 BNB0.00456465
0x8cd85c41474dba7f10205fc0e998d188f8c5741497acab8ef7cd95d4fbdf093fApprove112397782021-09-26 3:13:1622 days 2 hrs ago0xc3c9f93bd1f0d9545000cbac88bcc7a131634fc5 IN  Ape Troop: TROOP Token0 BNB0.000222525
0x1035846ec619793f34f471b691969bf35ad07ad82f66a3dd50876aef445506cdApprove112395922021-09-26 3:03:1022 days 2 hrs ago0xc3c9f93bd1f0d9545000cbac88bcc7a131634fc5 IN  Ape Troop: TROOP Token0 BNB0.000222525
0x0b9f0bd27172c49de6abd83485b44f336b661987a342d49fe06289f09418f6bfApprove111058672021-09-21 10:56:4726 days 18 hrs ago0xecb4b5661bbb6c236e182da3bc11d923b5ec3104 IN  Ape Troop: TROOP Token0 BNB0.000222525
0x6692945d82b5f4e144d90e45e157c17fa3fd6a58909ea9e5520e780e8359f933Approve110418312021-09-19 5:15:5829 days 7 mins ago0xccaf18b99bc4de0a3406a87361d7cf00133c6d8d IN  Ape Troop: TROOP Token0 BNB0.000265014
0x0953736b5dd22f94d1cd8d9fab6b24799b9821b6c901cadaaa694aa33d1d2327Approve109177522021-09-14 21:35:2633 days 7 hrs ago0x027e6e6f49ba4f77d3e1b7179742b1d62529e703 IN  Ape Troop: TROOP Token0 BNB0.000222525
0xb922da6f838867cece945aec434d04b8169ea040b18e0c55f87dfcd01799f2a2Approve109067312021-09-14 12:22:2933 days 17 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  Ape Troop: TROOP Token0 BNB0.000125025
0xca7dca9064bb96b991af00094c7fc47478a445c601decb365922e12d7710a3cdApprove109067272021-09-14 12:22:1733 days 17 hrs ago0x8cc7bc33f5188b1fb683bedc4dbffa77b136833b IN  Ape Troop: TROOP Token0 BNB0.000221025
0x53c8f9a3d736fd2a1ad18609d04864bb228e66d448024b45a4cd808225afe51bApprove108775712021-09-13 12:00:4234 days 17 hrs ago0x08d3026e6b1d4feb1c63bfb6dc4c59b6aa4696a2 IN  Ape Troop: TROOP Token0 BNB0.000222525
0x36b7f9261130c3aba8e034531a64b864e788f77e8835032d931974e1640d66fdApprove108656922021-09-13 2:06:1435 days 3 hrs ago0x08d3026e6b1d4feb1c63bfb6dc4c59b6aa4696a2 IN  Ape Troop: TROOP Token0 BNB0.0001606275
0x8a565fc20074b221b19a1b93476817b3c9a4fab8ad816c0542094758043c94a9Approve108656302021-09-13 2:03:0835 days 3 hrs ago0x08d3026e6b1d4feb1c63bfb6dc4c59b6aa4696a2 IN  Ape Troop: TROOP Token0 BNB0.0002431275
0x7550f8cebec818584f081ff9423c4a67d756f91a02e4d9dc9879be6cfe37ab0eTransfer107834822021-09-10 5:03:4238 days 19 mins ago0x880e82b25c806bfc73dc592e265a956346a0fc8b IN  Ape Troop: TROOP Token0 BNB0.00771814
0x58f99ce260b5a94c59d75effff5051e99b6e5156596d498b0ad3da7df9fb67f8Approve107828202021-09-10 4:30:3438 days 52 mins ago0xae00d9672bb9c6010859796b2a2184c433a44e77 IN  Ape Troop: TROOP Token0 BNB0.000222525
0xe7225fecd90d44fbe30c3b8c1147069c4c985e3f74694dd8416ffadb5642a496Approve107780892021-09-10 0:32:1938 days 4 hrs ago0x86a1cb6d9c88429c28b05f81b5a31440d5e5067f IN  Ape Troop: TROOP Token0 BNB0.0002430615
0x86830e9f2705686e68d36f39bd53a6b16eaa15b0c2fdea51623bd0d111eef856Approve107687082021-09-09 16:38:3038 days 12 hrs ago0xc63c6235f985445e7ac006a8d68e8e13ee638246 IN  Ape Troop: TROOP Token0 BNB0.000126525
0xd0944e80ec13986b1ce84bddd32e577f639da0ac49a0b4c4df59d3750e8566aeApprove107686972021-09-09 16:37:5738 days 12 hrs ago0xc63c6235f985445e7ac006a8d68e8e13ee638246 IN  Ape Troop: TROOP Token0 BNB0.000126525
[ Download CSV Export 

OVERVIEW

ApeTroop's goal is to support charities via their governance/voting portal where holders of the native TROOP token can vote on proposals for charitable donations as well as project direction. It aims to launch an NFT farm where the ApeTroop community can farm Ape Troop NFT’s.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xba05e2938ecdb59c933de19fee2772dfab3ad99fd88307da60b28adfe7ab4288116528612021-10-10 13:34:257 days 15 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.005989023496909486 BNB
0xba05e2938ecdb59c933de19fee2772dfab3ad99fd88307da60b28adfe7ab4288116528612021-10-10 13:34:257 days 15 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.005989023496909486 BNB
0xec6a2edb2243ae11bed1b122f0db44be58f2632ffb0155c13b127baa82a89657116121292021-10-09 3:34:539 days 1 hr ago Ape Troop: TROOP Token PancakeSwap: Router v20.038623618399186121 BNB
0xec6a2edb2243ae11bed1b122f0db44be58f2632ffb0155c13b127baa82a89657116121292021-10-09 3:34:539 days 1 hr ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.038623618399186121 BNB
0xadc3a5f4920c4293ebe32eac2fb2219e9fa277016bc9150f865d6499b9d0ffc3115925432021-10-08 11:10:349 days 18 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.022984772332200652 BNB
0xadc3a5f4920c4293ebe32eac2fb2219e9fa277016bc9150f865d6499b9d0ffc3115925432021-10-08 11:10:349 days 18 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.022984772332200652 BNB
0x4644d41e00d2143f34888b4a30f7a17faa28aaa43b96b84acf1512b3591ec345114973692021-10-05 3:46:5913 days 1 hr ago Ape Troop: TROOP Token PancakeSwap: Router v20.000000000920337156 BNB
0x4644d41e00d2143f34888b4a30f7a17faa28aaa43b96b84acf1512b3591ec345114973692021-10-05 3:46:5913 days 1 hr ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.000000000920337156 BNB
0x813283d7d16ef1d6056e86a5123f2ad9630c737eb3ef54ba061885ffa1131f55114836772021-10-04 16:21:1713 days 13 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.000000736274205236 BNB
0x813283d7d16ef1d6056e86a5123f2ad9630c737eb3ef54ba061885ffa1131f55114836772021-10-04 16:21:1713 days 13 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.000000736274205236 BNB
0x643ac31e3a69aa1e9945c6d2c8d4c9fd1e7fa7c5f0a3bdedf6988bcac9c723cc114834232021-10-04 16:08:3513 days 13 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.000591914907278853 BNB
0x643ac31e3a69aa1e9945c6d2c8d4c9fd1e7fa7c5f0a3bdedf6988bcac9c723cc114834232021-10-04 16:08:3513 days 13 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.000591914907278853 BNB
0x5376cb9e2fb3e6e23692202d511310d073e3e8717a92127a9329100231c22a63114172302021-10-02 8:39:5715 days 20 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.000000268513337598 BNB
0x5376cb9e2fb3e6e23692202d511310d073e3e8717a92127a9329100231c22a63114172302021-10-02 8:39:5715 days 20 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.000000268513337598 BNB
0x9346f9efd1e2d1e619b1c2a9218d88ca3b22978c10997b860bcab733390a2452114145222021-10-02 6:23:0915 days 22 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.00021519316879227 BNB
0x9346f9efd1e2d1e619b1c2a9218d88ca3b22978c10997b860bcab733390a2452114145222021-10-02 6:23:0915 days 22 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.00021519316879227 BNB
0x583fc6a8774bb653173c8945b5087b53596d0370f2888fda92978ffa80b5857e114145082021-10-02 6:22:2715 days 23 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.00068337388917191 BNB
0x583fc6a8774bb653173c8945b5087b53596d0370f2888fda92978ffa80b5857e114145082021-10-02 6:22:2715 days 23 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.00068337388917191 BNB
0x26ebbcedc004f71c3d62a5363d7dc47a05de7c1398f140feaeb31d618d923cba114112232021-10-02 3:37:4416 days 1 hr ago Ape Troop: TROOP Token PancakeSwap: Router v20.00000425660750744 BNB
0x26ebbcedc004f71c3d62a5363d7dc47a05de7c1398f140feaeb31d618d923cba114112232021-10-02 3:37:4416 days 1 hr ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.00000425660750744 BNB
0x8093a5bb76f5c2d498a986459ec0b7b6b5054032826c7bba8259cd6f4b48a15c114084712021-10-02 1:17:4716 days 4 hrs ago Ape Troop: TROOP Token PancakeSwap: Router v20.003506890414191723 BNB
0x8093a5bb76f5c2d498a986459ec0b7b6b5054032826c7bba8259cd6f4b48a15c114084712021-10-02 1:17:4716 days 4 hrs ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.003506890414191723 BNB
0x6e742ea6f05c8267eba5eab69b323d30a69f47692693d87d6d5ad2b257431ffb113830922021-10-01 3:53:1417 days 1 hr ago Ape Troop: TROOP Token PancakeSwap: Router v20.000944251725265166 BNB
0x6e742ea6f05c8267eba5eab69b323d30a69f47692693d87d6d5ad2b257431ffb113830922021-10-01 3:53:1417 days 1 hr ago PancakeSwap: Router v2 Ape Troop: TROOP Token0.000944251725265166 BNB
0xc7c4b5551d46a2fbaa703505779e47fe5fcb83b6f3a53b261977bea65331abad113559132021-09-30 5:00:0818 days 22 mins ago Ape Troop: TROOP Token PancakeSwap: Router v20.001443556348105908 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ApeTroop

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : ApeTroop.sol
/**
                                                                                                                   ▓▒▓▓▓▓▓▒░▒▓▒▒▓▒░▓▓▓▓▓▓▓▓░▒                    
                                                                                                                ▓▓▓▓▓▓▒░           ░░▓▓▓▓▓▓▓▓▓▒▓                 
                                                                                                              ▓▓▓▓▓▒              ▒▓▓▓▒     ▒▓▓▓▓▒               
                                                                                                             ░▓▓▓▓▓▓▒           ░▓▓▓▓░        ▒▓▓▓▓▒             
                                                                                                           ░▓▓▓▒ ▓▓▓▓▓▓░░▒▒▒▒▒▒▓▓▓▓▓             ▓▓▓▓▓           
                                                                                                          ░▓▓▓▓     ▒▒░▓▓▓▓▓▓▓▓▓▒░                ▓▓▓▓▒          
                                                                                                          ▒▓▓▓                                 ▓▓▓▓▓▓▓▓░         
         ▓▓                                                ▓▓▓       ▓▓▓▓▓▓▓         ▓▓    ▓             ▓▓▓▒                     ▓▒▓          ▒▓▓▓▒▓▓▓▓▓        
        ▓▓▓▓    ▓▓▓▓▓▓▓      ▓▓▓▓▓▓▓    ▓▓▓     ▓▓▓        ▓▓▓        ▓▓▓▓▓▓         ▓▓▓  ▓▓▓     ▓▓▓▓   ▒▓▓▒               ▒    ▒▓▓▒          ▒▓▓▓▓▓▓▓▓▓        
         ▓▓▓   ▓▓▓   ▓▓▓    ▓▓▓   ▓▓▓    ▓▓▓    ▓▓▓        ▓▓▓           ▓▓▓         ▓▓▓   ▓▓▓    ▓▓▓    ▒▓▓▓              ▓▓▓▓▓▒▓▓▓             ░▒▓░ ░▓▓▒       
         ▓▓▓  ▓▓▓     ▓▓▓  ▓▓▓     ▓▓▓    ▓▓▓   ▓▓▓        ▓▓▓        ▓▓▓▓▓▓         ▓▓▓   ▓▓▓▓▓▓▓▓▓     ▒▓▓▒    ▓▒▓▒▓       ▒▓▓▓▓▓▓                  ▓▓▓░       
         ▓▓▓  ▓▓▓     ▓▓▓  ▓▓▓     ▓▓▓     ▓▓▓  ▓▓▓        ▓▓▓           ▓▓▓         ▓▓▓   ▓▓▓▓ ▓▓▓▓     ▓▓▓▒  ▓▓▓▓▓▓▓▓▒     ▓▓▓▓░▓▓▓▓░               ▒▓▓░       
     ▓▓▓▓▓▓▓  ▓▓▓     ▓▓▓  ▓▓▓     ▓▓▓      ▓▓▓▓▓▓▓        ▓▓▓           ▓▓▓      ▓▓▓▓▓▓    ▓▓▓ ▓▓▓       ▓▓▓▓▓▓▓░   ▒▓▓    ▒▓▓▓▓  ▒▒░     ▒▒▒        ▓▓▓▓       
   ▓▓▓▓▓▓▓▓▓  ▓▓▓     ▓▓▓  ▓▓▓     ▓▓▓     ▓▓▓  ▓▓▓        ▓▓▓           ▓▓▓▓  ▓▓▓▓▓▓▓▓▓    ▓▓▓▓▓▓        ▒▓▓▓▒▓▓▒  ▓▓▓▓              ▒▓▓▓▓▓▓▓▓▓▓▓   ▒▓▓▒        
  ▓▓▓    ▓▓▓   ▓▓▓▓▓▓▓▓▓    ▓▓▓▓▓▓▓▓▓      ▓▓▓▓ ▓▓▓   ▓▓▓▓▓▓▓▓▓▓▓▓   ▓▓▓▓▓▓▓▓ ▓▓▓    ▓▓▓▓    ▓▓▓▓          ▓▓▓▓▒▓▓▓▓▓▓▓             ▓▓▓▓▒▓    ▓▓▓▓░ ▒▓▓░         
  ▓▓▓▓▓▓▓▓▓▓     ▓▓▓▓▓▓       ▓▓▓▓▓▓        ▓▓▓▓▓▓▓▓                      ▓▓   ▓▓▓▓▓▓▓▓▓▓     ▓▓▓           ▓▓▓▓░ ▓▓               ▒▓▓░         ▓▓▓▓▓▓░          
                                                                                                              ░▓▓▓▓               ▒▓▓▓        ▓▓▓▓▓▓▓▒           
                                                                                                               ░▒▓▓▓▓             ▒▓▓▓     ░▒▓▓▓▓▓▓▓░            
                                                                                                                 ░▓▓▓▓░▓           ▒▓▓▓▓▓▓▓▓▓▓▓▓▓▒▓              
                                                                                                                    ▓▓▓▓▓▓▒▓░        ▓▒▒▓▓▓▓▓▓▓▒                 
                                                                                                                       ▒░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓                    
                                                                                                                            ░▓░▒░▓▓▓░▒░░░
 
Ape Troop - A Community-Powered Platform with a Heart
We're on a moon mission to help save humanity through blockchain-based charity donations generated from every trade of $TROOP.
 
If you are reading this you are very early to one of the most legit #MEME based projects this side of mars! We are bananas about Ape Troop and you should be too!
 
MISSION: Hit the Moon 
When you HODL $TROOP you choose the charities we support while you earn passively with our reflective staking mechanism. We have also implemented Auto LP + Auto Burn + Charity/Marketing wallet. 
  
ROCKET FUEL: How we will hit the moon! 
- Ape Troop governance portal  
- Charity donations 
- NFT's + NFT Farming 
- Marketing  
- Smart contract Pre-audit by RD Auditors - https://apetroop.io/ape-troop-smart-contract-security-report.pdf
- Plus more catalysts to make you #APE
 
TAXES YOU'LL LIKE:
- 10% tax on each Buy/Sell transaction split in the following way;
- 4% Goes to the autogenerating liquidity pool, which creates a rising floor price.
- 3% of each transaction is split amongst all $TROOP holders in the form of static staking. So just HODL $TROOP and earn more automagically!
- 2% goes into a Charity/marketing wallet, this ensures we can pay for marketing and donate to charities fulfilling our main purpose to help humanity.
- 1% will be burned to a DEAD wallet creating a deflationary supply.
 
IMPORTANT NOTES:
- Set slippage to 11% at a minimum
- For the first 30-60 minutes of trading anti-whale/anti-dump mechanisms will be implemented to prevent pesky bots from sniping and dumping, within this timeframe wallet to wallet transfers will also be limited
 
SOCIALS:
- Website: https://apetroop.io/
- Telegram Group: https://t.me/ApeTroop
- Telegram Ann: https://t.me/ApeTroopAnn
- Twitter: https://twitter.com/ApeTroop
 
*Please note Ape Troop and the native $TROOP token is a #MEME based cryptocurrency created to help build a community and donate to humanity through governance + blockchain, this project is for fun only and should not be considered financial advice, please ensure you understand the risks of buying the $TROOP tokens - DYOR
 
Made with  by Team Ape Troop 
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

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);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {this; return msg.data;}
}
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked { require(b <= a, errorMessage); return a - b; }
    }
}
library Address {
    function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0;}
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");(bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {return functionCall(target, data, "Address: low-level call failed");}
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {return functionCallWithValue(target, data, 0, errorMessage);}
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {return functionCallWithValue(target, data, value, "Address: low-level call with value failed");}
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }
    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) { return returndata; } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {revert(errorMessage);}
        }
    }
}
abstract contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "Only the previous owner can unlock onwership");
        require(block.timestamp > _lockTime , "The contract is still locked");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}
abstract contract Manageable is Context {
    address private _manager;
    event ManagementTransferred(address indexed previousManager, address indexed newManager);
    constructor(){
        address msgSender = _msgSender();
        _manager = msgSender;
        emit ManagementTransferred(address(0), msgSender);
    }
    function manager() public view returns(address){ return _manager; }
    modifier onlyManager(){
        require(_manager == _msgSender(), "Manageable: caller is not the manager");
        _;
    }
    function transferManagement(address newManager) external virtual onlyManager {
        emit ManagementTransferred(_manager, newManager);
        _manager = newManager;
    }
}
interface IPancakeV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IPancakeV2Router {
    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;
}
 
pragma solidity ^0.8.4;

abstract contract Tokenomics is Manageable{
    
    using SafeMath for uint256;

    string internal constant NAME = "ApeTroop";
    string internal constant SYMBOL = "TROOP";
    
    uint16 internal constant FEES_DIVISOR = 10**3;
    uint8 internal constant DECIMALS = 6;
    uint256 internal constant ZEROES = 10**6;
    
    uint256 private constant MAX = ~uint256(0);
    uint256 internal constant TOTAL_SUPPLY = 1000000000000000 * ZEROES;
    uint256 internal _reflectedSupply = (MAX - (MAX % TOTAL_SUPPLY));

    uint256 internal maxTransactionAmount = TOTAL_SUPPLY / 100;
    
    uint256 internal maxWalletBalance = TOTAL_SUPPLY / 500;

    uint256 internal numberOfTokensToSwapToLiquidity = 1000;

    address internal marketingAddress = 0x0589C449d8661B7310e741694688d1EFB7967d35;
    address internal burnAddress = 0x000000000000000000000000000000000000dEaD;

    enum FeeType { Antiwhale, Burn, Liquidity, Rfi, External, ExternalToETH }
    struct Fee {
        FeeType name;
        uint256 value;
        address recipient;
        uint256 total;
    }

    Fee[] internal fees;
    uint256 internal sumOfFees;

    constructor() {
        _addFees();
    }

    function _addFee(FeeType name, uint256 value, address recipient) private {
        fees.push(Fee(name, value, recipient, 0 ));
        sumOfFees += value;
    }

    function _addFees() private {
        _addFee(FeeType.Rfi, 30, address(this) ); 
        _addFee(FeeType.Burn, 10, burnAddress);
        _addFee(FeeType.Liquidity, 40, address(this) );
        _addFee(FeeType.External, 20, marketingAddress);
    }
    
    function setMaxTransactionAmount(uint256 maxTxPercent) external onlyManager() {
        maxTransactionAmount = TOTAL_SUPPLY.mul(maxTxPercent).div(10 ** 3);
    }
    
    function _getFeesCount() internal view returns (uint256){ return fees.length; }

    function _getFeeStruct(uint256 index) private view returns(Fee storage){
        require( index >= 0 && index < fees.length, "FeesSettings._getFeeStruct: Fee index out of bounds");
        return fees[index];
    }
    function _getFee(uint256 index) internal view returns (FeeType, uint256, address, uint256){
        Fee memory fee = _getFeeStruct(index);
        return ( fee.name, fee.value, fee.recipient, fee.total );
    }
    function _addFeeCollectedAmount(uint256 index, uint256 amount) internal {
        Fee storage fee = _getFeeStruct(index);
        fee.total = fee.total.add(amount);
    }

    function getCollectedFeeTotal(uint256 index) internal view returns (uint256){
        Fee memory fee = _getFeeStruct(index);
        return fee.total;
    }
}

abstract contract Presaleable is Manageable {
    bool internal isInPresale;
    function setPreseableEnabled(bool value) external onlyManager {
        isInPresale = value;
    }
}

abstract contract BaseRfiToken is IERC20, IERC20Metadata, Ownable, Presaleable, Tokenomics {

    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) internal _reflectedBalances;
    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) internal _allowances;
    
    mapping (address => bool) internal _isExcludedFromFee;
    mapping (address => bool) internal _isExcludedFromRewards;
    address[] private _excluded;
    
    constructor(){
        _reflectedBalances[owner()] = _reflectedSupply;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _exclude(owner());
        _exclude(address(this));
        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
        
    }
    
    function name() external pure override returns (string memory) { return NAME; }
    function symbol() external pure override returns (string memory) { return SYMBOL; }
    function decimals() external pure override returns (uint8) { return DECIMALS; }
    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    
    function balanceOf(address account) public view override returns (uint256){
        if (_isExcludedFromRewards[account]) return _balances[account];
        return tokenFromReflection(_reflectedBalances[account]);
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool){
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function allowance(address owner, address spender) external view override returns (uint256){
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool){
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: transfer amount exceeds allowance"));
        return true;
    }

    function burn(uint256 amount) external onlyManager {
        address sender = _msgSender();
        require(sender != address(0), "BaseRfiToken: burn from the zero address");
        require(sender != address(burnAddress), "BaseRfiToken: burn from the burn address");
        uint256 balance = balanceOf(sender);
        require(balance >= amount, "BaseRfiToken: burn amount exceeds balance");
        uint256 reflectedAmount = amount.mul(_getCurrentRate());
        _reflectedBalances[sender] = _reflectedBalances[sender].sub(reflectedAmount);
        if (_isExcludedFromRewards[sender])
            _balances[sender] = _balances[sender].sub(amount);
        _burnTokens( sender, amount, reflectedAmount );
    }
    
  
    function _burnTokens(address sender, uint256 tBurn, uint256 rBurn) internal { 
        _reflectedBalances[burnAddress] = _reflectedBalances[burnAddress].add(rBurn);
        if (_isExcludedFromRewards[burnAddress])
            _balances[burnAddress] = _balances[burnAddress].add(tBurn);

        emit Transfer(sender, burnAddress, tBurn);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }
    
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
    
    function isExcludedFromReward(address account) external view returns (bool) {
        return _isExcludedFromRewards[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns(uint256) {
        require(tAmount <= TOTAL_SUPPLY, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount,0);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount,_getSumOfFees(_msgSender(), tAmount));
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) internal view returns(uint256) {
        require(rAmount <= _reflectedSupply, "Amount must be less than total reflections");
        uint256 currentRate = _getCurrentRate();
        return rAmount.div(currentRate);
    }
    
    function excludeFromReward(address account) external onlyOwner() {
        require(!_isExcludedFromRewards[account], "Account is not included");
        _exclude(account);
    }
    
    function _exclude(address account) internal {
        if(_reflectedBalances[account] > 0) {
            _balances[account] = tokenFromReflection(_reflectedBalances[account]);
        }
        _isExcludedFromRewards[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcludedFromRewards[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _balances[account] = 0;
                _isExcludedFromRewards[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function setExcludedFromFee(address account, bool value) external onlyOwner { _isExcludedFromFee[account] = value; }
    function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "BaseRfiToken: approve from the zero address");
        require(spender != address(0), "BaseRfiToken: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _isUnlimitedSender(address account) internal view returns(bool){
        return (account == owner());
    }
    
    function _isUnlimitedRecipient(address account) internal view returns(bool){
        return (account == owner() || account == burnAddress);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "BaseRfiToken: transfer from the zero address");
        require(recipient != address(0), "BaseRfiToken: transfer to the zero address");
        require(sender != address(burnAddress), "BaseRfiToken: transfer from the burn address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFee = true;
        if ( isInPresale ){ takeFee = false; }
        else {
            if ( amount > maxTransactionAmount && !_isUnlimitedSender(sender) && !_isUnlimitedRecipient(recipient) ){
                revert("Transfer amount exceeds the maxTxAmount.");
            }
        }

        if(_isV2Pair(sender) || _isV2Pair(recipient)){
            takeFee = true;
        }else {
            takeFee = false;
        }

        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; }
        _beforeTokenTransfer(sender, recipient, amount, takeFee);
        _transferTokens(sender, recipient, amount, takeFee);
        
    }

    function _transferTokens(address sender, address recipient, uint256 amount, bool takeFee) private {
        uint256 sumOfFees = _getSumOfFees(sender, amount);
        if ( !takeFee ){ sumOfFees = 0; } 
        (uint256 rAmount, uint256 rTransferAmount, uint256 tAmount, uint256 tTransferAmount, uint256 currentRate ) = _getValues(amount, sumOfFees); 
        _reflectedBalances[sender] = _reflectedBalances[sender].sub(rAmount);
        _reflectedBalances[recipient] = _reflectedBalances[recipient].add(rTransferAmount);
        if (_isExcludedFromRewards[sender]){ _balances[sender] = _balances[sender].sub(tAmount); }
        if (_isExcludedFromRewards[recipient] ){ _balances[recipient] = _balances[recipient].add(tTransferAmount); }   
        _takeFees( amount, currentRate, sumOfFees);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function _takeFees(uint256 amount, uint256 currentRate, uint256 sumOfFees) private {
        if ( sumOfFees > 0 && !isInPresale){
            _takeTransactionFees(amount, currentRate);
        }
    }
    
    function _getValues(uint256 tAmount, uint256 feesSum) internal view returns (uint256, uint256, uint256, uint256, uint256) {  
        uint256 tTotalFees = tAmount.mul(feesSum).div(FEES_DIVISOR);
        uint256 tTransferAmount = tAmount.sub(tTotalFees);
        uint256 currentRate = _getCurrentRate();
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rTotalFees = tTotalFees.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rTotalFees); 
        return (rAmount, rTransferAmount, tAmount, tTransferAmount, currentRate);
    }
    
    function _getCurrentRate() internal view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    
    function _getCurrentSupply() internal view returns(uint256, uint256) {
        uint256 rSupply = _reflectedSupply;
        uint256 tSupply = TOTAL_SUPPLY;  
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_reflectedBalances[_excluded[i]] > rSupply || _balances[_excluded[i]] > tSupply) return (_reflectedSupply, TOTAL_SUPPLY);
            rSupply = rSupply.sub(_reflectedBalances[_excluded[i]]);
            tSupply = tSupply.sub(_balances[_excluded[i]]);
        }
        if (tSupply == 0 || rSupply < _reflectedSupply.div(TOTAL_SUPPLY)) return (_reflectedSupply, TOTAL_SUPPLY);
        return (rSupply, tSupply);
    }
    
   
    function _beforeTokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) internal virtual;
    
    function _getSumOfFees(address sender, uint256 amount) internal view virtual returns (uint256);

    function _isV2Pair(address account) internal view virtual returns(bool);

    function _redistribute(uint256 amount, uint256 currentRate, uint256 fee, uint256 index) internal {
        uint256 tFee = amount.mul(fee).div(FEES_DIVISOR);
        uint256 rFee = tFee.mul(currentRate);

        _reflectedSupply = _reflectedSupply.sub(rFee);
        _addFeeCollectedAmount(index, tFee);
    }

    function _takeTransactionFees(uint256 amount, uint256 currentRate) internal virtual;
}

abstract contract Liquifier is Ownable, Manageable {

    using SafeMath for uint256;

    uint256 private withdrawableBalance;

    enum Env {Testnet, MainnetV1, MainnetV2}
    Env private _env;
    address private _mainnetRouterV1Address = 0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F;
    address private _mainnetRouterV2Address = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    address private _testnetRouterAddress = 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3;

    IPancakeV2Router internal _router;
    address internal _pair;
    
    bool private inSwapAndLiquify;
    bool private swapAndLiquifyEnabled = true;

    uint256 private maxTransactionAmount;
    uint256 private numberOfTokensToSwapToLiquidity;

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

    event RouterSet(address indexed router);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event LiquidityAdded(uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity);

    receive() external payable {}

    function initializeLiquiditySwapper(Env env, uint256 maxTx, uint256 liquifyAmount) internal {
        _env = env;
        if (_env == Env.MainnetV1){ _setRouterAddress(_mainnetRouterV1Address); }
        else if (_env == Env.MainnetV2){ _setRouterAddress(_mainnetRouterV2Address); }
        else /*(_env == Env.Testnet)*/{ _setRouterAddress(_testnetRouterAddress); }
        maxTransactionAmount = maxTx;
        numberOfTokensToSwapToLiquidity = liquifyAmount;

    }

    function liquify(uint256 contractTokenBalance, address sender) internal {
        if (contractTokenBalance >= maxTransactionAmount) contractTokenBalance = maxTransactionAmount;     
        bool isOverRequiredTokenBalance = ( contractTokenBalance >= numberOfTokensToSwapToLiquidity );
        if ( isOverRequiredTokenBalance && swapAndLiquifyEnabled && !inSwapAndLiquify && (sender != _pair) ){
            _swapAndLiquify(contractTokenBalance);            
        }
    }


    function _setRouterAddress(address router) private {
        IPancakeV2Router _newPancakeRouter = IPancakeV2Router(router);
        _pair = IPancakeV2Factory(_newPancakeRouter.factory()).createPair(address(this), _newPancakeRouter.WETH());
        _router = _newPancakeRouter;
        emit RouterSet(router);
    }
    
    function _swapAndLiquify(uint256 amount) private lockTheSwap {
        uint256 half = amount.div(2);
        uint256 otherHalf = amount.sub(half);
        uint256 initialBalance = address(this).balance;
        _swapTokensForEth(half); 
        uint256 newBalance = address(this).balance.sub(initialBalance);
        _addLiquidity(otherHalf, newBalance);
        emit SwapAndLiquify(half, newBalance, otherHalf);
    }
    
    function _swapTokensForEth(uint256 tokenAmount) private { 
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _approveDelegate(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approveDelegate(address(this), address(_router), tokenAmount);
        (uint256 tokenAmountSent, uint256 ethAmountSent, uint256 liquidity) = _router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        withdrawableBalance = address(this).balance;
        emit LiquidityAdded(tokenAmountSent, ethAmountSent, liquidity);
    }

    function setRouterAddress(address router) external onlyManager() {
        _setRouterAddress(router);
    }


    function setSwapAndLiquifyEnabled(bool enabled) external onlyManager {
        swapAndLiquifyEnabled = enabled;
        emit SwapAndLiquifyEnabledUpdated(swapAndLiquifyEnabled);
    }

    
    function withdrawLockedEth(address payable recipient) external onlyManager(){
        require(recipient != address(0), "Cannot withdraw the ETH balance to the zero address");
        require(withdrawableBalance > 0, "The ETH balance must be greater than 0");
        uint256 amount = withdrawableBalance;
        withdrawableBalance = 0;
        recipient.transfer(amount);
    }
    function _approveDelegate(address owner, address spender, uint256 amount) internal virtual;
}


abstract contract Antiwhale is Tokenomics {

    function _getAntiwhaleFees(uint256, uint256) internal view returns (uint256){
        return sumOfFees;
    }
}

abstract contract SafeToken is BaseRfiToken, Liquifier, Antiwhale {
    
    using SafeMath for uint256;

    constructor(Env _env){
        initializeLiquiditySwapper(_env, maxTransactionAmount, numberOfTokensToSwapToLiquidity);
        _exclude(_pair);
        _exclude(burnAddress);
    }
    
    function _isV2Pair(address account) internal view override returns(bool){
        return (account == _pair);
    }

    function _getSumOfFees(address sender, uint256 amount) internal view override returns (uint256){ 
        return _getAntiwhaleFees(balanceOf(sender), amount); 
    }
    
   
    function _beforeTokenTransfer(address sender, address , uint256 , bool ) internal override {
        if ( !isInPresale ){
            uint256 contractTokenBalance = balanceOf(address(this));
            liquify( contractTokenBalance, sender );
        }
    }

    function _takeTransactionFees(uint256 amount, uint256 currentRate) internal override {
       if( isInPresale ){ return; }
       uint256 feesCount = _getFeesCount();
        for (uint256 index = 0; index < feesCount; index++ ){
            (FeeType name, uint256 value, address recipient,) = _getFee(index);     
            if ( value == 0 ) continue;
            if ( name == FeeType.Rfi ){
                _redistribute( amount, currentRate, value, index );
            }
            else if ( name == FeeType.Burn ){
                _burn( amount, currentRate, value, index );
            }
            else if ( name == FeeType.Antiwhale){
            }
            else if ( name == FeeType.ExternalToETH){
                _takeFeeToETH( amount, currentRate, value, recipient, index );
            }
            else {
                _takeFee( amount, currentRate, value, recipient, index );
            }
        }
    }

    function _burn(uint256 amount, uint256 currentRate, uint256 fee, uint256 index) private {
        uint256 tBurn = amount.mul(fee).div(FEES_DIVISOR);
        uint256 rBurn = tBurn.mul(currentRate);

        _burnTokens(address(this), tBurn, rBurn);
        _addFeeCollectedAmount(index, tBurn);
    }

    function _takeFee(uint256 amount, uint256 currentRate, uint256 fee, address recipient, uint256 index) private {
        uint256 tAmount = amount.mul(fee).div(FEES_DIVISOR);
        uint256 rAmount = tAmount.mul(currentRate);
       _reflectedBalances[recipient] = _reflectedBalances[recipient].add(rAmount);
        if(_isExcludedFromRewards[recipient])
            _balances[recipient] = _balances[recipient].add(tAmount);
       _addFeeCollectedAmount(index, tAmount);
    }
    
    function _takeFeeToETH(uint256 amount, uint256 currentRate, uint256 fee, address recipient, uint256 index) private {
        _takeFee(amount, currentRate, fee, recipient, index);        
    }

    function _approveDelegate(address owner, address spender, uint256 amount) internal override {
        _approve(owner, spender, amount);
    }
}

contract ApeTroop is SafeToken{

    constructor() SafeToken(Env.MainnetV2){
        _approve(owner(),address(_router), ~uint256(0));
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "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":[{"indexed":false,"internalType":"uint256","name":"tokenAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmountSent","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"LiquidityAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousManager","type":"address"},{"indexed":true,"internalType":"address","name":"newManager","type":"address"}],"name":"ManagementTransferred","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":"router","type":"address"}],"name":"RouterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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"},{"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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","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":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setPreseableEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"newManager","type":"address"}],"name":"transferManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"}],"name":"withdrawLockedEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a620f424066038d7ea4c6800062000d20565b620000289060001962000d7a565b620000369060001962000d42565b600455606462000051620f424066038d7ea4c6800062000d20565b6200005d919062000d09565b6005556101f462000079620f424066038d7ea4c6800062000d20565b62000085919062000d09565b6006556103e8600755600880546001600160a01b0319908116730589c449d8661b7310e741694688d1efb7967d351790915560098054821661dead179055601380547405ff2b0db69458a0750badebc4f9e13add608c7f00610100600160a81b03199091161790556014805482167310ed43c718714eb63d5aa57b78b54704e256024e17905560158054909116739ac64cc6e4415144c455bd8e4837fea55603e5c31790556017805460ff60a81b1916600160a81b1790553480156200014a57600080fd5b50600080546001600160a01b03191633908117825560405160029282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600380546001600160a01b0319163390811790915560405181906000907f80f15e9dbc60884fdb59fb8ed4fc48a9a689e028f055e893ed45ca5be67c5c85908290a350620001da62000364565b600454600c6000620001f46000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600f60006200022e620003be60201b60201c565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600f9092529020805490911660011790556200028b620002856000546001600160a01b031690565b620003cd565b6200029630620003cd565b600080546001600160a01b0316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002db620f424066038d7ea4c6800062000d20565b60405190815260200160405180910390a362000303816005546007546200049060201b60201c565b6017546200031a906001600160a01b0316620003cd565b60095462000331906001600160a01b0316620003cd565b506200035e620003496000546001600160a01b031690565b6016546001600160a01b03166000196200057d565b62000dbd565b620003736003601e30620006b8565b6009546200039090600190600a906001600160a01b0316620006b8565b6200039f6002602830620006b8565b600854620003bc906004906014906001600160a01b0316620006b8565b565b6000546001600160a01b031690565b6001600160a01b0381166000908152600c6020526040902054156200042a576001600160a01b0381166000908152600c60205260409020546200041090620007b5565b6001600160a01b0382166000908152600d60205260409020555b6001600160a01b03166000818152601060205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b6013805484919060ff19166001836002811115620004be57634e487b7160e01b600052602160045260246000fd5b0217905550600160135460ff166002811115620004eb57634e487b7160e01b600052602160045260246000fd5b141562000514576013546200050e9061010090046001600160a01b03166200084d565b62000571565b600260135460ff1660028111156200053c57634e487b7160e01b600052602160045260246000fd5b14156200055a576014546200050e906001600160a01b03166200084d565b60155462000571906001600160a01b03166200084d565b60189190915560195550565b6001600160a01b038316620005ed5760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b6001600160a01b038216620006575760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401620005e4565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600a6040518060800160405280856005811115620006e657634e487b7160e01b600052602160045260246000fd5b815260208082018690526001600160a01b03851660408301526000606090920182905283546001818101865594835291208251600490920201805492939092839160ff19909116908360058111156200074f57634e487b7160e01b600052602160045260246000fd5b02179055506020820151816001015560408201518160020160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060608201518160030155505081600b6000828254620007ab919062000cee565b9091555050505050565b60006004548211156200081e5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620005e4565b60006200082a62000a2c565b905062000846818462000a5f60201b6200137e1790919060201c565b9392505050565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200088c57600080fd5b505afa158015620008a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c7919062000cc5565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200091057600080fd5b505afa15801562000925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200094b919062000cc5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200099457600080fd5b505af1158015620009a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009cf919062000cc5565b601780546001600160a01b03199081166001600160a01b039384161790915560168054909116838316179055604051908316907fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d1590600090a25050565b6000808062000a3a62000a6d565b9150915062000a58818362000a5f60201b6200137e1790919060201c565b9250505090565b600062000846828462000d09565b60045460009081908162000a8c620f424066038d7ea4c6800062000d20565b905060005b60115481101562000c475782600c60006011848154811062000ac357634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000b3e575081600d60006011848154811062000b1757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562000b685760045462000b5d620f424066038d7ea4c6800062000d20565b945094505050509091565b62000bcb600c60006011848154811062000b9257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205485916200139162000cb7821b17901c565b925062000c30600d60006011848154811062000bf757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b0316835282810193909352604090910190205484916200139162000cb7821b17901c565b91508062000c3e8162000d5c565b91505062000a91565b5080158062000c85575062000c8262000c6b620f424066038d7ea4c6800062000d20565b60045462000a5f60201b6200137e1790919060201c565b82105b1562000cae5760045462000ca4620f424066038d7ea4c6800062000d20565b9350935050509091565b90939092509050565b600062000846828462000d42565b60006020828403121562000cd7578081fd5b81516001600160a01b038116811462000846578182fd5b6000821982111562000d045762000d0462000d91565b500190565b60008262000d1b5762000d1b62000da7565b500490565b600081600019048311821515161562000d3d5762000d3d62000d91565b500290565b60008282101562000d575762000d5762000d91565b500390565b600060001982141562000d735762000d7362000d91565b5060010190565b60008262000d8c5762000d8c62000da7565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b612d038062000dcd6000396000f3fe6080604052600436106101dc5760003560e01c80636612e66f11610102578063a69df4b511610095578063dd46706411610064578063dd467064146105ab578063dd62ed3e146105cb578063e4edf85214610611578063f2fde38b1461063157600080fd5b8063a69df4b514610536578063a9059cbb1461054b578063b7671a0d1461056b578063c49b9a801461058b57600080fd5b806388f82020116100d157806388f82020146104915780638da5cb5b146104ca57806395d89b41146104e8578063a457c2d71461051657600080fd5b80636612e66f1461041c57806370a082311461043c578063715018a61461045c57806374778cdc1461047157600080fd5b8063395093511161017a578063481c6a7511610149578063481c6a751461037c57806352390c02146103ae5780635342acb4146103ce578063602bc62b1461040757600080fd5b806339509351146102fc57806341cb87fc1461031c57806342966c681461033c5780634549b0391461035c57600080fd5b80631e293c10116101b65780631e293c101461027e57806323b872dd146102a0578063313ce567146102c05780633685d419146102dc57600080fd5b806306fdde03146101e8578063095ea7b31461022b57806318160ddd1461025b57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b50604080518082019091526008815267041706554726f6f760c41b60208201525b6040516102229190612a6f565b60405180910390f35b34801561023757600080fd5b5061024b6102463660046129c3565b610651565b6040519015158152602001610222565b34801561026757600080fd5b50610270610668565b604051908152602001610222565b34801561028a57600080fd5b5061029e610299366004612a08565b610683565b005b3480156102ac57600080fd5b5061024b6102bb36600461294f565b6106e6565b3480156102cc57600080fd5b5060405160068152602001610222565b3480156102e857600080fd5b5061029e6102f73660046128df565b61074f565b34801561030857600080fd5b5061024b6103173660046129c3565b61093e565b34801561032857600080fd5b5061029e6103373660046128df565b610974565b34801561034857600080fd5b5061029e610357366004612a08565b6109aa565b34801561036857600080fd5b50610270610377366004612a20565b610bc6565b34801561038857600080fd5b506003546001600160a01b03165b6040516001600160a01b039091168152602001610222565b3480156103ba57600080fd5b5061029e6103c93660046128df565b610c6e565b3480156103da57600080fd5b5061024b6103e93660046128df565b6001600160a01b03166000908152600f602052604090205460ff1690565b34801561041357600080fd5b50600254610270565b34801561042857600080fd5b5061029e61043736600461298f565b610d0a565b34801561044857600080fd5b506102706104573660046128df565b610d5f565b34801561046857600080fd5b5061029e610dbe565b34801561047d57600080fd5b5061029e61048c3660046129ee565b610e20565b34801561049d57600080fd5b5061024b6104ac3660046128df565b6001600160a01b031660009081526010602052604090205460ff1690565b3480156104d657600080fd5b506000546001600160a01b0316610396565b3480156104f457600080fd5b50604080518082019091526005815264054524f4f560dc1b6020820152610215565b34801561052257600080fd5b5061024b6105313660046129c3565b610e68565b34801561054257600080fd5b5061029e610eb7565b34801561055757600080fd5b5061024b6105663660046129c3565b610fc6565b34801561057757600080fd5b5061029e6105863660046128df565b610fd3565b34801561059757600080fd5b5061029e6105a63660046129ee565b611116565b3480156105b757600080fd5b5061029e6105c6366004612a08565b61119b565b3480156105d757600080fd5b506102706105e6366004612917565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b34801561061d57600080fd5b5061029e61062c3660046128df565b611220565b34801561063d57600080fd5b5061029e61064c3660046128df565b6112a6565b600061065e33848461139d565b5060015b92915050565b600061067e620f424066038d7ea4c68000612be4565b905090565b6003546001600160a01b031633146106b65760405162461bcd60e51b81526004016106ad90612af7565b60405180910390fd5b6106e06103e86106da836106d4620f424066038d7ea4c68000612be4565b906114d1565b9061137e565b60055550565b60006106f38484846114dd565b610745843361074085604051806060016040528060288152602001612c61602891396001600160a01b038a166000908152600e6020908152604080832033845290915290205491906117cc565b61139d565b5060019392505050565b6000546001600160a01b031633146107795760405162461bcd60e51b81526004016106ad90612ac2565b6001600160a01b03811660009081526010602052604090205460ff166107e15760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016106ad565b60005b60115481101561093a57816001600160a01b03166011828154811061081957634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610928576011805461084490600190612c03565b8154811061086257634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601180546001600160a01b03909216918390811061089c57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600d82526040808220829055601090925220805460ff19169055601180548061090257634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061093281612c1a565b9150506107e4565b5050565b336000818152600e602090815260408083206001600160a01b0387168452909152812054909161065e91859061074090866117f8565b6003546001600160a01b0316331461099e5760405162461bcd60e51b81526004016106ad90612af7565b6109a781611804565b50565b6003546001600160a01b031633146109d45760405162461bcd60e51b81526004016106ad90612af7565b3380610a335760405162461bcd60e51b815260206004820152602860248201527f42617365526669546f6b656e3a206275726e2066726f6d20746865207a65726f604482015267206164647265737360c01b60648201526084016106ad565b6009546001600160a01b0382811691161415610aa25760405162461bcd60e51b815260206004820152602860248201527f42617365526669546f6b656e3a206275726e2066726f6d20746865206275726e604482015267206164647265737360c01b60648201526084016106ad565b6000610aad82610d5f565b905082811015610b115760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a206275726e20616d6f756e7420657863656564604482015268732062616c616e636560b81b60648201526084016106ad565b6000610b25610b1e6119d7565b85906114d1565b6001600160a01b0384166000908152600c6020526040902054909150610b4b9082611391565b6001600160a01b0384166000908152600c602090815260408083209390935560109052205460ff1615610bb5576001600160a01b0383166000908152600d6020526040902054610b9b9085611391565b6001600160a01b0384166000908152600d60205260409020555b610bc08385836119fa565b50505050565b6000610bdc620f424066038d7ea4c68000612be4565b831115610c2b5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016106ad565b81610c4b576000610c3d846000611adc565b509294506106629350505050565b6000610c6084610c5b3387611b4c565b611adc565b509194506106629350505050565b6000546001600160a01b03163314610c985760405162461bcd60e51b81526004016106ad90612ac2565b6001600160a01b03811660009081526010602052604090205460ff1615610d015760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f7420696e636c7564656400000000000000000060448201526064016106ad565b6109a781611b61565b6000546001600160a01b03163314610d345760405162461bcd60e51b81526004016106ad90612ac2565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b03811660009081526010602052604081205460ff1615610d9c57506001600160a01b03166000908152600d602052604090205490565b6001600160a01b0382166000908152600c602052604090205461066290611c21565b6000546001600160a01b03163314610de85760405162461bcd60e51b81526004016106ad90612ac2565b600080546040516001600160a01b0390911690600080516020612c89833981519152908390a3600080546001600160a01b0319169055565b6003546001600160a01b03163314610e4a5760405162461bcd60e51b81526004016106ad90612af7565b60038054911515600160a01b0260ff60a01b19909216919091179055565b600061065e338461074085604051806060016040528060258152602001612ca960259139336000908152600e602090815260408083206001600160a01b038d16845290915290205491906117cc565b6001546001600160a01b03163314610f265760405162461bcd60e51b815260206004820152602c60248201527f4f6e6c79207468652070726576696f7573206f776e65722063616e20756e6c6f60448201526b0636b206f6e776572736869760a41b60648201526084016106ad565b6002544211610f775760405162461bcd60e51b815260206004820152601c60248201527f54686520636f6e7472616374206973207374696c6c206c6f636b65640000000060448201526064016106ad565b600154600080546040516001600160a01b039384169390911691600080516020612c8983398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600061065e3384846114dd565b6003546001600160a01b03163314610ffd5760405162461bcd60e51b81526004016106ad90612af7565b6001600160a01b03811661106f5760405162461bcd60e51b815260206004820152603360248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015272746f20746865207a65726f206164647265737360681b60648201526084016106ad565b6000601254116110d05760405162461bcd60e51b815260206004820152602660248201527f546865204554482062616c616e6365206d75737420626520677265617465722060448201526507468616e20360d41b60648201526084016106ad565b6012805460009182905560405190916001600160a01b0384169183156108fc0291849190818181858888f19350505050158015611111573d6000803e3d6000fd5b505050565b6003546001600160a01b031633146111405760405162461bcd60e51b81526004016106ad90612af7565b6017805460ff60a81b1916600160a81b8315158102919091179182905560405160ff9190920416151581527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599060200160405180910390a150565b6000546001600160a01b031633146111c55760405162461bcd60e51b81526004016106ad90612ac2565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556111f48142612bac565b600255600080546040516001600160a01b0390911690600080516020612c89833981519152908390a350565b6003546001600160a01b0316331461124a5760405162461bcd60e51b81526004016106ad90612af7565b6003546040516001600160a01b038084169216907f80f15e9dbc60884fdb59fb8ed4fc48a9a689e028f055e893ed45ca5be67c5c8590600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112d05760405162461bcd60e51b81526004016106ad90612ac2565b6001600160a01b0381166113355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ad565b600080546040516001600160a01b0380851693921691600080516020612c8983398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600061138a8284612bc4565b9392505050565b600061138a8284612c03565b6001600160a01b0383166114075760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b60648201526084016106ad565b6001600160a01b03821661146f5760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b60648201526084016106ad565b6001600160a01b038381166000818152600e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061138a8284612be4565b6001600160a01b0383166115485760405162461bcd60e51b815260206004820152602c60248201527f42617365526669546f6b656e3a207472616e736665722066726f6d207468652060448201526b7a65726f206164647265737360a01b60648201526084016106ad565b6001600160a01b0382166115b15760405162461bcd60e51b815260206004820152602a60248201527f42617365526669546f6b656e3a207472616e7366657220746f20746865207a65604482015269726f206164647265737360b01b60648201526084016106ad565b6009546001600160a01b03848116911614156116245760405162461bcd60e51b815260206004820152602c60248201527f42617365526669546f6b656e3a207472616e736665722066726f6d207468652060448201526b6275726e206164647265737360a01b60648201526084016106ad565b600081116116865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106ad565b600354600190600160a01b900460ff16156116a357506000611732565b600554821180156116c257506000546001600160a01b03858116911614155b80156116d457506116d283611c9e565b155b156117325760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016106ad565b6017546001600160a01b038581169116148061175b57506017546001600160a01b038481169116145b156117685750600161176c565b5060005b6001600160a01b0384166000908152600f602052604090205460ff16806117ab57506001600160a01b0383166000908152600f602052604090205460ff165b156117b4575060005b6117c084848484611ccb565b610bc084848484611cfa565b600081848411156117f05760405162461bcd60e51b81526004016106ad9190612a6f565b505050900390565b600061138a8284612bac565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561184257600080fd5b505afa158015611856573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187a91906128fb565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c257600080fd5b505afa1580156118d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fa91906128fb565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561194257600080fd5b505af1158015611956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197a91906128fb565b601780546001600160a01b03199081166001600160a01b039384161790915560168054909116838316179055604051908316907fc6b438e6a8a59579ce6a4406cbd203b740e0d47b458aae6596339bcd40c40d1590600090a25050565b60008060006119e4611eb5565b90925090506119f3828261137e565b9250505090565b6009546001600160a01b03166000908152600c6020526040902054611a1f90826117f8565b600980546001600160a01b039081166000908152600c6020908152604080832095909555925490911681526010909152205460ff1615611a9a576009546001600160a01b03166000908152600d6020526040902054611a7e90836117f8565b6009546001600160a01b03166000908152600d60205260409020555b6009546040518381526001600160a01b03918216918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016114c4565b60008080808080611af36103e86106da8a8a6114d1565b90506000611b018983611391565b90506000611b0d6119d7565b90506000611b1b8b836114d1565b90506000611b2985846114d1565b90506000611b378383611391565b929d929c9b5093995091975095505050505050565b600061138a611b5a84610d5f565b50600b5490565b6001600160a01b0381166000908152600c602052604090205415611bbb576001600160a01b0381166000908152600c6020526040902054611ba190611c21565b6001600160a01b0382166000908152600d60205260409020555b6001600160a01b03166000818152601060205260408120805460ff191660019081179091556011805491820181559091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319169091179055565b6000600454821115611c885760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106ad565b6000611c926119d7565b905061138a838261137e565b600080546001600160a01b03838116911614806106625750506009546001600160a01b0390811691161490565b600354600160a01b900460ff16610bc0576000611ce730610d5f565b9050611cf381866120c0565b5050505050565b6000611d068584611b4c565b905081611d11575060005b6000806000806000611d238887611adc565b6001600160a01b038f166000908152600c602052604090205494995092975090955093509150611d539086611391565b6001600160a01b03808c166000908152600c602052604080822093909355908b1681522054611d8290856117f8565b6001600160a01b03808b166000908152600c6020908152604080832094909455918d1681526010909152205460ff1615611df3576001600160a01b038a166000908152600d6020526040902054611dd99084611391565b6001600160a01b038b166000908152600d60205260409020555b6001600160a01b03891660009081526010602052604090205460ff1615611e51576001600160a01b0389166000908152600d6020526040902054611e3790836117f8565b6001600160a01b038a166000908152600d60205260409020555b611e5c88828861212a565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ea191815260200190565b60405180910390a350505050505050505050565b600454600090819081611ed2620f424066038d7ea4c68000612be4565b905060005b6011548110156120655782600c600060118481548110611f0757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611f80575081600d600060118481548110611f5957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611fa757600454611f9c620f424066038d7ea4c68000612be4565b945094505050509091565b611ffb600c600060118481548110611fcf57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611391565b9250612051600d60006011848154811061202557634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611391565b91508061205d81612c1a565b915050611ed7565b50801580612091575061208e612085620f424066038d7ea4c68000612be4565b6004549061137e565b82105b156120b7576004546120ad620f424066038d7ea4c68000612be4565b9350935050509091565b90939092509050565b60185482106120cf5760185491505b601954821080159081906120ec5750601754600160a81b900460ff165b80156121025750601754600160a01b900460ff16155b801561211c57506017546001600160a01b03838116911614155b156111115761111183612153565b6000811180156121445750600354600160a01b900460ff16155b156111115761111183836121fa565b6017805460ff60a01b1916600160a01b179055600061217382600261137e565b905060006121818383611391565b90504761218d83612340565b60006121994783611391565b90506121a583826124c5565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150506017805460ff60a01b19169055505050565b600354600160a01b900460ff1615612210575050565b600061221b600a5490565b905060005b81811015610bc0576000806000612236846125fc565b50925092509250816000141561224e5750505061232e565b600383600581111561227057634e487b7160e01b600052602160045260246000fd5b141561228757612282878784876126b3565b61232a565b60018360058111156122a957634e487b7160e01b600052602160045260246000fd5b14156122bb57612282878784876126f0565b60008360058111156122dd57634e487b7160e01b600052602160045260246000fd5b14156122e85761232a565b600583600581111561230a57634e487b7160e01b600052602160045260246000fd5b141561231d576122828787848488612727565b61232a8787848488612730565b5050505b8061233881612c1a565b915050612220565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061238357634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156123d757600080fd5b505afa1580156123eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240f91906128fb565b8160018151811061243057634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260165461245691309116846127f3565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac9479061248f908590600090869030904290600401612b3c565b600060405180830381600087803b1580156124a957600080fd5b505af11580156124bd573d6000803e3d6000fd5b505050505050565b6016546124dd9030906001600160a01b0316846127f3565b601654600090819081906001600160a01b031663f305d719853088858061250c6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561256f57600080fd5b505af1158015612583573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125a89190612a42565b47601255604080518481526020810184905290810182905292955090935091507fd7f28048575eead8851d024ead087913957dfb4fd1a02b4d1573f5352a5a2be39060600160405180910390a15050505050565b600080600080600061260d866127fe565b60408051608081019091528154909190829060ff16600581111561264157634e487b7160e01b600052602160045260246000fd5b600581111561266057634e487b7160e01b600052602160045260246000fd5b8152600182015460208083019190915260028301546001600160a01b0316604080840191909152600390930154606092830152835190840151928401519390910151909991985091965090945092505050565b60006126c56103e86106da87866114d1565b905060006126d382866114d1565b6004549091506126e39082611391565b6004556124bd83836128a3565b60006127026103e86106da87866114d1565b9050600061271082866114d1565b905061271d3083836119fa565b6124bd83836128a3565b611cf385858585855b60006127426103e86106da88876114d1565b9050600061275082876114d1565b6001600160a01b0385166000908152600c602052604090205490915061277690826117f8565b6001600160a01b0385166000908152600c602090815260408083209390935560109052205460ff16156127e0576001600160a01b0384166000908152600d60205260409020546127c690836117f8565b6001600160a01b0385166000908152600d60205260409020555b6127ea83836128a3565b50505050505050565b61111183838361139d565b6000600a54821061286d5760405162461bcd60e51b815260206004820152603360248201527f4665657353657474696e67732e5f6765744665655374727563743a2046656520604482015272696e646578206f7574206f6620626f756e647360681b60648201526084016106ad565b600a828154811061288e57634e487b7160e01b600052603260045260246000fd5b90600052602060002090600402019050919050565b60006128ae836127fe565b60038101549091506128c090836117f8565b6003909101555050565b803580151581146128da57600080fd5b919050565b6000602082840312156128f0578081fd5b813561138a81612c4b565b60006020828403121561290c578081fd5b815161138a81612c4b565b60008060408385031215612929578081fd5b823561293481612c4b565b9150602083013561294481612c4b565b809150509250929050565b600080600060608486031215612963578081fd5b833561296e81612c4b565b9250602084013561297e81612c4b565b929592945050506040919091013590565b600080604083850312156129a1578182fd5b82356129ac81612c4b565b91506129ba602084016128ca565b90509250929050565b600080604083850312156129d5578182fd5b82356129e081612c4b565b946020939093013593505050565b6000602082840312156129ff578081fd5b61138a826128ca565b600060208284031215612a19578081fd5b5035919050565b60008060408385031215612a32578182fd5b823591506129ba602084016128ca565b600080600060608486031215612a56578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b81811015612a9b57858101830151858201604001528201612a7f565b81811115612aac5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f4d616e61676561626c653a2063616c6c6572206973206e6f7420746865206d616040820152643730b3b2b960d91b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612b8b5784516001600160a01b031683529383019391830191600101612b66565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612bbf57612bbf612c35565b500190565b600082612bdf57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612bfe57612bfe612c35565b500290565b600082821015612c1557612c15612c35565b500390565b6000600019821415612c2e57612c2e612c35565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146109a757600080fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a2c734d029057ec521c0486d381caee2d3f117eab434fcfcf2e9229f554d159664736f6c63430008040033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.