From 666e8136c3f4f3e620eb9513f5ccec6da9237622 Mon Sep 17 00:00:00 2001 From: Alexander Remie Date: Fri, 18 Mar 2022 16:58:50 +0100 Subject: [PATCH] allow checking contract source against known OZ source hashes --- slither/utils/oz_hashes.py | 1571 +++++++++++++++++++++++++++ slither/utils/standard_libraries.py | 12 + 2 files changed, 1583 insertions(+) create mode 100644 slither/utils/oz_hashes.py diff --git a/slither/utils/oz_hashes.py b/slither/utils/oz_hashes.py new file mode 100644 index 000000000..d0f8ff9fd --- /dev/null +++ b/slither/utils/oz_hashes.py @@ -0,0 +1,1571 @@ +# pylint: disable=too-many-lines +oz_hashes = { + "16ad4eed535bc7e7ea4d1096618d68ffe5a02287": "Bounty", + "896a88e86ba21fe176d5e3de434af62ee531b1d5": "Target", + "ab36e566a3daf2aa0a8e129c150ed868a4902891": "DayLimit", + "07684a10bdf44d974020a0370e5ed7afbe1f9e44": "ECRecovery", + "0df8b61d53724353dff7ceb4948f99f4d5d0a558": "LimitBalance", + "a034f5999f05402616da9a54ed665d6196c6adee": "MerkleProof", + "7e2f3e9543ef140fb05e6cd5b67ee85f9e5c89e8": "ReentrancyGuard", + "1b983aa0e808ccb541f22f643011ee24e9eddc1e": "CappedCrowdsale", + "f48c976b3a18769596a181adc072c3266a232166": "Crowdsale", + "fc085749b4f49f6999c5cccd50c6a8b567b0ed5d": "FinalizableCrowdsale", + "2190fe74b4df2a58266ce573a1c09a047fec8b68": "RefundVault", + "06c26f4535dea69cdec2cf94d31f3a542430f692": "RefundableCrowdsale", + "e2e8a667511fa076aa2f4721a7b0476ded68f179": "SampleCrowdsaleToken", + "618409ffc0166d51eae7474a0e65db339c1a1a48": "SampleCrowdsale", + "4893616c2a59bcc5b391a85598145327f6c9b481": "SimpleToken", + "78d8f11bc1dd500ef6aa3bf95b516facd34ae97f": "Destructible", + "7c2320f840fb8175ef0338f82488b437bccb3a2d": "Migrations", + "20954e05e6a84d9d349f36b720d20057a5849126": "Pausable", + "98656c8719e36d1e018b5e7d907f84531d0cde71": "TokenDestructible", + "77c201c932c5fd7a11e30bb970afda5a5c1a0e6c": "Math", + "dcd94e653605571a4adaef30328837552088af90": "SafeMath", + "e102f7570918afe9b8a712ec7b8cf2ce2d7ccf06": "CanReclaimToken", + "18816a398c07b658ed4f84871d8afa1132ff2ea9": "Claimable", + "a51d83ec668c67ee7e3cb6744f207d7fba110ad8": "Contactable", + "ef49ebbffe424c8b829cf8d8fe07b0bdd4b6a32a": "DelayedClaimable", + "295a28a0cc845f398fd3f73fe7d7ebd3f217efb5": "HasNoContracts", + "0695e926e394b778337e14f8bbbdce3aee6756c9": "HasNoEther", + "e0d144a37d99136b64edec4bc0a7d5f003ca4eb5": "HasNoTokens", + "70334d1b91d44591475891c4a1462711d37a8990": "NoOwner", + "4bafe87e87f2f7924cebc0f210ffc504f62479ea": "Ownable", + "9f8caf856608726e48ee86370d866088590bf374": "PullPayment", + "a586769701d35125a8281597f0187c12eebf45d8": "BasicToken", + "1938eb4e2cdedd786c42fbace059fbe4591a3c11": "BurnableToken", + "7d6c8036444ef12c4293c12f6dac7ea09b009ccd": "ERC20", + "26cac836b179301d90c2fb814eda7f46c0a185ef": "ERC20Basic", + "9414672a30d64bb82b495245b0dd47ef4f9f626c": "LimitedTransferToken", + "0774060a7337641beb9a43a8c0bdcb1c3ae145bc": "MintableToken", + "b3ce90caedd7821ec2a6f1bcbcda81637501d52b": "PausableToken", + "3af6c4bebea1014a2a35abccc63a5fcba9be70ab": "SafeERC20", + "cc3aea9e2f2110e02913b2ce811c9ed4beecf465": "StandardToken", + "fa1616bdd4888c5d16500a3e407fa001ddd75df0": "TokenTimelock", + "09c671cd62433379e237d2fc5dc311af49cf1f5c": "VestedToken", + "7762232a812e8fa5f4cc1f41d0e8c647839bcf3f": "AddressUtils", + "9adc4ade8a73cef7a0494e49b3195491f2567630": "Bounty", + "dc527f7040995e42e07446f383fd40b293814e4c": "DayLimit", + "91c4da8fd04d8dc4678a741b7a553a7fc47bfc0c": "ECRecovery", + "e362496576b5ef824429b2aa0634a04e5e13864d": "LimitBalance", + "d2ad47f4ddb62fb8bcb3f4add161aeb0f3f5a4be": "MerkleProof", + "abe9489ed9de21737a43ab9698d131e7407620f6": "ReentrancyGuard", + "76fae86d089153d66e6e8402d43da9485c2113a8": "SignatureBouncer", + "20c12a01e1c64fa836c2569bb44eb852d44c7c5c": "Crowdsale", + "22465351d15ee5cd18d91ae8ab159129d4dcfb4d": "FinalizableCrowdsale", + "9774a38be6323299d069a8756b44179c880e7c1e": "PostDeliveryCrowdsale", + "e933560cd155790112d5685ed76df0e235c780ea": "RefundableCrowdsale", + "d7910b2369b470f77e0e14605a8b061d6e2bd46d": "RefundVault", + "2661d9bc3203d658e7ed5d29a47fa66e0fdac5ba": "AllowanceCrowdsale", + "eb321ffdfe7be1efaefc8bdd9e6acb46eca221f4": "MintedCrowdsale", + "09016aac11d32d3fda430c154c180afb2fb7732d": "IncreasingPriceCrowdsale", + "1ff28b511dec3f0515c96d659e10f6ef7c47ce0b": "CappedCrowdsale", + "e789d95184e0adabe7b5b79510d3f32c9d882cd3": "IndividuallyCappedCrowdsale", + "d062ebe0b22232bb1d8ac84cf09f10c3cbea5618": "TimedCrowdsale", + "7d396a8c6ff432ad5e51697af40baa20dbe97603": "WhitelistedCrowdsale", + "9e1ceee37e77060c7b13a87909cac0902e2ad81e": "SampleCrowdsaleToken", + "b1a63d12b5f88f0b4d8d0283aabcb052b03b9a6f": "SampleCrowdsale", + "4ffdf78526d08ef08faa67476631359f1f34d39c": "SimpleSavingsWallet", + "848e77f0c272c709d7df601a0a7dff1be871aa47": "SimpleToken", + "149e2bf2bf05ac0417a92de826b691e605375f87": "Destructible", + "9ec21dbeba82d8ffbb547ec3efc63e946e403433": "Pausable", + "0636e347e26d51691bbe203f326ed3a81c14893b": "TokenDestructible", + "8c43814c5d4144e7241ad3acf036831f72626f53": "Math", + "dcb0461fc135342c8335ec971c0fce948749fcad": "SafeMath", + "3c84335582613c4f61db5e2dba4a5bdf9a32647e": "AllowanceCrowdsaleImpl", + "f27124a3561a89f719110813c710df74b8852455": "BasicTokenMock", + "882c0e313871f9bdb3ade123cd21a06e80b9687b": "SignatureBouncerMock", + "767d1b9bea360813c53f074339dab44dba2be3e1": "BurnableTokenMock", + "c06b8492aa76d2b3e863e9cc21e56ea9220b6725": "CappedCrowdsaleImpl", + "5e4b5478ed4656e3e83cae78eeddca3ffdc77ce7": "DayLimitMock", + "c07480985ff1aef7516290b6e1c6eb0f5f428379": "DetailedERC20Mock", + "01478e8bf733ffd6b1f847f5406b6225c8b02f1c": "ECRecoveryMock", + "17b3d5a66300e613b33d994b29afae7826d66b15": "ERC223ContractInterface", + "02100ab471369f65ef7a811c4979da275426f021": "ERC223TokenMock", + "ed7ae160a58372fd8f7fd58b4138ff029dd27df1": "ERC721BasicTokenMock", + "c6c6e961e36c39df202768b8fd18f1f76cefd1ff": "ERC721ReceiverMock", + "400593f520c28ce9b68fb12bd4dd3f869f570f39": "ERC721TokenMock", + "2442a363e65369915bcde718b986a2143220fbfd": "ERC827TokenMock", + "59841830db8f308b717f22514cbc406dff101d0f": "FinalizableCrowdsaleImpl", + "2022504c8205da3c77517ffbc24ec595065050e0": "ForceEther", + "f0aac4a39cf1687f94c084250f2aadb75f9474b2": "HasNoEtherTest", + "aba043594e0651956d0ae8be33625f29883a0503": "IncreasingPriceCrowdsaleImpl", + "e04e7327bfe0b1c52d1c6ff340837d7752c6a1ef": "IndividuallyCappedCrowdsaleImpl", + "3860cb9cc1bcc675eabfc3fc498c012f97956f89": "InsecureTargetMock", + "0ae95f3ba71966844f02df90764349726fa5faa3": "InsecureTargetBounty", + "056f7fb47b260ca924e77d4bf345dcf67e62b732": "LimitBalanceMock", + "3c0eb7e3a1376c180c4afc060e6b02ff2dc0a12a": "MathMock", + "dc1cbbcf7506800281d7264f137d2d20e30c980a": "MerkleProofWrapper", + "bba58d62208bcee8307170a5dc002d5f0c0c1d2d": "MessageHelper", + "f5c9e9e324b4d6f1ef41008850e5dbb0e525c234": "MintedCrowdsaleImpl", + "8d93ca1addadb71893e2016bfa26db40fc2f4a2f": "PausableMock", + "36659de8c778859e75e98389e40f86261ca0becf": "PausableTokenMock", + "a297f3f1391501f49a3d8bb132e158faaa7249b6": "PostDeliveryCrowdsaleImpl", + "2695bb63d6fc96d972146f159cb17d2bdb7f1cd7": "PullPaymentMock", + "b087e928c74ce7d5adc14e9b484bb7de22f268d4": "RBACMock", + "0bddfeb265ff29d4c3d6ca38852747a1e21318ad": "ReentrancyAttack", + "a9a47c2b37110ab4c5a96948b848e823abb391b9": "ReentrancyMock", + "585bffaaba0b7bb6fd37817b94d373ec54c4d2c7": "RefundableCrowdsaleImpl", + "30d70d64a1416b8cead631c93b84ed113b5e18d7": "ERC20FailingMock", + "ae5f3e2f0996d8b0445e4890701f35389fd565c5": "ERC20SucceedingMock", + "b5703426566223d0c7e0079a8aded144192c330d": "SafeERC20Helper", + "378b31ac238e143f5f752834203492dd3980522f": "SafeMathMock", + "2f487c8b59cc0cb91ea2ee7aa7a2b7b9bbe22a02": "SecureTargetMock", + "78c3a5e7b0d5b58efe770c54a73b42bf1d242d9b": "SecureTargetBounty", + "c4cfaf59a49f506e31c3acd8d3ae8624613c2044": "StandardBurnableTokenMock", + "5a3481b0e8029747c9bf839d7a12b7f831513ba7": "StandardTokenMock", + "eded4e7da3e73140ba6fd5a80217c562c5922c47": "TimedCrowdsaleImpl", + "b8eaff3a88d6c9b87a050ae4e3caf8eb39c508f3": "WhitelistMock", + "2e295e4571f9f017638cd4b9e013ce502d4f2759": "WhitelistedCrowdsaleImpl", + "dd349689f6d497b6d60d18af598981c0c5ea5c43": "Claimable", + "b4c914658062b263ddd7bbad7a303f9aadb8edda": "Contactable", + "379f3940245b3bf07e3da0ba8bacb31a7b71837a": "DelayedClaimable", + "04a144226212c8093a72edac65132dfebf5cbc34": "HasNoEther", + "e581fe4461bda93a810cf8f56e985d7b17e5c57c": "HasNoTokens", + "adca50311c8c516281fae62e7bf8711b247dd1fe": "Heritable", + "bff7a458838d22f59d77dcb1e4c8f71ad9e6c6ad": "Ownable", + "b92612ef15ec3b9d6df30a8f7becdc945bde3d4b": "Whitelist", + "c9ee90b58cfe7db8fb2093a5dc6ac901e3560376": "RBAC", + "d07bdfe9e5c1197eaaeb8db19a60b2d7c8b08a88": "RBACWithAdmin", + "3bf165712333a39e76e159a3406fa49517afe215": "Roles", + "7e998f3b5ecb8820313c1bb24dfb0d6d99ace954": "PullPayment", + "74d3dda7f213a09504a9a9291a40a3dcd8365fbd": "SplitPayment", + "819441e9e704135b09b0b1f72db902159a737913": "BasicToken", + "27dea92802e715fa1863d34fdd4d5c9c07f2447a": "BurnableToken", + "cddbea62966149d6c6e6709ab8568b3c4f0ad494": "CappedToken", + "cf6e58a034f1418d57a0f1952afb136e82102f94": "DetailedERC20", + "8d2f3828797c3e84f29d2c8cdb6ed25ee69511f6": "ERC20", + "953db1b3480bf572e44ad6fa898f6c6bf2eee57c": "ERC20Basic", + "241b903da1f922131be0e2bdf10c4306082848ea": "MintableToken", + "b34956dcce7a77bd57b4fad7545ab5988bf8dbf1": "SafeERC20", + "de2af31e6fa1013b6f867fa12ccaa7696d9442d7": "StandardBurnableToken", + "50589279d9b57e6c0ad23388176dda20dc4c491e": "StandardToken", + "be03e255bc582a956bff757a7e1a8bad8bdc3361": "TokenTimelock", + "59d01319278f7765dd0e242d02c1ca82e6ba091a": "TokenVesting", + "012926dd9f55e8dfe9776b9f1df62546bca5ecc1": "DeprecatedERC721", + "30067e830dea40199578d0debf1d3d2c85b310df": "ERC721Enumerable", + "4a83cf38bff15fc12b16638f7844fc0f8980f9f3": "ERC721Metadata", + "2e8afdc67c556a384622e8f1518264a445a92b57": "ERC721", + "bb0256dd101e575fe0c2371482723f8e2c32c087": "ERC721Basic", + "a8eecb22ae520032234d75016dfcf803ba6fba82": "ERC721BasicToken", + "5ce55c0eca12e6589b4ccef66917574890fdf1af": "ERC721Holder", + "4646738364802bb2215ef7f4062cdc03bc33bc33": "ERC721Receiver", + "24749e32f3f9f241cbf61755cd27c4e1c33ec6ef": "ERC721Token", + "34e294455d0b633a92c85294e33391da976dfff2": "ERC827", + "5646047a82bc6b598f782b9ecfbe0ef37b1bde4b": "ERC827Token", + "ba598a71f86f1d7453d8d921680d7bd75d34a15d": "SignatureBouncer", + "af99a0bc53580c8d654923048cec891e61e24a6b": "Pausable", + "eaf939ca050feaf102dbd9835b6a67eb4b51e0b9": "SignatureBouncerMock", + "c998cfc7431ac0d0c66f70f0982b3e8659c6bfb9": "DetailedERC20Mock", + "a364bd1d78dd9528eb357f93c190db2652cbbd5c": "ERC721TokenMock", + "8b07a36751ac1e354baf93be047c852143a57119": "PausableMock", + "70b936df444e167029f22e8ef48b007bbe37d544": "PausableTokenMock", + "dc38f5ba7ca5eb5a8a85b7b0e9d8288a1e70e41d": "RBACMock", + "d1f6822833daab2b5c6521ee6aacc6303b946095": "ERC20FailingMock", + "87310193da0df53c2be5ff230d2704011a0806a5": "ERC20SucceedingMock", + "d1dd6a62116d8605377f70bb5de6f2c70ced3d81": "Ownable", + "be72653e125b02bb575d00a9a8db2b40aaa6bc9f": "RBACWithAdmin", + "7c353bddb33d9c15e9aebfb843a1e5d63645f267": "SplitPayment", + "a0b88b77efc2a12f98310d83fa335fa5564cca08": "DetailedERC20", + "feb56e7c42453ae5639cbbcae4b8d8e5c59447c2": "DetailedMintableToken", + "cea5d86a5cdca1d9dd226d199d740a3d3cd32d07": "DetailedPremintedToken", + "6bed3b69e3391bded476aabdd2c5f861819e73f8": "MintableToken", + "46ebd57a637d411818418140d0aa63dbf1cc2246": "PausableToken", + "5cc2a3e344df53e317dbe38e76ac94695a38e9e0": "TokenTimelock", + "3e7d8f34659881bc3b2ca951668372a47f79193d": "TokenVesting", + "e197b8a76f56af18f47f67a89005390e3bd55694": "ERC721Token", + "1b53bd5e5472c4a818e266b64d0f9e6fd49857cb": "MintableERC721Token", + "ec78d7ca528901ef6910c0f44ab705b870742c90": "Migratable", + "fc413be3907db5515f084a8fff63bcc8c5635400": "AddressUtils", + "31c153b4c6b900b16219cae11feef97ce4076143": "LimitBalance", + "962b05e5b0824201f5aedc58501637db05b154a3": "MerkleProof", + "b08f9ebec900e55ba7b20624dad0097bc243c12a": "Crowdsale", + "5124365778e24aa55c9e06bdf26149d4310d95d0": "PostDeliveryCrowdsale", + "57737cab20c3fada86461ebe4df4b14d7d515b7a": "RefundableCrowdsale", + "1fdb50fd86681dfa181c490bcdef28171be6e6f3": "RefundVault", + "cde035237ef2f07d69f3756cd9d1305cda39f749": "AllowanceCrowdsale", + "e7b6247a1c2be98eb8a1c56486c3f17dc60b98ed": "MintedCrowdsale", + "e318ca5d228fcbbd844491efd5fee829e32c53ac": "IncreasingPriceCrowdsale", + "e9b16e3a549af2c8cd56090702d269b432a80283": "CappedCrowdsale", + "bdaaf0e469b346ce4d51c3fe15d14a4b02bc990e": "IndividuallyCappedCrowdsale", + "eff0fd34b36c459c2d98f5a04a7b04fff08674e0": "TimedCrowdsale", + "8a1c7e2eda5d6444d767db6e960beb998e94e523": "WhitelistedCrowdsale", + "35690875b56b9ef06dc5c82640a067bd9132901c": "RBACWithAdmin", + "c5dfbb1d2f9641afa4f031f2f600f697e9a77b05": "SampleCrowdsaleToken", + "9f752a8cbc435f39d6c36760d3fff29d99d079c4": "SampleCrowdsale", + "edca9f3d7957cef23f6f3209af3eee94ea523194": "SimpleSavingsWallet", + "f844de78dd748876a43a33fa9a6caccbe3fb511a": "SimpleToken", + "0c02b9e264482b9501239880d508d2fc45a921c7": "Destructible", + "d66ff49a491298f7d0aadc302cce5b80e20397c1": "TokenDestructible", + "ee4d3ec37306122ceeec79f60680a632176509b0": "SafeMath", + "1e3619093d26ad06a7fd448a3e4db543de00d219": "AllowanceCrowdsaleImpl", + "565c175208220601b83adfeaca95bb41efe016c3": "BasicTokenMock", + "635c6422d4af70e8ffe48d54148f457329870eaa": "BurnableTokenMock", + "e7177cb6bde32587072093fece1269add34133cc": "CappedCrowdsaleImpl", + "63f108c805f519b16c8db619e7274d4937aad376": "DetailedERC20Mock", + "fb554453f065e88a35f0d412de76fe4e83686366": "ERC223TokenMock", + "e288225fc414795b7697952164f0e2a02fb89e97": "ERC721ReceiverMock", + "774d1a89a0f8fbb420f6a6586b9328e6853d5f7e": "ERC721TokenMock", + "8d29283dd9ef9bde0001ebf6a7c765a6af12bc68": "ERC827TokenMock", + "7449c745206ac15d5192ba7a16bed39819a50113": "FinalizableCrowdsaleImpl", + "60704a7554b0ad4ee9d0626bcbbadbac87d8d270": "ForceEther", + "b339de538541166e1bf3390a1b07fef171e03b00": "HasNoEtherTest", + "80198840976a3fdcdcf2fa5a8d9454b1e39004de": "IncreasingPriceCrowdsaleImpl", + "9628906154701c6e5306e6da622b4db92cc6f6ec": "IndividuallyCappedCrowdsaleImpl", + "cd5924adb9ef87e99bcd94ae9ae57b7a6897b1e0": "MerkleProofWrapper", + "1f6d4d30c38abd953fca5a89b5193e10df9d1751": "MessageHelper", + "0a1706f232f69f32bf2954b566c7c2c14d69392d": "MintedCrowdsaleImpl", + "c684d5ce1dd245aa8c912952594a373f977c76e7": "PausableMock", + "3be1ec9b4f338c96d86b894ba8ceb846fb647c23": "PausableTokenMock", + "b28308433da65d22476951196f1caeb41f26cf33": "PostDeliveryCrowdsaleImpl", + "559fa0817335651783601a27dde5faf21fc686b0": "PullPaymentMock", + "8107d16875287a7046493571b10dd5eab0d97976": "RBACMock", + "07e16eeb1ec64a6995695ed1816a95243000f8a8": "ReentrancyMock", + "f0bd68476f483619630828a8419d39ac57d0f49b": "RefundableCrowdsaleImpl", + "2b40af803f1243f59805beb75d2afadf5fdb84a7": "ERC20SucceedingMock", + "3c6b59e930edaae5e84ee9338017b301d7fc12b4": "SafeERC20Helper", + "695a35876abcaf66f60903ec69331e522a9001f8": "StandardBurnableTokenMock", + "07eb9f220d92b3b0a026d03abe31782e18b8a3aa": "StandardTokenMock", + "13a503e0871b386c82691937b1cdca7542f35bbd": "TimedCrowdsaleImpl", + "f401c66a3d208ecf85040784b4eb8bb14e20d0e7": "WhitelistedCrowdsaleImpl", + "93407117e15d8a7a63deaf473df32c73518a30ea": "HasNoEther", + "baa2d89bbdb2edb622a4c9c1fdc23a6642d899c4": "Heritable", + "211a4479365db5f0eaa4377da409e42db4a25b52": "Ownable", + "ff57312417ac31bd0332308e65ef44f4d4062111": "Superuser", + "2db796d1517717fca1dd3983832f3a45f390ab55": "Whitelist", + "2ee8d28f85d2697054414783e221260b9a7f6c97": "SplitPayment", + "cd31a5ef466eeb34195d244e35a3c87b253e9788": "CappedToken", + "405f965e67819b1bd2a94f8c121e66fccb198b8d": "DetailedERC20", + "1fafc8de20663f8ceaa7386a89b7c9e5dce82a3f": "ERC20", + "dfac014d93a70a21a3b8b97e3d1b57efd14fe545": "MintableToken", + "c9027d7b556e7e687bec0304ffaecf1d474eabfa": "PausableToken", + "968207fdc2ce386ab24cac2101d8d0e7f9eb7417": "RBACMintableToken", + "87f48da5d43ba18ca15d7347a5626cc37cf01dac": "SafeERC20", + "ab442d8dd4ecf1d472d9dce47ea1157c27d0a44e": "StandardToken", + "075e8adaeaed593aad3e14ca9820df4e55e364e2": "TokenTimelock", + "1fcb0b4c52970b0f395e2da5bc6595daa71daff2": "TokenVesting", + "ef375977e93dc6aeae3256bc5a0c0ed23a734df8": "ERC721Enumerable", + "15405a8487b11120873f75247b1ab5461f1ed8c7": "ERC721Basic", + "4a3380e9127e514a0630ea0656facdebfe716acc": "ERC721BasicToken", + "1c47823ad3c15275bfd34a4c1a66525fca5454bd": "ERC721Receiver", + "95a8f9396ea8cbc14f6cca9a8b6492fbf2437f18": "ERC721Token", + "9fcc86aa8a8ae5217bd10cce1a954c5cb7caac82": "ERC827", + "68b878162744df8ddb16479dd790341cafce251f": "ERC827Token", + "9c4ab3267a3dc0ce51b3baee28fae5006a3be725": "AddressUtils", + "452fe8fdaa7d15bbe79e9ab641f3307b1bece216": "Bounty", + "4b73fc34d4fe601e4c4065e08ec11fc8c3a1ad18": "ECRecovery", + "19ced19ab2d8edf9fe46282e242d8b52a09f7bd6": "MerkleProof", + "4e1211d90f62f0b3d59bb318ac744ac95e6f6317": "SignatureBouncer", + "48d836f14524ef04eccac96647887425545781c0": "Whitelist", + "ee718ffb3fe3609d882556704f41c62311effe27": "Crowdsale", + "6bea0f0c1a89ad2622afba8f47a0af62c2799629": "RefundableCrowdsale", + "8da34d0e919bf9d1a2b1da81e797a6c2c1ed60b4": "AllowanceCrowdsale", + "8bf8cb311ea7d15c8ddaf54454e60ce44a60bdf4": "WhitelistedCrowdsale", + "a1419a713627dbb2ffea8a68c616e0a051f1b606": "SimpleSavingsWallet", + "0b8d54f5efc4de837b7dd93996db086849cb14da": "SimpleToken", + "a7e1df3805ef75dc41a754ae5546f06fec8cb03f": "ERC165", + "5e7625321628749b31d4c4cc45e2d90b556d6409": "SupportsInterfaceWithLookup", + "c1351bcccd9852179bfd81b241caaa056de4be3b": "SignatureBouncerMock", + "cd6add9c23aeffa94971107e162281b260df91dd": "ConditionalEscrowMock", + "5b43908bda2ed2a2abd97bdc0c726f4e0a994686": "ERC20WithMetadataMock", + "afd20cd7880b7afcab66a1177bea6b85ba76ae80": "ERC721ReceiverMock", + "a53e6a8705e545971a03677411de3e3e2fa21104": "PullPaymentMock", + "66ac45d59afe1d96a3512f788c9f1742c8d6948e": "RBACCappedTokenMock", + "65022b9fefebb8d6c04e9d7c6869843a504cb607": "ReentrancyAttack", + "429c0d0af89af3652ab701919da11ce73a98d37d": "ReentrancyMock", + "b956eb0e6216174795f2ee06204c7da650e845b8": "SafeERC20Helper", + "c2ef9875134777ad5fb22ebdc123e383caafbd19": "SupportsInterfaceWithLookupMock", + "aaeffe18854cb829f1a400a2d89f0b625a5b345d": "WhitelistMock", + "ed2e1b404135b09fe5f0d79f95dbe33b78b587f0": "WhitelistedCrowdsaleImpl", + "319335756a88f45e8684a029ca1c8bc0a311da2a": "HasNoEther", + "5527c4a0bee8b4bb21e2b8f3aef283d724dc62f6": "Heritable", + "d2e619214bc724aeb273d48e420db453b3ffe31d": "Ownable", + "4ace23c2264121b28731efcf28cd3552e6fca588": "RBAC", + "2bfe51db8ee661f769d98f9ae45361a9b8f6e0ec": "ConditionalEscrow", + "627f53ee54bf4c94d1cad825b7ae55998a65bc9d": "Escrow", + "78f1f3f29386d9b09253ca23087eae02c2efedcd": "PullPayment", + "142c5a368e011d0578205a2fb5f776b4937605df": "RefundEscrow", + "392ccebdf4b62992e7460dc3f65064cb5d042a45": "ERC20TokenMetadata", + "4a35664713c0831432f0f44b72df33f7eed2248a": "ERC20WithMetadata", + "38c60461bba3a6795a0459e3de0c035ee1d1a53e": "BasicToken", + "917071f9daeb837c90acc2222568398b048b95f6": "CappedToken", + "2b6593f6ad447e65d848bc4bfec26e9a8b34557e": "StandardToken", + "3e6344b21675b204f35c12801cea0dfe18d4d298": "ERC721Metadata", + "ed3cce364a25058da857c468423935a1b5fde50d": "ERC721Basic", + "1a45edece56696e721cddc98e8f6703a1d8bbf9b": "ERC721BasicToken", + "cb15d8841ffa1b27b982e31901772957f6123aad": "ERC721Holder", + "715d07f7f060007413defdb6fd5c6934486f34f7": "ERC721Receiver", + "0144a17b7f1ed3cd662df4069296e2e1c32c8dd8": "ERC721Token", + "0450b83815a1e26a02b54c4233ac7aa4cf053ea9": "AddressUtils", + "d583f3e45f2c243e55ee47a107a29bb9e972fe68": "AutoIncrementing", + "a8144e43cf0c0c8b0bb54dcedb0531639e4d00d8": "Bounty", + "d3f87956fa5f05f54106216a9c4a8079ba8d086a": "ECRecovery", + "094905728bfb1ba7462642ae7ce245c709717531": "MerkleProof", + "3cb4bc1e9a9a34a46858922cba2f0af59d767054": "ReentrancyGuard", + "c00a7c93b18d897e6ebf868e0b093ed6ace719dd": "SignatureBouncer", + "a1b464a6a3a1bbbd2fe33b5c231eba11236fa92e": "Whitelist", + "12a2f840294d267c6950a1347b726222b416ed46": "RBAC", + "50dd834b3d24a0bab1361fb858cbc51cf67ccbcf": "Roles", + "e11c891ecfb38b3bc7f4cf1363aae79feb99cf12": "Crowdsale", + "8b5f8bc529ee24fd54869c1d3dcfc18990a59548": "FinalizableCrowdsale", + "2b6997bc5d0b3be1d0e2c1869353383a2fbd4993": "MintedCrowdsale", + "59ed05ce0be380f62d4a3999c32428497594e327": "IncreasingPriceCrowdsale", + "8a8a532f2e3ea4c08ff27af946fe20298a1e45ae": "IndividuallyCappedCrowdsale", + "8a9c055e3d1349a664caa802eb204cd198a0f539": "WhitelistedCrowdsale", + "230848a3836ccef1f4430b0bf203cd21f8052291": "RBACWithAdmin", + "0ce489b153032a7ee90ed0eddca2c52daef1abf3": "SimpleSavingsWallet", + "1a2d42f20aef6df99897db234b801340a423450c": "SimpleToken", + "90d9d40b3412f59732a2bb622a88a4bc36f6b821": "SupportsInterfaceWithLookup", + "2321441ae68a4e14b2306c7575958449a3c29b98": "Destructible", + "ad31f71ee52649c94cb438200fd1c1ed08094bf5": "Pausable", + "53f24a0ac15b157dbbc3f61d5c1408998c1db0ef": "TokenDestructible", + "2ff3848281b684d98af5b73bd62d933ad9795e1b": "Math", + "5b9701e018c1d6a97bc507e5c00433246ac7f025": "SafeMath", + "a03dbbc1c4f0ae5e64d672d84690dc48152e2650": "AutoIncrementingImpl", + "977f8bdafbecf36f639f00746a506a0665e14ee8": "BasicTokenMock", + "68cd257584aa39dab35cc08947cb4aabe9ce852f": "SignatureBouncerMock", + "f08f0cd0d441234b1b15fa1cc1aeed01d651523c": "BurnableTokenMock", + "482f4acdd6c3523e078f68f3905f8e9c0bd96f85": "DestructibleMock", + "e5b1031669b3bfd06fb12626a47888243c07c469": "ECRecoveryMock", + "d439e3f9b056d304aba764b34c2623b4600c55fb": "ERC20WithMetadataMock", + "22f1d1e0932e3558eef115f3e867619c135b5a26": "ERC223TokenMock", + "c37afaa6e4b7ab6775e3c9b3b2c1b848ee3e0548": "ERC721TokenMock", + "fa28e9b84c25de3655f8068c07f5ae030f00705c": "MathMock", + "41437f07fa0866525684129c46b107cf2a28d9dc": "MessageHelper", + "e781977728414ecb0dc389712cbaea2f3c1b2401": "PausableTokenMock", + "c5cbc9122a21b464aec57faf3e8b783f455f3175": "PullPaymentMock", + "10618dab995da34a38ef8e7d53b069a7b0bda621": "RBACCappedTokenMock", + "9fae112623b416c1c3a847d6de92967854f4e3ba": "RBACMock", + "84992bb16c0aa52e586c7ce43af9f8ef80d71382": "ReentrancyAttack", + "ec8922620cd3664ea34d9295aa85c64b77b61c0c": "ReentrancyMock", + "2cddebeab16c4e11f6457eae79615514d0467224": "SafeMathMock", + "ed5496d88df044b594a28d8b4e2b02aa8c5c98a9": "StandardBurnableTokenMock", + "4b79de8b6a7b868ac3db16c36c7caf1511dc4e9c": "StandardTokenMock", + "207467653a042b1e3f796be82daa00deae4be4e0": "WhitelistMock", + "3b64fac09338834e7f31e4a94857c405644ad27a": "CanReclaimToken", + "39458b20c5ba02b89578bdb4d0569fdedbb89449": "Claimable", + "30b2eb1b65dfd72e93c6370eec1b66cbc77514b6": "Contactable", + "d08d45bef636d729b4781cee2671f02dfc65cd46": "DelayedClaimable", + "733f7047e97a7426847cbc4176463ee020cf48d6": "HasNoContracts", + "4a4e894cd3cd3cfa4dcbcbd9568f81d20cd4e307": "HasNoEther", + "b025cfaf6f8e5da5efafe9883f25f18bab015a1f": "HasNoTokens", + "98a5d657fe6eb93bcdb660880496f6c163e654c1": "Heritable", + "8d77727ba855420961ee128de2676fec22402a03": "SplitPayment", + "55799f56ada0b8e0bcc75ecce38851eeb1332d8a": "ERC20WithMetadata", + "3c34d6a7f6c127303531d7e54e94a47fe0e30e82": "BasicToken", + "c784fa49f4c22ac28509c8b0d54381eabcc00a99": "ERC20", + "d89b847b33cf7f9529f426c6ed57e4b12cadda40": "ERC20Basic", + "c992e0acf64fafaea8a3158d8d80b84e22b3aaca": "MintableToken", + "bec3d2b20fa3b24ef5ac434c4a01b47b1e64a134": "RBACMintableToken", + "60e42b733ad56c03b8addc0df215791b1338c01e": "SafeERC20", + "ee8d24c22c925406ad22c22adab9654866eafdf3": "StandardToken", + "28a8c7bb0a04847910d3f9eead16d6d449620534": "TokenTimelock", + "1d8a3c508c18473083cb5db9961a36ba1a7f796e": "TokenVesting", + "c29ab0fd5418aa6c45a6e82f4d5a4f1477241875": "ERC721Basic", + "40d61fc659d2cba425f99f5b2656eb37b35731a4": "ERC721BasicToken", + "bb10ec6ee3cdd5386ecfd6de333f1eeb6a377689": "ERC721Holder", + "950c07b39c3ca854d94e48357f5d453e4c9c1965": "ERC721Receiver", + "6a9692e0a456886959918a48694dcd3dcb8baf5f": "ERC721Token", + "f0a61efe61df17f5559adaead1964139182d7dbf": "Roles", + "0d6fbe8089bfed5e4961f8bc56d5c8fb7be2dbda": "CapperRole", + "c7189a4af9a64378f15e69b14fc8e8b9cf99779a": "MinterRole", + "61a08e1edc53903eaeda23582b34825c0a67d23c": "PauserRole", + "d775bbc48440cc258eaa96091fcb81fa08bad123": "SignerRole", + "de16a5f2763080c0e057578a3cca2c570af9d066": "Crowdsale", + "567baa80771bce105326a8b76f150738e6a10db3": "FinalizableCrowdsale", + "ffd73415ed9b47f97e48f5b42212bb055b4d21ed": "PostDeliveryCrowdsale", + "ab93b46587fb58c1adb6cbd580ca17412917b74e": "RefundableCrowdsale", + "a3a1fa663a64dda4b8c95f50c518bad87f75541e": "AllowanceCrowdsale", + "656d0767acf97048298609648350fd1b019442a7": "MintedCrowdsale", + "9ab95e8d5b012575e490704b512ce4928dbee629": "IncreasingPriceCrowdsale", + "41f26f62f9f5227b1b6dbf65a6196c226e0939c8": "CappedCrowdsale", + "b8bd1ce8e8a33223abedb3548de7c2f989969ebc": "IndividuallyCappedCrowdsale", + "7b2a6e8e9aa71fb6a5d28b20399b0f5dccbd5463": "TimedCrowdsale", + "e6060cd66b2d3908f948ae9b850e85c3464ea305": "ECDSA", + "0260526f527ee9224774358021b9859015296518": "MerkleProof", + "1b7e98ea211e7445e5f678fa148ea775af49b6e1": "Counter", + "5be5fa4c91b2869c02f52a199e21be5806044560": "ERC20TokenMetadata", + "d769c77787738e2e01649f5b5b943fb06ed9b8a9": "ERC20WithMetadata", + "423800580427804d9eca8b706c43dc0297e37614": "ERC20Migrator", + "8d7f569e100340e8ba17eaedc939ff68b406b05e": "SignatureBouncer", + "b66a976d5f147079fb9c7f0a12415e008f585598": "TokenVesting", + "3f9165306b2f53880ed5096af1b4e74db56da9bf": "SampleCrowdsaleToken", + "1265d4f6bf6767e10033e733858ee6fa32a9073c": "SampleCrowdsale", + "3c7f94391a02d5dc6f8f262ec96b3bc2a4b25640": "SimpleToken", + "713380dc6ccc9d47f8d31a25eb0e446ebc4b4863": "ERC165", + "c281f8016ab3d891630a35bd07f11dff97431234": "ERC165Checker", + "1d4d0241d585c68fb08c1599437a4eea11eeab02": "IERC165", + "313e8327db21cc8aa166fe5721eb99a46e4fa19c": "Pausable", + "3d6ac03389ed6c835e26b7ebd8cd6f5bbc37934a": "Math", + "8580d3e0df2d45ed48cbd99d42c0934038129cf7": "SafeMath", + "113210a137c1be5187dcb3918a2a521d63f540cf": "AddressImpl", + "e09a6efec62a3a1d426fcf5bf0a6ef150cadb36d": "AllowanceCrowdsaleImpl", + "34f5dc1d6acd84e2efeba46c180527f251dadcca": "ArraysImpl", + "5fe750839b60d2691dfc55d926090028b5003043": "CappedCrowdsaleImpl", + "39412da7b5fdc81977acbda550e8dc71f6dba41b": "CapperRoleMock", + "717e4d2b812a14a6c4d5658cb94dcc835a0af6f9": "ConditionalEscrowMock", + "85e956ec45ece826f1c53505c1f035f3329fe0ad": "CounterImpl", + "7ab9fe5373ce944504f2893349ea086b216b71a8": "CrowdsaleMock", + "c321c20499e195867282851da42f2ccbbdb96167": "ERC20DetailedMock", + "5e0bcabbb2cfd18eb2d43ff6fd8d8e20dbeeb019": "ECDSAMock", + "a5da195613c182f94167d833dec5c7d4da0b5ba7": "SupportsInterfaceWithLookupMock", + "bc1a4e4cfd066ef11bc6e2465ddec0f3fd4d51c4": "ERC165InterfacesSupported", + "29cd8653e4b4504f0999a2454d9abf1f945de8f9": "ERC165NotSupported", + "ae16304dfc91c51729a425eaf772ae8d08593dae": "ERC165CheckerMock", + "aea815c696fff49c7fc52185b0523a33f7371b49": "ERC165Mock", + "b7b9d98b25d14185d4e3c2986c7a5a39b1f0781d": "ERC20BurnableMock", + "2399138dd71e45eaa2b5496aa7c751e39304ff91": "ERC20MintableMock", + "069f9a6dfd87e2586b4fab42ca29e826310646ea": "ERC20Mock", + "a5c6bf38e0fa04c8d470478a4bb8a3076e00e6e0": "ERC20PausableMock", + "9a8f6b3985ad17fe0cadbda553573df4e4731e7e": "ERC20WithMetadataMock", + "947e9e69d2016cebb10ee296f0f6495090671a21": "ERC721FullMock", + "3ca707c71f9022105f61b352c598c256703178f2": "ERC721MintableBurnableImpl", + "7c3cb25da3236a7c5738e31d410df75d16af096c": "ERC721Mock", + "cb9a0e0a90469cd5b4e5aca0a818330f486bc3f9": "ERC721PausableMock", + "13b19933bdd88840f5a617e14c9d736546ea8839": "ERC721ReceiverMock", + "53bfe5d6b4368228e985c1fe3f02b8534416b3a0": "EventEmitter", + "7057eb7b10d45a631cb5f442fc76bb7d5407a901": "FinalizableCrowdsaleImpl", + "2c959d10bff6c2909017efd20dc0e347da94e219": "IncreasingPriceCrowdsaleImpl", + "4a383b44bd773fe5ed6e84ff12070f60603c1eca": "IndividuallyCappedCrowdsaleImpl", + "15f79f51354210f3bf40a1555bd9e0f479292474": "MathMock", + "f1291dc03b8c8f52ebc9ebda49c5ec933f050fa2": "MerkleProofWrapper", + "f1cfdc773653bf69f5c277a60d81abd46029bebd": "MintedCrowdsaleImpl", + "cedf354f18ea2894c41fb93c79a08d07051846c4": "MinterRoleMock", + "43a5ef129162556fd38e9c4175c7dcbcf3213d22": "OwnableMock", + "59b3c7740b08088fb10e47d0d86fb6b7312e269a": "PausableMock", + "d2b11cbf3fca7f65ac31170f6e1533b639486478": "PauserRoleMock", + "4c25587eb2479ee3623ae6e168e3edf3f51914b7": "PostDeliveryCrowdsaleImpl", + "dc38502622bd92737566c51aba07ec48ed2c02ac": "PullPaymentMock", + "1c605d2812687edd646a5fde7d2fe7ccda137edb": "RefundableCrowdsaleImpl", + "03dfbef44fe5a4a75c99a3e995675f027f15b2d6": "RolesMock", + "938a3b0db268f2cefb5b7eb3ed792308f5865027": "ERC20FailingMock", + "45d60ab40be79c18dcb7a111ab02614c3e47db37": "ERC20SucceedingMock", + "2e88c135c98b395714739991d9072bdaf48b7cf0": "SafeERC20Helper", + "0dc70ec0c9017ae55f65d3473d5a44f0c093dcab": "SafeMathMock", + "337c1f8e999806aed78498d4372754b2344ccb2d": "SecondaryMock", + "3f228f7bf41c099970f6748488b9cd7d00afe7f6": "SignatureBouncerMock", + "caf3459749bb0264fa5a5d0a07f413f6991e0c41": "SignerRoleMock", + "a2df662c3e2a73f196b5067859545a352db2bdac": "TimedCrowdsaleImpl", + "e2ca5cd4923928c9f46de8e2e7df82ba01585738": "Ownable", + "a6c503a46f2f91f5fb01793e96c7cb9c5363069e": "Secondary", + "bb8f25ed8686742450daf6ba9b7cf99a2d20dacd": "PaymentSplitter", + "52b717d273b5bfb68c8630175990354fc172b4e6": "PullPayment", + "186ae2534c331ef59b6a86efc4a02d3b41cf1c8d": "ConditionalEscrow", + "e2af959beebe03963562c8e06b5eddbfe4e8b750": "Escrow", + "284f716f2501cfb02bee9357adc4c1eb840b0ac0": "RefundEscrow", + "8235160a08bafe5bcafad41567e3229bbc331839": "ERC20", + "4a97e9cbe78ad401ec19e46d114c71ea6f6f3d14": "ERC20Burnable", + "c098a863a8b795e46bd3c055ebf944190443f2be": "ERC20Capped", + "9dc5cc5b708cd1822f27baee4bc9c7d5f1b15d15": "ERC20Detailed", + "0222ab47eca4f760dd21963f230a5fb803c0b4db": "ERC20Mintable", + "23c0bd7b456d222b9d9625220eff56887fcff2ff": "ERC20Pausable", + "fc05cf3f16e6ed0739b635d0b79e115d53ab4d76": "IERC20", + "f05d94772232c941ce0bba7c06a494b3a0b0a217": "SafeERC20", + "5eba5fb2bcd1248ec673a99ce57e788601326cdb": "TokenTimelock", + "18adf8251b9db34a725031820ac989d18b6823f7": "ERC721", + "10c5c3d991ca543dc5cc61d85664c797a01dd473": "ERC721Burnable", + "beb061075916c16204b16cc18d4a3804df2aaeeb": "ERC721Enumerable", + "8c15a90797b67219f50776315045bdad8ebe7a87": "ERC721Full", + "f0ab234347570e7a9fc23f9d740b6784f31f2a58": "ERC721Holder", + "5769b699617659dc63abace9efab19a6bb17a22e": "ERC721Metadata", + "1f3d7d62ddc8d3c2b2a20255a4c40ee86432049e": "ERC721MetadataMintable", + "e9ea73c83db4303fb0a6556f2b37eee4441b73df": "ERC721Mintable", + "f82126eaeab8efc10723ee81a2f039d1baa7f6df": "ERC721Pausable", + "560f515efb7ed83cf9c09d5b79693343104260d4": "IERC721", + "67ad40b09e6d653e19421f7014f3e350d5cdd9ac": "IERC721Enumerable", + "90d70ae5ca5809d733d2e9fb28f817532cf2f0fb": "IERC721Full", + "51959c2d6c447821dd8897bda07dcb6c633282ba": "IERC721Metadata", + "e14b06d2c5031542140ef8bc33fd56fd99c2ecc6": "IERC721Receiver", + "03d71a566ea9225b43c66ae51dceebcd0da7e323": "Address", + "a41c0e26a104eac14adff7bfb2fbaa3e223883e5": "Arrays", + "d3ed07597d18babbd7344381e4e6d7b727795ca8": "ReentrancyGuard", + "8b179f92ca6c1e439bb544b4798c389b5c78687b": "ERC20SucceedingMock", + "ef0d299d4c858659f2b78e2ede4e089067ef911b": "SafeERC20", + "49d0b746a287d74cc714cbf2c174c231093fbf72": "Roles", + "e58c83075e53473844ccb571dde2cd30a4b82912": "CapperRole", + "da35a3d6d7d9d825fbb987d916b68fd32e348f47": "MinterRole", + "69fa5a584acfdc5b9a6d8e76882308aad31a31e4": "PauserRole", + "a81e3a3364183cd787d8e461c6df7daaf55586f2": "SignerRole", + "581f46692dcd9692ca67f5cc61a7bb1b3e712290": "WhitelistAdminRole", + "42d70f9fafd3ff7a27bedd0976b0905416bb0a4f": "WhitelistedRole", + "780a9ae4d9266ce7ec373260ffce87614258ca2f": "Crowdsale", + "0dbefc37cfbfcfe26099c488dadba4a66d6e9512": "FinalizableCrowdsale", + "60ff213d27e3d08e39d78629af2e0f57119d93e2": "PostDeliveryCrowdsale", + "487942e4eb8721d19908196bd30f897dc2c6db3e": "RefundableCrowdsale", + "fb65273ef381e17d86e898541acd1fba51e304a7": "RefundablePostDeliveryCrowdsale", + "961682e22bd8ffe0ffcc8111fd7e2ad1003d2189": "AllowanceCrowdsale", + "ebaedbafbdaa1cde24c257781d36ba931a2dd830": "MintedCrowdsale", + "e2c4d52950ae64e9f7a4f551972df02e1b099de5": "IncreasingPriceCrowdsale", + "f62969face2bdc7724d99bcd5046883288ecea52": "CappedCrowdsale", + "43b1d8a5e54c23dc212c7f199511a965a4fec5b7": "IndividuallyCappedCrowdsale", + "fb880cb8c46f68da6b53afca6fa8429b5bab3ade": "PausableCrowdsale", + "dd7b8f3a631856e81a5fd24beb58fa56417cd0fc": "TimedCrowdsale", + "3bf3e3bb72048132bff0717ef5dd2dd25d61f229": "WhitelistCrowdsale", + "8eac263edf76d56c747feb9a5a4e5529d920aa11": "ECDSA", + "d86f0bd36ed54800fbf5d094c0cd61680bd7fe22": "MerkleProof", + "d86f0434c7e803fa4e355f6bb78c5847d8e828e6": "Counter", + "3063a8a855ab9d8e1d31ac38179c32bd475a2aa1": "ERC20TokenMetadata", + "40b61fcc362b84b7b8f5b45403faaac2ded0048c": "ERC20WithMetadata", + "6f5320de16c71dbf2d08b478bcae89a7c8cfe0e0": "ERC20Migrator", + "163a9d74ebf7a2cc7f910697d513585918f276e7": "SignatureBouncer", + "bc64e7383ee9e61b613c0aa77c38e4173b727986": "SignedSafeMath", + "5bc207b44f8ed1bf37ed702d8785882f6eb3277a": "TokenVesting", + "63f538b47a22324fed11f97b993e48a18d32b522": "SampleCrowdsaleToken", + "18ac17a25a4dfe3748f013b5e1acd2e638495cd8": "SampleCrowdsale", + "858f334ed2c08da2e605ab04db4d526ede537cd9": "SimpleToken", + "b511b2fa36bea37c2840edc1be130612d949daed": "ERC165", + "ef087ed4bf42cc143bba6361e99f5d965c5209a3": "ERC165Checker", + "89b41dcad369ddf9289dd5bb640703e5e19805bf": "IERC165", + "8f78aa0fbc5f33696eba1aa5999f0367ccbe4b29": "Pausable", + "294fd705d0a1c8e94cce6774f9f0275538787670": "Math", + "ff5489b53ba0a4f650a926519ed6745ff910f7a8": "SafeMath", + "397b543dc2df14ccc410e0e472228aef1279e096": "Acknowledger", + "85458728ded749f7a0cb0417b4e6608c6fc04ca7": "AddressImpl", + "8b9f37cdbcfeb15a883ad849d9868379469b94b4": "AllowanceCrowdsaleImpl", + "65eb147c8b702f4742f2325c5774f1f87bca413d": "ArraysImpl", + "352bf73276ce2e422b715010bbb26a7dea1c060c": "CappedCrowdsaleImpl", + "2f63c91f090d3cf53ce96db8800692c34c53ba41": "CapperRoleMock", + "e43d3f784551e1eca9b046aff7dd1746ca1e53eb": "ConditionalEscrowMock", + "249d26fc0d08c342aedec0b9d92cc74e31d97db7": "CounterImpl", + "e063b808e89ecc3de5c4bbc9c919ffa7d7301b8b": "CrowdsaleMock", + "261bee63890ac92d183103eb06aa9e6468d00af7": "ERC20DetailedMock", + "a6d03a12f085621702ec2abe355799a5e60980fa": "ECDSAMock", + "97bcc379f499053394cb9b39baca0b5bd2c95f3b": "SupportsInterfaceWithLookupMock", + "e3f94dff17a0ddffe91cce083b0ab7da1ca407f8": "ERC165InterfacesSupported", + "ce2f042f44149297411c63b1656a7aed7c351281": "ERC165NotSupported", + "c8c6b08e59408716543fdf833bfdd2a46d5e9042": "ERC165CheckerMock", + "cc59e5ee83e2ac3c54a9faf63f95c3c7db171e66": "ERC165Mock", + "d9b73968b741d5cd53aaa7ac879f736785c91141": "ERC20BurnableMock", + "03703594ba3bb7a29f8c457c8485de1f768c430c": "ERC20MintableMock", + "06a59988de5e175074dfd61846655d8ceb6aabb0": "ERC20Mock", + "7c599fc3da0043e6e8a27890071a64e581e9491c": "ERC20PausableMock", + "cdf48b32e8a2040fa1785ff4006015ae3621620b": "ERC20WithMetadataMock", + "d1d60fd9b13a8685ab6f8aa87048c6e0a67d1c27": "ERC721FullMock", + "6944978f728b1665abaf2da7ba86b5428e99dba2": "ERC721MintableBurnableImpl", + "bb08f27cff0b19ef4adf183eb68d1e2ad2664ba7": "ERC721Mock", + "e51473b4de0d0cc41702f42d615f4d0e27789c60": "ERC721PausableMock", + "de3c52bb67df9b1e74f88dccf8ddacad748a91bc": "ERC721ReceiverMock", + "b9f98976e3f3bb053a1d6ac241b4e13dce74244d": "EventEmitter", + "ebb254073b372b3a28ea94e56212bb41ff372386": "IndirectEventEmitter", + "9dcc5fe734a4d420457384896568ef817dda942f": "Failer", + "06096854e33cbf52e2704e3f87d107c58f52d145": "FinalizableCrowdsaleImpl", + "f7a220e190e202e59e7ed83e8d93ebb8f676d3a5": "IncreasingPriceCrowdsaleImpl", + "48221c607b28f7ff67eb496dccaac552e2e4b80c": "IndividuallyCappedCrowdsaleImpl", + "a1780e67e3aeed1cb9493ffe00e2840fd85e5b52": "MathMock", + "811b3f5f798d1bd67cb4351ede94b40a96251450": "MerkleProofWrapper", + "f19bf654847043124db5ee412a4926fd45ece93c": "MintedCrowdsaleImpl", + "80c381c593821fb47db89d55e26bc66eb3b9815b": "MinterRoleMock", + "46c4d8c42833e483c06badecf3ef4870eeeef4c0": "OwnableInterfaceId", + "799e7db4e23a6cef4a8d9642ae4b5cd2d7eaa3c1": "OwnableMock", + "3f555df97ee448ff10299cb97da90b3f3b38a0d2": "PausableCrowdsaleImpl", + "351955623b3a5ba04402dc84132efe3bd36d81d6": "PausableMock", + "39f9b49623e98258a14b689f719e4c9e39960a58": "PauserRoleMock", + "df64a5fc7bb156be6d151d1853a4717c501fe981": "PostDeliveryCrowdsaleImpl", + "f2bc5891107b19ad4a9e2bcc9eb78651c23d8536": "PullPaymentMock", + "4cc249e1ae70127d1438dd7e52e00c76a0714e7a": "ReentrancyAttack", + "f9a7437047cc110b3d7c7886c537e63c88d58f77": "ReentrancyMock", + "9baeb425b432c40949ab0d772f3673356433e5fe": "RefundableCrowdsaleImpl", + "3a1327b39ea8686de5d4eae4488f464238196ba8": "RefundablePostDeliveryCrowdsaleImpl", + "7c102c2c0df13f6306a1491d1dab99216519efe4": "RolesMock", + "9172a3718949c08ec82487993301e25b4e988338": "ERC20FailingMock", + "05db7acd560f57643755be95bbbafe39db03db36": "ERC20SucceedingMock", + "e0f626fb634ae0401a38f07d5562a7e66339e42e": "SafeERC20Helper", + "5cb3f28de3e654931732a980fd663fecc4a1081a": "SafeMathMock", + "f8da5f69fc930b78d4d5ea2eac5147aa2b6ea5d4": "SecondaryMock", + "991f87c81fa1c7f853b0d77766c2d897e6f0f084": "SignatureBouncerMock", + "8ce412c8cd9286e85b7c28e3c3ed644bacaf39d8": "SignedSafeMathMock", + "47eee6b2d10bb21084c63f29a263bbe01173cac4": "SignerRoleMock", + "07b4e8cb7b3f12b92375f0a93c3eb2eb23aaaf60": "TimedCrowdsaleImpl", + "20f40b25fbd13c483becd042f5bf06e98b7bfe33": "WhitelistAdminRoleMock", + "148d4321f050aa8ff5724607bf13e1d4b55ca33c": "WhitelistCrowdsaleImpl", + "9986f2f41f56c43eb27b92c0547ac10e02d052fc": "WhitelistedRoleMock", + "d918cc9ba3b27a39e2e0a05c8be5b5fb07117521": "Ownable", + "f682e6ff4e928c190146ce6abc350197ee6dd9b2": "Secondary", + "015f648298c32f15f9b2e3dbda148e05c9f29ec1": "PaymentSplitter", + "feb2a352c4a8597f50e0c7f7caec4787e8a04571": "PullPayment", + "1236e7cc69efcf915b7ce81450fa7c8f013d66e3": "ConditionalEscrow", + "a1b2c0241d1f22d1d32c71415293e2357ce9754c": "Escrow", + "6e2e6ee47de4500756716fbf8943f13b29b2771e": "RefundEscrow", + "a08504b8c3c127e9f3a15cdd588573058a60acca": "ERC20", + "3bcfc9705f5bcab4583eebcaefd66a89e28e23c7": "ERC20Burnable", + "566bcf581eb9ed38c8c2b2e90cace8b78e7e2acb": "ERC20Capped", + "77ba7d78c25254fb6a22f0a92fa04b95a8ba4ef0": "ERC20Detailed", + "d602a9c5786af67ef6bb2d431651081d76dcdd89": "ERC20Mintable", + "563404ae3ad9decba0f1f12d78aff9234a84bab5": "ERC20Pausable", + "b3e5be0b3f985e92fe1f9146d8133f70c7370c9c": "IERC20", + "bdd10fc95fdb3e43dcb6f50c5a790526eb2339a5": "SafeERC20", + "1bc7268e369e6f66cae9a346a3be4200fb9ab2a2": "TokenTimelock", + "f5495923e256fc4aa541fe592c69f9c6a49d09b1": "ERC721", + "bff0ac152d4f9d6016939cc8a2f0abd3952a5cff": "ERC721Burnable", + "14d60ce0ee22fe6cc17a67f827f2d6405fde45fb": "ERC721Enumerable", + "1c5e388a06c8bc5e4ebbd264403d229c79cb538b": "ERC721Full", + "dc6488481efeb3f0a3fe4012e44cc9630de20454": "ERC721Holder", + "57d6282eac3ccb6f9934d1d2341098cd94888d34": "ERC721Metadata", + "bf266ddbcc0c703ec528a3589125187209ecfa0b": "ERC721MetadataMintable", + "feb0e24e8119875a567c7f63ae626229e989ba6b": "ERC721Mintable", + "4e7a7464f14927dcd4ac1c4c80c1416a532a1762": "ERC721Pausable", + "181645ad9bfe9ec844972ef6c3335fd0ea4a350e": "IERC721", + "5eeb659e05046a4f4fc1b998fca1960305af320d": "IERC721Enumerable", + "49a0645eb5f2c78e85729f78b6e46b5daba24d94": "IERC721Full", + "80912b3e9ab6eb4d3fc3d42d7a49810811a8067d": "IERC721Metadata", + "54be7bd4bad6dd7473376057523b9d49cb448688": "IERC721Receiver", + "7a16711320090635c8beb50e1328a501c188f888": "Address", + "5176d91de61a03d02be10f24b2a03fdbc6683a68": "Arrays", + "2b1f3555fce0551e87ee87794b27941844b305ed": "ReentrancyGuard", + "8bf62064d4d5f310f90c3b0260f35ed98a945899": "ERC20SucceedingMock", + "7fc61c5c87173431d88d59b7645b20b7a5a30a13": "SafeERC20", + "26d3b2bc6fb00cba01f3fc93926107bb8547dfca": "Crowdsale", + "dbbddfca9a9d822603879d0b26c9a87f896185e7": "IncreasingPriceCrowdsale", + "0b1275c2973bc9904a4719496518db986e75f0d9": "TimedCrowdsale", + "3181a686cc87d9773617f11e6e744a8ef4cd1485": "WhitelistCrowdsale", + "b44caa5b9a40b460428ea5145c3b516263196f9c": "ECDSA", + "a49a652a900af135636686be65e24c59b562f1f2": "Counters", + "24b08de6151fdf941a10bb1dec241f27958feee3": "ERC20Metadata", + "ced0258d0b0d50383252c1a10e11e72c54d8f854": "ERC20Migrator", + "d6493fab55286955839b4d6d279bda02b11c3644": "ERC20Snapshot", + "83dc70f4ffa7ca8b4bb744aafe520ca5813e5df5": "SignatureBouncer", + "df185ebc2fa12c378e5015bd475332756504f60d": "SignedSafeMath", + "4fb66323fe71536c1796582d32bfcabf6716ff65": "TokenVesting", + "bdfbcc3f8bc59328aa6ab0d4a20d24270492f9a2": "ERC165", + "2d2ca1d7fb9b959879a30f3a36a6ff381be7a50b": "ERC165Checker", + "d0b3500ec510385e5f14da45b3f72cbecf2d0e1a": "Math", + "a38f7d36cea19217092f7ee679308e368ec9a9bc": "SafeMath", + "b65922943e3104021a6f39825a9ad792d6c06202": "CountersImpl", + "0568279ce96d91ad7a4dbba12201003893a914a0": "SupportsInterfaceWithLookupMock", + "191327eebe6456d41be46d29262f424cb14cdaa4": "ERC20MetadataMock", + "ec24556da2b236f33be4263e76835c6f7b07c579": "ERC20Mock", + "b1f5209f1503fb7b95c1e274a4605961263658d6": "ERC20SnapshotMock", + "600c8541c63ee789fdef9c5c2901eabfcefc40c1": "ERC20ReturnFalseMock", + "375ddc80a306ac6fd622911e87a929e4317bc498": "ERC20ReturnTrueMock", + "5ff30663aecee0ab6ec3bc9342d9a21cb64e1ad3": "ERC20NoReturnMock", + "c6eeb63f9350a6293d3cd162768c72f84899efac": "SafeERC20Wrapper", + "5ec72a2da405c23f8b5610b9e7b0e4bb586a904c": "TimedCrowdsaleImpl", + "3086bc6470bdddb0bccf23d803130a76067fee7a": "Ownable", + "b83b3645b9107f5cbc95e2afbb57f6002e3e72d7": "PullPayment", + "9ab9c8709262c8ac99601051ce5c5d1ddd2950a6": "ConditionalEscrow", + "61dd244ce7b91aab023abcd5e64e90a7c2d363dd": "Escrow", + "4a5447519ca8bb2d82a79bd5b0b9b0792bba23a8": "RefundEscrow", + "c8df889cca25546f32a258b75f263fff3be529e9": "ERC20", + "21b260d15766f58e0590ea216fb5db31db4788e9": "ERC20Burnable", + "490f2847cf60a16df023549e03e6ff6a16f01f9e": "SafeERC20", + "67ec2c098cb4626d76ee8762f555edadeaf863c8": "ERC721", + "84f02d651f97b0225a3ad08eda8e51c73fca5eda": "ERC721Enumerable", + "b3f7f407fd76e2dc2ee39174a1f483e5864bb7b7": "ERC721Metadata", + "4e241f646d96f095386eae6a7a5f13e6dac682f1": "IERC721Receiver", + "5d932009fc8f204b32e2ff3b795b5a4016ba8856": "Arrays", + "97ad171eccfd6d686444cb1a096ca32c1e081173": "Roles", + "12d3a805c82a503a32584116eaa679c58663182e": "CapperRole", + "920fb014fdab17d9962e4a051ecb05e0346803c4": "MinterRole", + "0755ddb27f6aeb4095c5fa52223c6c321f634f37": "PauserRole", + "f2fdc6353650ca2a99350d5668fec6460865baf0": "SignerRole", + "a7420e74fc819c039143c4fc4060b3f8233aed23": "WhitelistAdminRole", + "7731004a855c8698643498ec733dfc528ab5e9af": "WhitelistedRole", + "362c8c4f6c21345efab16b43ac7a6dda826ef8bb": "Crowdsale", + "3a548446ff8b86dd7fc634446568f9549949d0aa": "FinalizableCrowdsale", + "4109c79f50836cd29d813afbeeed549745e579c9": "PostDeliveryCrowdsale", + "8d80a124fdfc163f1856b30d54475338d1995fa2": "__unstable__TokenVault", + "9dc3b6cc96b6bcf6dcdeb91ba4c732a8f7da0336": "RefundableCrowdsale", + "b123691e7215b1777026a26b72965372b355fc71": "RefundablePostDeliveryCrowdsale", + "18869bdf9d3a93150d1e0edcb1db4a85ee23e28c": "AllowanceCrowdsale", + "6e75e6262faa2337d43ec1066f50e2fd71409199": "MintedCrowdsale", + "33eb8c2e2ae6b95c6cf58d3c9c06587e7ca2bf3f": "IncreasingPriceCrowdsale", + "e8bfd676822015708c097b2064fc5d898f45c5fd": "CappedCrowdsale", + "8c2f617d1f49cb4fbef87748d2cf71aed74d515a": "IndividuallyCappedCrowdsale", + "9d143c684d3650ae76ef4cc89c043eb8c3680445": "TimedCrowdsale", + "6080c9c622f05b4a6439d1c98b67333b5edb9bb9": "WhitelistCrowdsale", + "791cc5d0ccd96d4d7cea297d4dd4282a2e03e30e": "ECDSA", + "4737e887fd1bc839b8b8cf2f10f02eaacda8294d": "MerkleProof", + "b7ed70197dc7c1b670f34cf2e3b4e58865383cd9": "ERC20Migrator", + "1b898dc4c40ad6e77b5e7600958f0675d6182077": "ERC20Snapshot", + "13b02c8c4a18591bc141c84d4f390a470699efee": "SignatureBouncer", + "e121f6ee965082a37437175f7f7de7327fc7f6ec": "SignedSafeMath", + "34333c9d9d0dd9cad48ced9b7ec9f16499d9e51f": "TokenVesting", + "0006db197a30a83123ae42b1412b9eb36e42a28a": "SampleCrowdsale", + "c09017218a635de03a5da5e72c0ca29453a3f119": "ERC165", + "65df18d3f80dc6e25c7b9261139254c041565eaa": "ERC165Checker", + "82aff27a106fe353c21f329d0884dba69a89e5f8": "ERC1820Implementer", + "7b1e6947bc70edd40153bcea559844c17eb80236": "IERC165", + "a4a4c4e1884a9ecff9a3be99eacc783c290bf7e5": "IERC1820Implementer", + "6fe4d6ebe9da8d97a48c7be4cb30aaabb3ff405c": "IERC1820Registry", + "ae0db82d81525d22cdc433cef124addd50430fc5": "Pausable", + "6b96a25ebec0776be5318fbff49d141d73f4f5de": "Math", + "2a829cf20030b8d3de8ac9873f0beaca3cad1f4e": "SafeMath", + "7c044669d66a8d69734c5f828a50d2ebd53f6bbd": "SupportsInterfaceWithLookupMock", + "7b97383d271f6b4cf1373d76ee256ba3028f24ea": "ERC1820ImplementerMock", + "95998f85eb3757d7b010f9d7c1480a92d9016d92": "ERC20Mock", + "30b598e64b3ea2b9915acaf629b2d0e4a2eb66ac": "ERC721ReceiverMock", + "e092e16bb0e17e23ca9e1b8c1521cfb386697e2a": "ERC777Mock", + "53a0001a2ebd03b5203549fa6c6c80cc9697187e": "ERC777SenderRecipientMock", + "ca4b8cacced7f06ec8ac865f7be0d5bf1b1957ff": "ReentrancyAttack", + "068676df02968b7b9e9b4d3b7f69155a9f70a13e": "ReentrancyMock", + "9124b8c0668411c9dfee424d0bb9ae6e8f7706e2": "ERC20ReturnFalseMock", + "257829241097f5fd720b48aa5025a7e972b0bb30": "Ownable", + "eefbd0e574c1afa621b60d5c0060ad123e094988": "Secondary", + "cf6cc9c70bb5ee318b5ba3588e9f2c4f34cca72d": "PaymentSplitter", + "f8d97ab19910043c2be57dfa599cd98b2e79c0e8": "ConditionalEscrow", + "cef9149e1ef5098f9600007ec477b01ea5f41140": "RefundEscrow", + "5e3eabc1f7f46c3375a3d8eb4ab618ea528254c4": "ERC20", + "9f0cfbf4cf9505829c19bf3698aa3a87660ce1d4": "ERC20Burnable", + "f6d6fbf05185ca026c9ccf4eab910054069c3f8f": "ERC20Capped", + "a9ef7428ed0d036ab79ddd21ae9b95da666634fb": "ERC20Detailed", + "cb12ca8d883bb3ad8317c61b2e7251221def665f": "ERC20Mintable", + "0f194824b2052c308c52ec5cae790adea7c64c57": "ERC20Pausable", + "3efeef33c00f8c7513b55015ee54e6235bb0b668": "IERC20", + "7f3606ceb7a5ca3d169607f28d825b7844d8f6ed": "SafeERC20", + "54bbee45e99d6502f0c9b5be1b80d4bbe3786d94": "TokenTimelock", + "11fc4d574650f2b1c58366124832c3409c78413a": "ERC721", + "205f8e867ab267c38e439b791c1e1bd1d8ca88c7": "ERC721Burnable", + "9b8256d1597bccaec572a77db88f059f58df9345": "ERC721Enumerable", + "66f22e50f77d448e975e59f871645e6abf6d1cf8": "ERC721Metadata", + "743b6405c190d6966e1284622dc0bade6c9cb40f": "ERC721MetadataMintable", + "628a4855f3a319fc3280111e4747b4faa9ac39a5": "ERC721Mintable", + "d5e1935a6ff55517a209f36ed99d5998837c9e4f": "IERC721", + "640289cb3557be343a7520230cd1c3d31961d3c2": "ERC777", + "532858b09be39df731d0f660c1c8df677d90663e": "IERC777", + "3c3e0a7eeab6fb60705ad74295fc20d947d4fd38": "IERC777Recipient", + "7c644be4848da35aed4b1b1358c79d273c5eb2c3": "IERC777Sender", + "862f5b1732442b00bc2bd40124ebbfc93e506b73": "Address", + "ffe0c2e7651f57976a4875cd95580dfc0a012a2a": "Arrays", + "00fd45355e275a2ed1c1eb0b3b2fc82786dcac5b": "ReentrancyGuard", + "f5f947f1c918d8d1ece09da651c3248f66cf7e4d": "Context", + "2e44800ce075b20ea3c20d1e62300384dfe2c517": "GSNRecipient", + "c5aee0ebb7cd74d8527a5db5954b364b863603d1": "GSNRecipientERC20Fee", + "99159b6dfffe5ffb4c973a9645385542d26aeaa4": "__unstable__ERC20PrimaryAdmin", + "a4073980c6f85544223a230d9dc9391f1b0dc311": "GSNRecipientSignature", + "d914062eb6557699da04d907e2b70c24de94bd12": "IRelayHub", + "3e206957fb817eb0ec41dc08053084c29a6a061b": "IRelayRecipient", + "43710cb6060b92e5f845d7c76ed4ab1f85f7cc86": "CapperRole", + "4a5a3fca54b8b8b1997614b1dd3b408a964c538d": "MinterRole", + "76bbbe6b0782ad22a92c56058b01b89ae789b599": "PauserRole", + "d4e83a7891c65c3ed3670a978bb76b634584af20": "SignerRole", + "6cc6766baef98a700e8e38821ae2aa15cbc31062": "WhitelistAdminRole", + "71c272ca2459bd2e5648c31cf3342109274dc265": "WhitelistedRole", + "bb5bc67bb08af53d6db7d3c6bfca4dfd34e5e574": "Crowdsale", + "c73846163f45573292c9e7281471658d480d83ba": "RefundableCrowdsale", + "041e87ca76fd2207ef3cf4936ec0205204be6b96": "ECDSA", + "0000d7516560f14246e909e2efa04fab08aa639c": "SignedSafeMath", + "b002d3ff71af2317f8c44c7098c5e12814bba92c": "Strings", + "cef172a9650a72ad1bbc8aa71d6c5e755f0b49bf": "SimpleToken", + "150947d54d2a71dae3b56af334766eb70e6253a4": "ERC165", + "a7c76ea626e3f0e494df9149c8e40ac8fb90d240": "ERC165Checker", + "0f2bb06c58e981260a4204795f24203a365c2737": "ERC1820Implementer", + "67b2092d07fad864c8fe808b9c3ca3e8749ef8a2": "IERC165", + "cf18bfd2ac9bb0e6f31e2e0169bcf7812b48d020": "IERC1820Implementer", + "c6d7a58fa8e4408d90bf4dba2251c7f384442e61": "IERC1820Registry", + "1d1a1e6a2b8373a0f9c12fecb97e9e9e2f5565bb": "Pausable", + "40c5df80b4b5cbba8434b7662078aa2f7bd11703": "SafeMath", + "7e7979f1b224b9a2f1521c2e7ee6269e86c192da": "AddressImpl", + "d2953944bb76616ec71f7ac0973f4a2c7735e3f5": "ContextMock", + "b9f88ead37062ca195d2a397eca7462b23377705": "ContextMockCaller", + "e4e81b34ffc158b871c398905044eaa407b53309": "ERC20PausableMock", + "1d5e75b5b0c6d5a5411479d0c5922cbc23b88935": "ERC721GSNRecipientMock", + "ccb9f10bcbdd9b08e3be1ddcea53285c2edfbbac": "ERC721Mock", + "f6dd2052f9728379c16000c51866baa667ae8ba4": "ERC777Mock", + "40c2c74b3acb1d4f2701bbc1726c54e7b93d879f": "ERC777SenderRecipientMock", + "a6ebcc719baf42b346ce99ce787a988dffafbe67": "EtherReceiverMock", + "31c735b3a0f5aca4dbcae3cd833d5327d77020e7": "GSNRecipientERC20FeeMock", + "f951aa42da5cb767b2d25af86911f06cd5558981": "GSNRecipientMock", + "35ec5d4c73fddcf8a5aaf5757ef1af99352b3e7f": "GSNRecipientSignatureMock", + "d3525012d52c3d06a22bb704ada33f21c0256dc8": "ReentrancyAttack", + "860bdd56a5ddf01ae3557917163d7c9dc8de8ee2": "ERC20ReturnFalseMock", + "ae01681cc37d58ab8052869e687f215e6cb8d0cf": "ERC20ReturnTrueMock", + "93af43acbe7d5b909433810d28f2ac6826dd1d91": "ERC20NoReturnMock", + "d09209d71a33bf114bf1adcec684c64deb010de4": "SafeERC20Wrapper", + "3d00f6d348841ae204c485cda3c4c2816af76957": "StringsMock", + "d1523aae49fb6f1896f49e590b6f51039e4bdd72": "Ownable", + "2fce93f9d6faa205cd88c0a09bd9f76fc5330932": "Secondary", + "0d32d5cabbfa9f420623b256dc5fb3494ed22769": "PaymentSplitter", + "99e22b366e81118ef4050f8f5f75962e73330c73": "PullPayment", + "4562c170bc9809fa46e6666f9728e8e61dd33f72": "Escrow", + "626414a459336b3ac497b8e49fa22f1f0abf1b92": "ERC20", + "950167661be5dc085fba4c584183bbd83a29eee7": "ERC20Burnable", + "38d0818e3e974224e2fbabbd73c57eda95034984": "ERC20Capped", + "e406b324425fe7c3f7c5589e06dbea4796503de1": "ERC20Detailed", + "3f15c8af26605011c8d5de1ce87ab8fd0ce60ea7": "ERC20Mintable", + "09071ee20d5607366d247ff1fa9aaaa46d606dd8": "ERC20Pausable", + "a8466bda6a100f8073131ee60f1f55f39cc79715": "IERC20", + "2c19d3f26dbfbf3d39f50dd735fe0fe5b5e6cb69": "SafeERC20", + "53de48de263bd917431b935fe6733716efaa53aa": "ERC721", + "f6798a7bd8cd9f0f9315ecf200035b4c1b27652b": "ERC721Burnable", + "5287c032e953f49cbead7d8e8dfb5013fdbea35a": "ERC721Enumerable", + "32a640d5908aa379be7abda1424894a0ed5cb389": "ERC721Metadata", + "0465da94cef491f15c1f0cf03ab35ba5f57c2e53": "ERC721Mintable", + "652b0218b8ce2fa84fc1489346eb4f8ba6be36fa": "ERC721Pausable", + "dbb96f95f55be6a05475b97ef7c35bd3e93ab4ed": "IERC721", + "f4b123f5b40878b70f02476c2e17a144bf88e1a2": "IERC721Receiver", + "fc247ca5c3f2ce5dfe65d307d34461c314f07225": "ERC777", + "70795fc39191bc51871b45a31c12b3bfb7a8d95f": "IERC777", + "923531fc7154edb1c04430faa466f2fc21be91b5": "IERC777Recipient", + "91df3b8cb635ee73d073bb41677b30cca16cdfaa": "IERC777Sender", + "671c527f68ac3d8c6793881d78179da4ad394eba": "Address", + "0bf7ab409d936c5f8868bfbcdcd40635b2d5975f": "Arrays", + "e6a65bea2d5d2b3629bebed655e5f99ba6b5cb62": "ReentrancyGuard", + "33fd40c136a0417ba1aca69c95440a6f6af396ee": "IRelayHub", + "e60e312ee7de5b97f6b691d2aa22a754139c0174": "IRelayRecipient", + "80635da095b81f3ac67980a810c197b175cd191a": "MerkleProof", + "2001957575c00b8d4f0d2e86da40374cc1f9b95c": "Counters", + "bee16f12e3d00612347f7716ac3dd919958f6ecd": "ERC165Checker", + "b7ffce9048179efef559653bd0fe78e3dbf3ccc9": "Create2Impl", + "ab5709072e811dc6892d9bea6dc2febc84c2eebb": "ERC721FullMock", + "8eebc80db69e1dc9feea6f06833983578d4b3780": "EnumerableSetMock", + "da3bb9482cc3fef975d4b940aa6a7a241620cddc": "SafeCastMock", + "418be7dc23fea0fb0685acfcd0924205d309da45": "Ownable", + "016a31280fdbbb2437d69d2d2077a7c6905c714d": "Secondary", + "e54799317dc440001a42e881955539c39216f20b": "ERC20", + "7f18034de8806b6e04a081d9139af0bafa7ebe28": "ERC721", + "a8e2e47304e89ec12edb4796701610ca0545f690": "ERC721Metadata", + "270b244803ef7871cc0ea9c7140c58b0cecc7121": "ERC777", + "46d949813bed5d0c28d461308d29b801440d4b5a": "Address", + "27cd94941b6e8368a47c3056f9881d9b777a12ee": "Create2", + "3f0be66d5ab109f6f063a2f621e2a27f598e9c75": "EnumerableSet", + "288ea0f7c464d6c209aedcb70702d40d055061a5": "ReentrancyGuard", + "96b9d4c39c132847fe9878012875a60be6815d6c": "SafeCast", + "d858e0f859c9a0007983f900e87377bc7b9db2d9": "ERC777Mock", + "c50d4a4bdb1ae07acba0c1808a395989814eb11c": "ERC777", + "b796dbdd6a4a193975d3e83a2705332b97d04c9e": "Context", + "26f098ad471cc55860f980fdb2a0e03e76124c5c": "GSNRecipient", + "df2e4c908e0f63db31a061d6b1a88aa3ac5e4259": "GSNRecipientERC20Fee", + "f6e0a568a7b389b06da90d094cff83cb479ea60d": "__unstable__ERC20Owned", + "250da0268e9484838d295b0a509683c70b9c2bcc": "GSNRecipientSignature", + "7db2684fb121525320f90ba363fb9d393c882c2a": "IRelayHub", + "b59618fd7459ca78735d140104a33f746c87ca23": "IRelayRecipient", + "f61364a0c94c546c2686fccf64fb00b7e6a238f5": "AccessControl", + "5d4b8f8c71145f3eea66f7436b857d639d294975": "Ownable", + "5ce37f6d78b690e78105d779c9c5f8b133b20713": "ECDSA", + "e2563eee26d163e13a84de12c231bad5bd9d07ef": "ERC165", + "bab56366523b8b4b46e5f4745d87d1c4925a4cd5": "ERC165Checker", + "e0902a009ac1aef60cb3f2396c3e0551cabe50e4": "ERC1820Implementer", + "8c1783f1553244438a69f197761338b573ea437a": "IERC1820Registry", + "299995a0dda5331bc9ee5b50a02caecae0ab2f47": "SafeMath", + "381c1c12d9d6ed7263d499568493801a2f9f6c98": "SignedSafeMath", + "b36bba5668b0585f8fd14a482b2b732245a71bbb": "AccessControlMock", + "ea494ccbabbb741ef48ad0ff5c085f91efcf3a3f": "AddressImpl", + "efab65e1bceef92614ebe4fbb8f9fb24482b6ed6": "ArraysImpl", + "3a520123de9cd4ca9a16c3f5b2d60d7d30aba9f7": "ConditionalEscrowMock", + "dfd11780fdbce9683363b9951c1736dd9c0a3479": "Create2Impl", + "039c37d37cd81934ed60f46f40e5b7c454e5c61e": "SupportsInterfaceWithLookupMock", + "945e934e278de6fd89f396f2cf47be09063ca054": "ERC165NotSupported", + "ea356c162ff728d39db8f4b1f8629294b7dc53c1": "ERC165CheckerMock", + "0a36b70b7c01ef2e9ad666db0b7c7815a2954bdc": "ERC20BurnableMock", + "44563df6fb78cc199c6afa99364a06e8b6bb1a8b": "ERC20CappedMock", + "065fda899fd387ce4fb161a544c6ca5c4d2cefe0": "ERC20DecimalsMock", + "0848d902f46092fd3cb28518efb3485754a176bd": "ERC20Mock", + "d3694a314c74d8e0061fd1ee4abe29265e333a8a": "ERC20PausableMock", + "b87497aeac600f01a5e99eef27004dba2b386db9": "ERC20SnapshotMock", + "801315f0005d984a6660bcc6a0980fd812f1c36a": "ERC721BurnableMock", + "7b7d05bbf487b7101f6d0b1b17d9775001297456": "ERC721GSNRecipientMock", + "b702ee7d010f646e049b5e6786395716a6c4e5de": "ERC721Mock", + "4265a7d8085494949939f615f62481d368c2ea2a": "ERC721PausableMock", + "153e1fe8ab29256f08340d4b68bb4d0e7bf31c1b": "ERC721ReceiverMock", + "9b9a5118eced1d02b1558076d4598e9e007ef161": "ERC777Mock", + "d4ab30adb57b13f8a100753fcbcc100b5b93c41f": "ERC777SenderRecipientMock", + "56edef128a9c6161b588e85b7e9f8a7c8719330c": "EnumerableMapMock", + "42492e1e3840893868cce13e052e73be0115a282": "EnumerableSetMock", + "8142f6d05936c535329a037a5982940423113d0d": "EtherReceiverMock", + "926923f5dda7a7fdefe2b298549b4c7c899d644d": "GSNRecipientERC20FeeMock", + "b25e72ff5f0838564ad1fef33a62269baa223e58": "GSNRecipientMock", + "08d9ca42c0b395de9866fdc89cf80baa79f3c544": "GSNRecipientSignatureMock", + "35bab91349a98ac9d37a0b0dea207ec66d9df1de": "OwnableMock", + "b598caa720703755d142c55313587b39afd98fed": "PausableMock", + "ee40626ef9ea1cda61726721063073150205a62d": "PullPaymentMock", + "9e583d7f7bb1a067f370d89b9fbe3761ec3e9667": "ReentrancyMock", + "b2abff56fa395cf30f6f70e37eca3d75afbba4fd": "SafeCastMock", + "bd3f6a5cf9aa93cca8f92896283807e732bf562f": "StringsMock", + "128b25a6695355f36790d5a10fd795b8bb27fa2d": "PaymentSplitter", + "86fd813a5a70b5d7233bc1dd53d2f794978e8bcd": "PullPayment", + "88a3718cebe06fc9da77d9678a2b6f0ed68ddba3": "ConditionalEscrow", + "69fb19ca610d79dbf1138608ac29096e7f1b5976": "Escrow", + "f2caea65705f8c4230984e0a8c7e764b2d87c29c": "RefundEscrow", + "54363b19c1cc14361dfea5510bff28f17a35e284": "ERC20PresetMinterPauser", + "38ca7b059432b97d9bd6ebb4dbfd3a8e7626c059": "ERC721PresetMinterPauserAutoId", + "01a31d70eac15ebc3e72762f3d9083e2ec58102f": "ERC20", + "b6e55d3df0d0552ed089b09f61be8bc6379ead02": "ERC20Burnable", + "32dab051731393e6bfb3688e8cfb871017bb917d": "ERC20Capped", + "33382c542643be96d197ace0347bc3ca0b450993": "ERC20Pausable", + "b1b3262a12fc93ad5fc3044f105688b26a8fc39c": "ERC20Snapshot", + "8ad28076b641582bd77b676374b81cfd0f2e1a16": "SafeERC20", + "b021a1cfeb77d1b2933aee2118525dec020d52e3": "TokenTimelock", + "876d34e7701f0b3ebefb39f5fa5c0fe434181466": "ERC721", + "a880a1b2738b3efcc5a95143d0a326ff227a45d0": "ERC721Burnable", + "562cd257f69b05c02c7e235fd3a6d3619c428006": "ERC721Holder", + "fa7968daf5e28907a8097cf716abe22a74102d2b": "ERC721Pausable", + "c05ee17be3c12e0d5062b147bbc85543ca5e57a0": "IERC721", + "2f8c54269c3eef1154da10fbe4cc8b9b988909d8": "IERC721Enumerable", + "c03c0409f543870410ebc74e33089d8bd8fe4d33": "IERC721Metadata", + "a4499a2caaf32ff3a48dfbb81587c3adf6adfae8": "IERC721Receiver", + "5899fda2e6c4c8cf2177cc7c078c78e6e5afd218": "ERC777", + "b9ef6216c31f8261423581d843bf14a333570560": "IERC777", + "b3b149c4a02c930e5f138a7bd4d1ed07e5742f36": "Address", + "61cc196dcfac4de6436deb8ec083d4aabf408a69": "Create2", + "a37fb5e05f9228dc03b7c50737be17949c276978": "EnumerableMap", + "ab23fb82ac99e05ad0a8697c1ad6b8eca4b9b6cf": "EnumerableSet", + "21547b61a2857572da1e51464899cdd52ebd5737": "Pausable", + "7e7fa83b0f54ef795991472b8e1d61d5cf98c7d9": "SafeCast", + "47fdeef8766861e816936156be77b55cb8e0d15d": "Strings", + "3ebd393dd34383ead311cc6a4ac498d0562fbeed": "ERC777Mock", + "08d677f4935acdd04f1939d6430d2d98ed95a8b8": "PullPayment", + "bcab2445fc6987740f10b1b48f5cc9f0a9dc628f": "ERC721PresetMinterPauserAutoId", + "391484feda2d514efcbd8ad05bf24925d6a71d9c": "IERC721", + "043402c29808063960b154297d4d949f81f27e38": "IERC721Enumerable", + "609c41e5ec3e7eda3fe7b20d5fdf8459da4741fe": "IERC721Metadata", + "fe18a97dfdc6f6805760ef16a3a6426fd4ca5742": "ERC777", + "59f0695316bfaf076e70940bb15f611ab18e7380": "Context", + "6ce10025cea27bb5e02ed9a0a849c592d991f9ba": "AccessControl", + "05fb43f68cd62715cd9537e2407662ffd80d1b14": "SafeMath", + "14bdd1cf1d91f81d608b9317df714bfdce5cc5c8": "SignedSafeMath", + "c387ffafae87632afcf8a61aa9a3046f74207337": "AddressImpl", + "77dbf870fb94cfd13fd3fd2cf4d40eed0e1b5fe5": "CallReceiverMock", + "2fbafc739e08a6e4f30468e02c422a0f46a44133": "ERC1155BurnableMock", + "edebb3dec4141dedd0e6486b38ae6d2f4a2750df": "ERC1155Mock", + "497e0d5e7016d8c029788a4612313a68b0dcac11": "ERC1155PausableMock", + "b63233a551c74f686b15f9d1e41ec9a511b216c9": "ERC1155ReceiverMock", + "4e0eb152c67034b43787e86dd9517e5acef04406": "EnumerableAddressSetMock", + "33031da76437b1311f45e835d07084449361c05e": "EnumerableUintSetMock", + "d58e3bc4a8dc2a667dfc6cd02e834693f8970d4f": "SafeCastMock", + "59444c98b67b5f88dfb7bc0165563cc10963cb54": "ERC1155PresetMinterPauser", + "57f1c230932cbfd9944efde495ece7b93961216c": "ERC20PresetMinterPauser", + "60a2b550bd5c41484cbb9d96840bde18080cc9e0": "ERC721PresetMinterPauserAutoId", + "271759a8472e5c3f9bd708d319334bc362f7ea28": "ERC1155", + "134643457f4b7b6f0e9e7e4d1a9dcc4490977b5b": "ERC1155Burnable", + "cdb13d40682488f9f0953066325cf069b44dbd1e": "ERC1155Holder", + "ad8f8fb3ef5b64079ea06b8a84f71961ca862b2c": "ERC1155Pausable", + "bd50c286a31a9281ae013970efdd8a2698f70a3d": "ERC1155Receiver", + "b51299123b2b7ac6f4473c4e9eeff2fae2527866": "IERC1155", + "ebbd8915f7e42b138f231d12a57aa3205648c228": "IERC1155MetadataURI", + "461f1b75562c952dc593e4b74fe5957247b47e96": "IERC1155Receiver", + "af36aa37efe07de73c75c3e3b2768abaf71d1f7e": "SafeERC20", + "76e26d8fe94c40bc65de0b949ba063aec0c8888d": "ERC721", + "8b36b4f8062eab95d4c7b88da93222c71ab4bc9a": "ERC721Burnable", + "8a49c9027bfd68a7406842fc38a54c1ffdb0f55c": "ERC721Holder", + "6bc0035b00df60df8ab929ad72f1c15907ead145": "IERC721", + "66c525cc867324229ddc289348a728c95abd8ac0": "IERC721Receiver", + "885e6164dd6b49a503e5a2a4ed16277b6eb23ca1": "ERC777", + "61c30616ec7a625371407d69c4f4287bef65465c": "Address", + "e55e6ff86a0622d2187303e42de5dbd1f8bd7577": "Create2", + "7253411ae52004badc4d7f7410ce466489d61649": "Pausable", + "26c0a8f218e277e2f800073ec1cf3d9e8589d369": "ReentrancyGuard", + "3bab9320873cd011466b2a6ab0dcac0f5dc1bc69": "SafeCast", + "4078d8de60d037cbbb1a421d03159750cef400d7": "GSNRecipientERC20Fee", + "05584150eb03bca28420d821f0d3079f3c392059": "__unstable__ERC20Owned", + "4821563b16a010649bd9fde1586e911f6c9c1841": "GSNRecipientSignature", + "15cacbe095318831e2b3e609d4018cf5d59bb7af": "IRelayHub", + "0453e5d14887ca74d7a9dd93ea24ffd21b33c0cc": "Ownable", + "1e0f45ff715be57f9424f5703cbaf1c7c0b4cdad": "ERC165", + "2dab2a74b7d92d977062dc109c47ca5ff6817564": "AccessControlMock", + "8caf6b0156b3bddcfbc8fdca0f640795d2dad50a": "ArraysImpl", + "a0dd84b48b5d2c1d88cf53ceb5e3f992edb33507": "ERC1155BurnableMock", + "b423c7c0aa88de46bbfd3d42fea4db2cda7733fe": "ERC1155Mock", + "85b3c12fd1d0ddd48e056e0b40f7407323376576": "ERC1155PausableMock", + "73e683d19ff414928daa00a6fced00488cb31307": "ERC1155ReceiverMock", + "83c038d09502c0d9a0315629e03aca228f6aeca7": "SupportsInterfaceWithLookupMock", + "32bbc7aff9562c2ae47502929375cd06c0e01aab": "ERC165InterfacesSupported", + "7d163c3d68597c146c14da4df3f451afed59a2f3": "ERC20BurnableMock", + "7214c953c5c6ec720257cd10340380687965941f": "ERC20CappedMock", + "8971a5f34be9083e20af4a06fb75050ff87cc784": "ERC20DecimalsMock", + "22cfcfc29d92bda4cca9a70b78b9ddefab727ccc": "ERC20Mock", + "db4e7558d868ae1b732167860c6d77e361f552fa": "ERC20PausableMock", + "4f7b8369f212124b124bbd4ff4d9809d1462f947": "ERC20SnapshotMock", + "a98e5e8ec5b8c839786c8b5fec95f1a8c0d76999": "ERC721BurnableMock", + "6bca38a21f8600f2c6e7ba24572beeeca15a7007": "ERC721GSNRecipientMock", + "27639747781f75ef1d11c3a8af9e7f9425b6595b": "ERC721Mock", + "f1e38a0757425bc9c416626fcf8f4a73a612264a": "ERC721PausableMock", + "4fa02f6cb2fe182533fe2c180323c8bdaf20472c": "ERC721ReceiverMock", + "01f24211871a64c439300003fc8b8dc76ddff4b6": "ERC777Mock", + "d286a08d1ddefa6a8fa5b8d6d8a52f4fdee2ce0c": "GSNRecipientERC20FeeMock", + "fec57f6d1902f7fbac554b0f375b3117e8e745eb": "GSNRecipientSignatureMock", + "ea7b7becb2c1cc0987b63d7cd3065b1819bb4b0a": "PausableMock", + "7d8fde97a41abf14faf73685794d849a4c3e0ac1": "PullPaymentMock", + "0c8d3622e8f5d7562ad37806f3d75b9290558a3a": "ReentrancyMock", + "0dbc8bb2fa7ae511f40ac5143ce8817dba57d89c": "SafeERC20Wrapper", + "9c68614788325a6129235a41228ca6d0d2ae806b": "PaymentSplitter", + "8084049564949219b37e12ecf91934ad62e5a94d": "PullPayment", + "1a5d2d9ad8b09f49594f516e1c1bd434264b6441": "RefundEscrow", + "7ef8bf14f12c46b04f4bb701ac6148af107d151e": "ERC1155PresetMinterPauser", + "4d3c1b8ff12cb6f53bfe559c4001aaae2ce5bfa9": "ERC20PresetMinterPauser", + "76e1b471738b29e9ad472002b299e6ca5c992583": "ERC721PresetMinterPauserAutoId", + "13032a5e6e8c053928c1a7079d1cec08a8f72545": "ERC1155", + "e9aeb04c7cf3cfe28278030bef8e6918e8822bd0": "ERC1155Receiver", + "1524e25dfd71e549c0927267e4cf939f87eb856c": "ERC20", + "ce38bf299cd7a12c71f467aab654930a323c8947": "ERC20Burnable", + "a093419c3b2483a11d550d411c12a40b4d2bc644": "ERC20Capped", + "c13eed0a07804745778304d7af258421bc4f2c50": "TokenTimelock", + "5553fa5d1dd434b4ff2f5631f89923d65a4156db": "ERC721", + "c97967b9b005fffa9ed4fc230cf48d48e34e71bc": "ERC777", + "c6c506954a6d5d6b55db67cc577e31e7da641ecd": "Pausable", + "aa82b2ee7d508dc438e8a7d3995278479076184e": "ReentrancyGuard", + "85e7ef332d5fc621ce63ccba93ee518591bf8c8b": "GSNRecipient", + "96d2749e41cfd4e833a6178779093d82efbb7d0b": "IRelayHub", + "ffe1a6c90aa2b5556371b3799d2c65380a257d0b": "IRelayRecipient", + "0d2073be4268aabd41cce88b3769748e23142750": "SignedSafeMath", + "c0bae1111dcdf923d9a02599ff8a04c00e2456ed": "ClashingImplementation", + "4f92b6c4dfa12c3081d1fe4007e48df4c8c82e5c": "Impl", + "299556791f944a3fdbb677e5940c9d6865822606": "DummyImplementation", + "0b65288765b06e6baaa610a1d42eaa2b4591d8cd": "DummyImplementationV2", + "36075e336521530913cca767578aac6f07a38909": "InitializableMock", + "2f0630fab703c0cfc42ae33caf06e886fc4e6969": "SampleHuman", + "0de21f8a03ee4c6f6a63c6b6bf8b4f72d72ceced": "SampleMother", + "62b03120ad8b165c812e68bfdbba23080bf441b2": "SampleGramps", + "0bb55179c7e2bafad38c05cdad4d7a4a6b82d90e": "SampleFather", + "dc4d51c37ecfb1e2967ef74f7a2559a6252a5272": "SampleChild", + "85d6460e3b0ac8447a7db9493a5ff396c5e9364a": "Implementation1", + "43af63388be018e6a4448b585ee2244486d266ff": "Implementation2", + "1b7890b0027cf8b10d871746f93c892d4b2e814c": "Implementation3", + "257829569899b91fcbbfbd6fe9660d7ed25f82b1": "Implementation4", + "e179e255d203b40b5e050148327a89a4db0274af": "MigratableMockV1", + "b74cf7f9f38e31bc2c4cc77a87569a094d157de0": "MigratableMockV2", + "97d9d9e61df537b9d68d8d94b363eb8f58f9c855": "MigratableMockV3", + "36ef2be3f4842ffce40b0baad7a38c98dca86627": "ERC721PresetMinterPauserAutoId", + "44346833a6bd65fe95c90748b5722a563f3dc3e1": "Initializable", + "c2f5c325aaa4ab9aa2c8def40e53cb2e7c38dd66": "Proxy", + "62927e48e0b61e131a6cfa67ebda7218969a6f3d": "ProxyAdmin", + "a312403c3feaf629c2900ce0f0d1434bc359d428": "TransparentUpgradeableProxy", + "2dc09dba2775be34524d45a25c6a12a6064b687e": "UpgradeableProxy", + "1451ecddce18800239ff93690b719b8a654a8b2e": "ERC1155", + "4635856f8449649c520428ead6e61d6f9b1e13a8": "IERC1155", + "12525308d365e1082fcf3ada1fb2d71db3972b16": "ERC20", + "0ea2181daa5c7e76ccbabf8a9999f9fbd1833820": "ERC20Snapshot", + "65ebeb77cd51d64c2e748bd176562b4e4b3766b7": "ERC721", + "365098499bb100597dd9267be4172eb9a51e49f7": "IERC721", + "aca21574c58b1e1387769de3b07df2bd8648fe2a": "Address", + "5e2433d4880abf2da08dc7bb2b1bed1ee89500dc": "ERC721PresetMinterPauserAutoId", + "060fa9715f285857c483f5f8aa8f283597b32a8e": "TransparentUpgradeableProxy", + "eeb1b0eb21f40d26aeaa5db59da4d89bdd78eb3a": "UpgradeableProxy", + "a6e8c979be5bb5af9fbb1e614b27b38839a5894d": "ERC1155", + "99b6d5df430ce23689a152c8438164c5de872197": "ERC20", + "c60a6be3f3fce5a3b3ef5122354fffa11cc2f04a": "ERC721", + "ac504766b532baf6b726e48a8e3c99f16b2453c2": "ERC777", + "f9fd0c5c9e330675fda7856b975b0fe6b02624d0": "GSNRecipientERC20Fee", + "f1fee8d515a2f71cfbbc450e793a2d2b17caca7a": "Ownable", + "b503decf7949df51f4ba6808c081792e70437c0d": "ERC165", + "761f89f6ffc7ca427b95c3f0101db6d1f271d0e8": "IERC1820Registry", + "7640634b8811549a807f0ba07f7acb29afbedf2d": "GSNRecipientMock", + "ef02f12e6402f08a97633ad225b6b312578ad132": "PaymentSplitter", + "248a8a1273db727248a7412571724b5707d2946b": "PullPayment", + "397958f6f4842504963dbd017cfb8bc64d4cc2f8": "RefundEscrow", + "84a1ee038830d25ac77a33ebe4b6d27360da022c": "TransparentUpgradeableProxy", + "bbc4789f86eff2f3a7f1da837ae6a85de7e2f803": "ERC1155", + "73606b13add74a0032c16e323d11c28d0a62fa05": "ERC20", + "c7e4c94e1c49864431de7e3b2dea4595757189d6": "ERC20Capped", + "ca4fe971d9d72558abd50f77b6cd8b3de2554b26": "TokenTimelock", + "eab2db3a101c13a594e8f1d140adf52c64242bf1": "ERC721", + "505e83265ba5e1b1939a2c199ec99b5beef596bb": "ERC777", + "ee5e60d9ed917eab36f085b0b128c2fff2caf10b": "Pausable", + "bc88ca03e46528a04853c32ebf121df42c4d9edd": "ReentrancyGuard", + "2cefc88832911d8f000cf1f853a8a1ec34a83869": "GSNRecipientERC20Fee", + "ff468e5fb020023b45058cd9d6baa684a07c169a": "Ownable", + "62e78f66a0dc5a7ad8b7f155a4a3c0bc056d37ed": "TimelockController", + "7661544d7b4503ae1db879c1b06335abe437eb43": "ECDSA", + "79f657470505cee15284ebf0afac69c26820b6bd": "ERC165", + "3a5cd51f0635a3fb082c4e761450b541cedd5e9f": "AddressImpl", + "780be56bedddc62c2722b13e5fe2e258e07da87e": "CallReceiverMock", + "eebcccd00f6a1385ea11f82064fe982637af2cd8": "Create2Impl", + "54279277126550e93cb4518ef5b0ec055915ec67": "DummyImplementation", + "0b1c723fb1caabd0949393e90cbb3a18af826a7b": "DummyImplementationV2", + "8f7732e30464761faf28ca7d986c979cb78b55ff": "EnumerableBytes32SetMock", + "08b973b9862e47b6cef3ae3540a9c798a2e3948a": "PaymentSplitter", + "3e2e2f659b27f72c72462d35a41afed6c71e1310": "PullPayment", + "36cbd240c302af1fc3f2bd00aa7f204ccbe1e051": "RefundEscrow", + "80b95e3cad825888ef85966822547e32c545d044": "Proxy", + "fb5050efb413c3776ec0c9ffa540df1a42d3ce2b": "TransparentUpgradeableProxy", + "93c13eddcfcd62395624270cde928e5d24d3b4b8": "ERC1155", + "61e358e538e2273e31fa7133009c7a3c4ff8b9dd": "ERC1155Receiver", + "0dc22cde3abaf6c0fa621b32f9f7934e22f4c1d1": "ERC20", + "63536d5bfe0f79c8ef6782baebe76002151cb22e": "ERC20Capped", + "dd756683800487b41064dd881e0b65a419862aa0": "TokenTimelock", + "818503b17c0db33bfe69b5cc461cbc061d0c65b9": "ERC721", + "04278f72bdb6c61d366aec038058a1212a4f07e9": "IERC721Receiver", + "5512c580e9da164446f6551a20486a35e1c08807": "ERC777", + "da934a25d30edfd91855d54555dc0144dbbfd7cb": "Address", + "179de8c468d36b2e51824b07136adedae7bcbdc3": "EnumerableSet", + "12cb21575ea5e6e30c37c9a7440fcc2b3adb0845": "Pausable", + "ffca07556d8e39845429a3b009980201301c5b6e": "ReentrancyGuard", + "be045cb6e49d12aa04b07af22ad6e600d472b78f": "TimelockController", + "6af4381b463ec0dcd9e2332bff9cf3ea9568ba29": "ERC20", + "33beec74bb53c2ee0e9e12f694e367258724e6b2": "GSNRecipient", + "32a14bea425dc2959b680187600942f4901efceb": "GSNRecipientERC20Fee", + "fa5e7908a5cb10013f735b6718ba6ef4fb41b794": "__unstable__ERC20Owned", + "5d07d72245331e4275c204db282ad3900383f778": "Ownable", + "5d26e032a554805a01aca59579417663de70f966": "TimelockController", + "63a2430e318736b284bccc524d6c619d329ce419": "ECDSA", + "2cf03d8347d7129c4de359dcaa4f0dc40f88684a": "EIP712", + "92215334770433b2add7c67ac51233591f7fe922": "ERC20Permit", + "e2f97eec1c3991924b7b1456696f87048be7d783": "IERC20Permit", + "f35d0cf20e1373848e42b706d4d6aa9fd46988c2": "ERC165", + "c8909db38edab0286eb1e83f45baad9b70ed6340": "ERC165Checker", + "dbf020d120894cffa01451b8caa8cac408122c47": "ERC1820Implementer", + "a1815b90bd687d3a96e0d4cc57bc8aa5acc126a9": "SafeMath", + "1eee0a26498f2e503cda12d7f0a3631e9256d11f": "AddressImpl", + "64ba98e0a7a3462e9a936a0744ed9d1f27f4efe2": "BadBeaconNoImpl", + "49252afe482c957eb4d0d4e1f61a70fae4534bbe": "BadBeaconNotContract", + "f21645963792a804fe46d24eae733ced9792325e": "ClonesMock", + "c312288ff11bbaa9f288b73efa4e89905b4b3e0c": "DummyImplementation", + "fba59a0ad823b65925d38fba35a9fb0acba4f11c": "EIP712External", + "3f41e938116aa300aad2aefadfbcaa6193c490ef": "ERC165CheckerMock", + "f5bc328483f38e40a88c2830fc7d26319aa9b5fb": "ERC20PermitMock", + "02d7d727adc8cb0dbc83f8e1803c172a0990296f": "ERC777Mock", + "7cdf827fe3a903fbcaa418bad074950ae9f8c8d2": "ERC777SenderRecipientMock", + "3a93528b96d70af4e872192f05dfc7ee25419517": "EnumerableMapMock", + "c68710ed96a182101e1024d3e1aa91cfd2a636d2": "SafeMathMock", + "5a91c81404f840fd7f9054fe06f3a1c5036d4343": "PaymentSplitter", + "e7ac2394f80e32ef8d86823bf3ab56e94543490f": "Escrow", + "46e54ddada38f2432fbbd672068ebc144fba6137": "RefundEscrow", + "222751ccf88f680c3c75ab80cfb80797d45b2651": "ERC20PresetFixedSupply", + "1a1081be6939302bfc77c7b3be6c5f874118297f": "ERC777PresetFixedSupply", + "ce7db6d05e7868e70e75528f1c0fbd9297bc6fcf": "BeaconProxy", + "4249e310139fbc623392ee676281a60d143c16da": "Clones", + "869d95b3589c7fa6b2ecb1dfeb9008c463c267bf": "IBeacon", + "0fbaee3e2bef583ef42cb3ed731b3e40b68aea33": "Initializable", + "3785f5c4f386559127baa5a185d2ec13ad4c53af": "Proxy", + "1c570dba696f08a170e92f985d839dbe0ecb4a91": "ProxyAdmin", + "a7386fcd820a2c66235bb3e835a30b553545812f": "TransparentUpgradeableProxy", + "870cdbd1d2ddaf132c3a1a6a1d48d6ea004b123a": "UpgradeableBeacon", + "9ce86a848977d6ebddddd293ea9e81836c488c6a": "UpgradeableProxy", + "3160f17274036d6719cd64c436b4167104e70bc1": "ERC1155", + "1c6dbf08eb3ea12cf8a55ba920f32971bf194e89": "ERC1155Pausable", + "b5611144434fe88f4b7fa065d3fe437178a770ce": "ERC1155Receiver", + "1c7854ebfeea3b6b4ada23aa0dec5cdd142d5524": "ERC20", + "54480a412d33bc4808a6f4626c12a186086c236b": "ERC20Capped", + "06ea9a75c96d6774e79699e85d93b2b2daf7e701": "ERC20Snapshot", + "7042e55c509ff3cbe7c149238e29fed880359381": "TokenTimelock", + "6146ecf60a2e9e538355b19cf9095a9723197adc": "ERC721", + "7e232aaf85bb00c9401b300972a3f6322faed39d": "IERC721", + "9fa1eca3807f9186d44ae941020d506dfe551adc": "ERC777", + "041cd09ad5b7832a451916a4eab7c14b9157f9bb": "Address", + "1c6caa372c1211fa570af1576c88d16cacb426c0": "Create2", + "cafd568a2be123baff9a85ba0d347a428fb5777e": "EnumerableMap", + "1690dfe17f8334a2a88203427ce601d9c6b25760": "EnumerableSet", + "3246d2bfdfc6dd0197a0fe1497632d66ae05fd58": "Pausable", + "b12a995aa8744db27ab0e367133c4cf01eb3a9de": "Strings", + "1dca314c082a2d86c4b13fc44d00ed3caf84660d": "GSNRecipientERC20Fee", + "507897800a5e8a472a426aebecc8e766854e20cd": "__unstable__ERC20Owned", + "e7f6d7ee5a886c88c0052fc24f06e83a3f3a08d1": "Ownable", + "b1eaec929a4492a5ab9c3ee0941f4d0ad4dae002": "TimelockController", + "050c8ca6f92fe1485057a1faa1293ac23af4e9ec": "EIP712", + "4fd1e1d5762c465c2779bb5062ab69c1c15df7b6": "ERC20Permit", + "8ebfa908d5afc1a43d6c42fb85da4d675ad2acaa": "ERC165", + "69db7dc4835bf134acaadee0aa2d3f51ab9e655b": "EIP712External", + "91dc025deeeb2e4dead2db739f04e2d00619a818": "ERC20PermitMock", + "f37b58e417ed7f71db679b2c2fa5c0ce14226133": "ERC777Mock", + "b052abe16f942be8a710a608a09f437476b8ca03": "PaymentSplitter", + "47f3ee26c503ec9c706f580520db5e78af9aeeef": "RefundEscrow", + "8a505d49e69fe65120a99979dbdca39b8efe22f5": "ERC20PresetFixedSupply", + "ea8b53fd468c496848babd2a0e108b002c94c3d7": "ERC777PresetFixedSupply", + "2bc90d97df0f2ee6653f0237130bdf57ca2437ab": "BeaconProxy", + "f1f156b98ccda98d19e894c141bc0317cc5eb9c0": "TransparentUpgradeableProxy", + "1ae15cdffe0ca9340174ae68cb8d2892fe831bc5": "UpgradeableBeacon", + "1c2989c2b4cad10ff8b0ed4f7cffce37d3f7a6dd": "UpgradeableProxy", + "51ad04dc5cdffc68238a1696f78d7672555ec7dd": "ERC1155", + "48ba59afc22a61b178aba0199a30340b43f9ba62": "ERC1155Receiver", + "7cf1a0c8c25eaa2edbfccc040d2942fbb7d7596e": "ERC20", + "12d077e4475d8cc3dd032a10fb2f97138c5c2bf4": "ERC20Capped", + "8846bad470e1c4a2177e3247c29c6604a2307157": "TokenTimelock", + "171ab805afaa2a3b05e4bdba9d9a8271c77db63a": "ERC721", + "a908082bdc2115f43aabea87e8c2897833bfda29": "ERC777", + "0424544a512fcdda8b090610916a0f7c5d375387": "Pausable", + "1321258244d9c40eff5a48ed1ecb88b2577a56b7": "ERC721", + "a0a26ed94d63bffb8f31246bdfce9867514cd672": "ERC721", + "b01a301a7d54e6d284e847eb9d9e24076112808c": "TimelockController", + "69d0e361a511bf3103d25a77dbe77048ee5e0115": "TimelockController", + "ef9cee4fc16302d9c2f27edb367db294c1b81f5f": "IAccessControl", + "dab86c163c575d30473cb3a5c0624b44334efc12": "AccessControl", + "2207123df93140cd294823148a2558be596e6495": "IAccessControlEnumerable", + "abbe8b6df781ca55c069fd98e85f817213835c6d": "AccessControlEnumerable", + "9565576e12fc40a6a8a79f663a4899ef55e80c5e": "PaymentSplitter", + "92411b430030f18396dc798bcf7d29c2d53b68eb": "TimelockController", + "259338440d397d3da2a4bf44649d51cc646c5aa0": "ERC2771Context", + "566d42bf0d67adb04c1e73658ef5802b61702c97": "MinimalForwarder", + "253248bcf8aaa75c515f000d674e69e3ad2dc67c": "AccessControlEnumerableMock", + "868d87ef0ff053e2007b9e9180f2d5daede6491a": "ClonesMock", + "e4ddf77999bc8a4befcd1d9428b77ec0156f1c82": "EIP712External", + "56a0750afc35891ff98a07f7c36aecbb2103c32e": "ERC1155ReceiverMock", + "8ac6ce7dd83fe6abaaea9e149de7fab285cb6f76": "ERC165MissingData", + "b33e2d44585e75d38aa904a4e210baf4350189da": "ERC165Mock", + "e89f235cccbc06e2bac7c41f6da38fd77d4de644": "ERC165StorageMock", + "8ab8d35fe19014b9066aa8ffc249623257072208": "ERC20DecimalsMock", + "67b9f92bb0f7ef4c509fd6db84af16f6a1dc95f8": "ERC20PermitMock", + "417a78c41729dfd05ac2baac8e6678dbb95f5a05": "ERC2771ContextMock", + "4e57221ebf4782201f0d1ca5b851e5bb12ec2b8b": "ERC721BurnableMock", + "e4bb74aec903fc8db95fad4c8192ff627923d2e9": "ERC721EnumerableMock", + "cef3ef778dd17371bf88d3a20cbdcc3c71298afa": "ERC721Mock", + "9e5a3684f1b44a48c73787f823a3d7898f922753": "ERC721PausableMock", + "947534cf69fa1bf1babb1d89e68fa2435d73f59b": "ERC721ReceiverMock", + "6fbee4f33e2aa55d513022b4b6629ef896f52db1": "ERC721URIStorageMock", + "d955f8e424d0b8531fcec97fd70d2eefa06daf04": "StringsMock", + "bf6d216501296a25f572b36b4ececf1e7f752b8e": "Clones", + "3caba018d8b811d7a9487df761635928bc7caf3f": "ERC1967Proxy", + "03f4e4dc310c6685debfa53240c8029d66d6a9d5": "TransparentUpgradeableProxy", + "db88ad8eb489e2e93a76e7f0d0843f442bb3e802": "Initializable", + "fcafd1a2198e83e29448c4961babe00d479a259e": "PullPayment", + "06a7146060ceeb791b34296ac3859ddf9924c8d9": "ERC1155", + "fc0e45a63f6c27366e72fba2e93045493a1d0fcc": "ERC1155PresetMinterPauser", + "991da8c1a4e38a69803a920b2ba6f04f3534ba90": "ERC1155Receiver", + "32f4baf24d04431b9f31d7fffbc14873db05910c": "ERC20", + "b8948a765f56a1cfae8a3b92033d3a7f583d266f": "ERC20Burnable", + "3ed786a6529d43a95101022d405252fbd955f7f6": "ERC20Capped", + "975df6aa796d442e90665e8639659a8da4d06175": "ERC20Snapshot", + "d6d1fc2391215c66cbe050ddb24066c54a8ec13f": "ERC20PresetMinterPauser", + "b923239c1bd5ce64cdd82b8a78585e70ce09a0b5": "SafeERC20", + "3cc2d212711b9aed654821263900fe101441e08e": "TokenTimelock", + "ade76f270c6838a189583a70457b1f34f547fa89": "ERC721", + "e32fa6056318ff4036b6b34ae3631d92cc2ea489": "ERC721Enumerable", + "174c62a690020e2cb1b08c2ed4ebf665a78e3bd9": "ERC721URIStorage", + "387defc33a85bd87dc92cf3e1b956407169ec624": "ERC721PresetMinterPauserAutoId", + "8a77655c684246218b9a58702a073110c1960c2a": "ERC777", + "fffccb2e4aaddd018bf1f74f424764d0d8f3ddcb": "Context", + "2a02aed9ef802a8544d18afe1df202a0fc9f22fc": "Counters", + "64e303670df935fe5d0a7e7bd932ae8850f6f201": "Strings", + "b1f1fd21fabeee2b3f8d781a3f7b61d2da0fa499": "ECDSA", + "53aa499a4c694653ffb7ad64295f7564c8d25f4e": "EIP712", + "fef23c7cba2fd6827ad096a963156b7122a5714d": "Escrow", + "c52d6d7307f32769c227bc90ff35f7ed9484a418": "RefundEscrow", + "27eb537f38f4e78bf50d746739387234f230a4db": "ERC165", + "e00b58223b3f1aebcc28924cdbf577f342709c68": "ERC165Checker", + "8ab170369493cd6ef28c81f35ec9fb0597632270": "ERC165Storage", + "01bd41c8fc215254e0fccc0f1937381becb83c93": "ERC1820Implementer", + "725b5b6b3cb30d120bdc97b353b214d7e0d5457d": "SafeCast", + "c3556d686a5da76a47d19d4e3c1aa5d53cc96011": "SafeMath", + "31f7a9169859955645a6b3b01225caa339e68a92": "SignedSafeMath", + "50b36c99d71a6f1e5bc74eb37305fb633ca745b1": "EnumerableMap", + "1eeccb2aba20ae782f788b591c1c73247a2f5710": "AccessControl", + "0d100f93955e406b8f4c64256fe2fac9f58feaa3": "TimelockController", + "03ad79036f06316b924f8e839e05f9f7418203d9": "IERC1271", + "32778f5dea953b5c71cda22b9034d3a99c80a260": "IERC3156FlashBorrower", + "7a7395520740c3e9ca99f25ac256918525d6947b": "IERC3156FlashLender", + "7b42fc0929549dded5a794ba5cbb6234482d5ae5": "AccessControlEnumerableMock", + "105af4b6cb195a355234adb0f75e29dc35fbfe58": "AccessControlMock", + "e69690c196421663cbeb3e40e3ec80db2419b7f8": "ERC1271WalletMock", + "400c8eb934cb0cc695a18678a58f974169150eeb": "ERC3156FlashBorrowerMock", + "d7d5ac3eeb3537f6007674f03f33da91b2a99606": "ERC20FlashMintMock", + "760696c2eddc1f804ccdd6ad139de35e315a8f5a": "ERC721Mock", + "1aed59d47401d84a7d52819e97f7efbb125604bd": "ERC777Mock", + "d4d4dc6d063c378fe8df00eba9ea1d3da940c6df": "MulticallTest", + "d51ce27019d1ba250fe0737caab014f9c51aefd3": "MulticallTokenMock", + "5ceef95f1a2229c02c5f838080b549fefa9d185e": "SignatureCheckerMock", + "d9969b56a2b7a0b53970600d4563508c1ca509e6": "StorageSlotMock", + "1859856bc5a07e18d8967ec00b4d89cd6ea11e0a": "UUPSUpgradeableMock", + "02306349e880c95b317f34313bf0d335bcb20711": "UUPSUpgradeableUnsafeMock", + "9d3be3ef2fe57b5f8345d6bb0b34500b94b3039f": "UUPSUpgradeableBrokenMock", + "ad0004727dde87f3bf6a518a02ccc9475c378edd": "ERC1967Proxy", + "e2bf5ece630b73ede3fa56a42a625ff79cf7a07b": "ERC1967Upgrade", + "775dad710f41a2629d9d5506682c1cd574eae0a6": "BeaconProxy", + "f1865b420ea4dee35a07e61461aa012d55131f33": "TransparentUpgradeableProxy", + "a1b5157f3148bf64bed9182b4d0617a8eadfd581": "UUPSUpgradeable", + "9d146a9046589ef5728295f53cb3fc9209f6f3e9": "ERC20", + "e3f871942e9365cc12cdb31ac4196e415579b5af": "IERC20Metadata", + "1b85965b7436f201b003472d4afba8ef1e2f0707": "ERC20FlashMint", + "2207444dc8582d69d9546a2434504f679dc50d9c": "ERC20Permit", + "6e83d64273b978f98df3e2379c388010ec2860f4": "IERC20Permit", + "1751dd56c4410e19af4980136ef1ba8e54000493": "ERC721", + "5714897c18afeeddd7dbe406d9878e22f5d751d1": "ERC777", + "63d1095e1fb56da130b614eeaa63f4803f99f7e5": "Multicall", + "fe5963116e1e943c56b62faf6875a3f8482cfe84": "StorageSlot", + "b06559b6a9527a4db570993b98327d1e16908ed2": "ECDSA", + "f6325fbfc5e1ff1f03992fba565321bbc17ed789": "SignatureChecker", + "6a11687f7b7fc1433b269fd4abac331c66fa8a77": "ERC1820Implementer", + "6eb9cd105fa9d0262ed7a11160b76381b39cebd5": "IERC1820Registry", + "e91a667e7a573e6eea5d853b468e8f3d60d81889": "EnumerableSet", + "5c61094952cd50d3802c31177357efd5d8964614": "IAccessControl", + "8694d4f12fbafeb16850afc3464c06ea0a548a0a": "AccessControl", + "28331601ee481fd4a956fdbe388c3abf54f3b65b": "IAccessControlEnumerable", + "64d6a3bb174631f086b16b5e8486a5f794d976b7": "AccessControlEnumerable", + "4d7c63c045201a4bb4b072b90c0ccb7e3da4f871": "Ownable", + "42b68abf0eec947d970be6ed8863108313d0af33": "PaymentSplitter", + "c1f9217c77f35c660dfb3d88d0406508c56488a6": "TimelockController", + "bc8959ed38c71118622ffefeebc4c039b892709b": "IERC1271", + "0b811309fd111891492fcc5d96a2cb3acd8d72e9": "IERC3156FlashLender", + "b6f84fda4cb8fdbaa97a02726fa37281f78e5c91": "ERC2771Context", + "42603ef9257bbe665bb87cffe0b376d7b67712ab": "MinimalForwarder", + "c2aec4893bc9a14ca843763da02fb355261d8a85": "AddressImpl", + "aa59563d28f55355429620d46a95f62807bf714c": "ArraysImpl", + "129786c0f640a54e1262bd0fa09c0402fa4f5310": "BadBeaconNoImpl", + "c7276d5682c391177c65742657733021762fde2e": "BitMapMock", + "da0acb035f001bc47226ca65e7805071ebcbc590": "ClashingImplementation", + "9a62fc52dfa77cec1a4fb20a17dc85c2b00165b0": "ClonesMock", + "e319f874c429173e1b901ab7fc2014f7acc17b54": "ContextMockCaller", + "46564e62cbf056df3d249a990973bdb709e83c2b": "CountersImpl", + "f89165a7467e5e4a909e2b013e8383263d133e18": "Create2Impl", + "5654add772b6dac7815ecc69eeb4c6da58f6ce7c": "Impl", + "9db5258aacf562685ca737ca2de3e42ab6d55a00": "DummyImplementation", + "e2170d2050cc953a0791202b11eb01c352a015b3": "DummyImplementationV2", + "75a5093a9fb3b7de904b13481d04f0570bf5a6ff": "EIP712External", + "369690b5196bce6039aaec5397827ac325a7b4f5": "ERC1155BurnableMock", + "ffc5443dbc5dd5285e2ded467043517e152a75cc": "ERC1155Mock", + "b3a1f1f5c11bb12f910ba0e8d951451eae1d0292": "ERC1155PausableMock", + "71fec413985069608d5a44630c2fdbd3b8418ccd": "ERC1155ReceiverMock", + "5cf44c06a1081d98ecd7e65cc1aae83995055909": "ERC1155SupplyMock", + "ad0b6a02674048a5e3a3d4d4a551934a2c897c74": "SupportsInterfaceWithLookupMock", + "070505611a17dcef9932ae5eb779350f79698235": "ERC165InterfacesSupported", + "93bb8c99dfe0581125332fb3ebd0e3955144df3e": "ERC165NotSupported", + "6b299c538b2c135312b0c72d8af712c821f831a2": "ERC165Mock", + "8fee474311bd35767aa7afb389d6e4799eb5b8cf": "ERC20BurnableMock", + "bf3af764a6c36127b5ff5e46f045291de91933ec": "ERC20CappedMock", + "21c4be0176e151069878b58aae5a1d165223e6ce": "ERC20DecimalsMock", + "cd2d838c0fb41e79aae2433e909abc6c0e8122bf": "ERC20FlashMintMock", + "f83b56148b0339522b662f03900cff6983c51850": "ERC20Mock", + "e28bdd635291e4e5aefef3245e353609f1515968": "ERC20PausableMock", + "9b65c5d1a96a1e41eb6182254c051eece2af5c54": "ERC20PermitMock", + "2ba8af8608e5448e4715cda8e571bcc6cfd48963": "ERC20VotesCompMock", + "0ab46f9bd08b5723b1d914e41725574517a12ad6": "ERC20VotesMock", + "b1c70a189722a29fdab6b49e27b040472f5a2e16": "ERC20WrapperMock", + "62a9a8199169e0de7117864ee9d256bb4b52083e": "ERC2771ContextMock", + "ae5f39a87a79311e6e4ad375b3ade2b5e03131ea": "ERC3156FlashBorrowerMock", + "e09d1048186c05d41f0015ba69aa70a86b243c00": "ERC721BurnableMock", + "7fae99c0b5530d32609982b4d533509b8674f0ee": "ERC721EnumerableMock", + "9578913f5871c5e1567c53da7d5675d75dc92747": "ERC721Mock", + "449cd793d9e4639b31812292d0319b59b0ca8e55": "ERC721PausableMock", + "b10cef059262dfabaeade8ff51fd80d2aaba7537": "ERC721ReceiverMock", + "85c61f773cca6fa57c335796e1ca1f5b98ea1485": "ERC721URIStorageMock", + "75e9ad33d99c316414a0d3506cab37488b722728": "ERC777Mock", + "2af1eabb238c84878673e589fd69defacb92e040": "ERC777SenderRecipientMock", + "4ce3c0c2f9d135ac50c7075651c9b930daecd603": "EnumerableMapMock", + "867d1f1aa9db24d77f5ecb83a38eb4a60b09dce9": "EtherReceiverMock", + "a8e715f4952f7265ec539aba50e8eea7a45f924e": "InitializableMock", + "e67f151ab39236b0419d7e8b0a583c10e549efb3": "MathMock", + "1f337a2bbb0e83495566c6cff4791828463f973c": "MerkleProofWrapper", + "c02597d82e217259e7d73000bd1f2789d1c7cd61": "MulticallTest", + "517131a8a0737e26e7be43853b9c24ff6a20552d": "MulticallTokenMock", + "7fadf3b05e77e38e5049e165344022d1e624b617": "SampleHuman", + "769bdb6cddb7c34bb955535a6f0f77f49e98f292": "SampleMother", + "a2b8b3961965b90f6c7b4ecaa477bd0d77f8c7d7": "SampleGramps", + "504d033dfcae64d76986dcb5cb8c5be4d1dded4d": "SampleFather", + "86e3593fee13c15d567cc136bacdca20ea1e6101": "SampleChild", + "cb6a1051fd2f5bc747c3f773fc3af72c484ab3a7": "OwnableMock", + "24cf84f54a22c4a772fe74d9f72853640e102262": "PausableMock", + "1167e7738408a66d3897f34aeef40c9ef438686e": "PullPaymentMock", + "a8fac5d6e42c033f8c2372dcb6ccdcfd37cc1437": "ReentrancyAttack", + "7b976c578c5adaf74bc18e387c7e12147609b8a7": "ReentrancyMock", + "e66dfe8c2da2a470c76b3d0a0cfe5e7a7580de9a": "Implementation1", + "a1226699bd48b90ff377b53c4a70f27c25a9a16b": "Implementation2", + "c9e618dc47d2ac5cc6dbce47d9b0130d4cc9377e": "Implementation3", + "3ce30a36b36ec42b787dd5be03a12341207a7fa6": "Implementation4", + "f29c76324fd21e33388b40bd77ace0ef9c5c0d41": "SafeCastMock", + "2689010b084a75537c8e662d0d4c1c82460a7661": "ERC20ReturnFalseMock", + "acc2c209743671f9c4e44c829247831bf350a0a0": "ERC20ReturnTrueMock", + "74fd9057d3dffcddeae355918b7644eaa8ef7244": "ERC20NoReturnMock", + "86229693a21d889433acfa056ae7db96ba4a6cef": "SafeERC20Wrapper", + "4823c60f1f994ca554eea1ecbfa81e5b83b5d561": "SafeMathMock", + "97db478067ab766d3fa0758aca22823b38c81327": "SignatureCheckerMock", + "e826f1b32cee3777ae3a3d0bef3cd8c20ac9cf7d": "MigratableMockV1", + "2e635423850dc52ed5a3b9afdec568a0519c6402": "MigratableMockV2", + "27932bcd6aeb679027157cf623195bd425b3d85b": "MigratableMockV3", + "2786cb54d7147fd4c067acd9bcd2ccb9cc57dbd8": "StorageSlotMock", + "b17d5f234e99981e2caad9c0f56ffaa53ad3e125": "StringsMock", + "5df1b89723d0bdcc5d517d4317b9c32184247a15": "UUPSUpgradeableBrokenMock", + "d90c57be785b0a21161e20792e434763a5617e42": "Clones", + "1a59f5b5a1457a6db4f0fde03cb7ae600702f205": "ERC1967Upgrade", + "3fb535ddf3bc10f6ee9803c6d0be51c32f15947c": "Proxy", + "dd95705feafaba2f8cf136c536916bc6e15679ce": "ProxyAdmin", + "4a8ef6e66df0839cd7aaab06e9e5101d0b427ab3": "TransparentUpgradeableProxy", + "04a6f67acb954ffe770a8a034c7b342ba53d470d": "Initializable", + "dc77065c6d2328495a7a5373a4384cdfa419b536": "UUPSUpgradeable", + "52cabe02daf5bc8b106eca66daf0d7a2af4a1c28": "Pausable", + "e087c5b92178714f1e90fa95c2eb7d96e584b267": "PullPayment", + "362780bb1082d2ee05b02fbf3586f2efdf55787d": "ReentrancyGuard", + "e0b83559902f4dbc79b69b31b5d5a55566f0a4d8": "ERC1155", + "26a7097a902c5d0ec06e9afe7a1b16e919e04f4d": "IERC1155", + "f7f86cc447e330c0f2fe6c75893393527f9f0b75": "IERC1155Receiver", + "dcc175b857019b96cc84b4b554e4078167fd8061": "ERC1155Burnable", + "6dbb111b0880293ce2d796b20c6a84f2b39b537d": "ERC1155Pausable", + "6c4f2cc4be0924e6b4ad2a9b3c46efb8054335ca": "ERC1155Supply", + "0ba967a226fd02a14a5e8da8780b72a207f642df": "ERC1155PresetMinterPauser", + "8f6be89b0ce95a5a8507d0473dd6bdc86fc05893": "ERC1155Holder", + "3eed534c118e1b55d8807ccdace65018f8e6cbfd": "ERC1155Receiver", + "5861a2fbfab58b39cbd32dfc63795083f43d1e65": "ERC20", + "eefc9e89d017a91a4ce1f87accc52538bb130e97": "IERC20", + "36c08003131ccd3493f61caa424d4ef45e40abef": "ERC20Burnable", + "d577838d7d5ecc6f5fca04d568956aaf48c13597": "ERC20Capped", + "4f57398877163b33c21ce35e9e43b94b72d943ab": "ERC20FlashMint", + "4a726b7b47a1ef62e108e4eabde5e35a24fd062e": "ERC20Pausable", + "aa54946245c2f1991404df914c8a529eece3f57d": "ERC20Snapshot", + "370ff7cbbbcefc8776065285a30cda977191d936": "ERC20Votes", + "6b887b5359c94e61da10ae9dbc82502becb4b45f": "ERC20VotesComp", + "a7bc491c206021ef00c4c58e34737ed6319ccf6e": "ERC20Wrapper", + "273d56d9e427a9c91ac82db0a87ecf5d1d4da973": "ERC20Permit", + "1d200e39cf5dd9bd315f3461c1a664558662d5e8": "IERC20Permit", + "d6bac8d6f8bff3ba4a2c45d3cf23101a81a093b3": "ERC20PresetMinterPauser", + "f1eefb4a9491a1ca4f3c88a9d8518d110f7ab8e8": "SafeERC20", + "d53bbb9fbcdf3ed1c0ff29350e7c813dabf9a5ac": "TokenTimelock", + "2caaed78e7c5899dfdfdc82812a31048d90f11d7": "ERC721", + "7899b986a2072f4ac72b129375c7eac5eee84c3e": "IERC721", + "15cb97070ec4da6593205c442a6fcae406e7af9a": "IERC721Receiver", + "ef9f288af616034ca45cbbfb70926273848a17c3": "ERC721Enumerable", + "06ee92df7f5d22b92b723b7fa47a7163a8bee826": "ERC721Pausable", + "29e0c18d75d521f4530bfd591cfea713a1f49e0c": "ERC721URIStorage", + "8f3477480c38a4dfda7d4192ea80511fd8eb063d": "IERC721Enumerable", + "7a4d553b1a0193fcf9fd4d9468bb5700c27db42b": "IERC721Metadata", + "f3c528e97bbb7f9aac27c721e2d17cbc75be7ce5": "ERC721PresetMinterPauserAutoId", + "0093e17405d73820432e8da360f33ddc23308530": "ERC721Holder", + "ec44444770bfb356bacc955d93d5237656af1390": "ERC777", + "e0bfb77c486769ad6acb629279feaf28455cccc4": "IERC777", + "14955bd29186d48ce191852b38f761ce1622fef1": "Address", + "5625fde14370990aa8d4d094ba822a866b36fbd3": "Arrays", + "4ac4dc8857640e049508901478e37e13576e9925": "Context", + "55cf39dc3f389da17665b6cff3c6b4c47ee5ae5f": "Counters", + "61ca214711b37f23de183403ef96eba568654e74": "Create2", + "abe82d145668c3c90d148f2ca2971ea0cdd3c9ed": "Multicall", + "3965655fb49d3d12cb7b48155c684401673fbb96": "Strings", + "db454d7154deefdcc0d1dea7d458b572c4a0a67b": "ECDSA", + "4fea412076493cc56d86c5296289f1ccc4bd2638": "MerkleProof", + "8c92fa340338deb4146af78038d2f8195df99ed0": "SignatureChecker", + "a94f50827517d3595fb4ea61c7357ef87858dd74": "EIP712", + "2de350f849494c8ac4872728cd696d77f879efea": "Escrow", + "fc0669b213fd21fcbf82b48b6a5834a0e8e4797f": "RefundEscrow", + "ffbe0135815bb9d107067eac054384ce9c559853": "ERC165Checker", + "6843b3e0971a80f76c78626e5fbd5816449c4891": "ERC1820Implementer", + "3ab18388a1564c59b08f34c40e49fba6ed2030fa": "IERC1820Registry", + "e4a7521c8dfccec8ef656905b09facaee8dfdb01": "Math", + "69e808bc327ca30cce6784a56944f386502da108": "SafeCast", + "e3d19a417652f39488237ae86f633fc55f37ddd8": "SafeMath", + "61d0bee3d53d397afc63ceb8f5aebb843ad4f58c": "BitMaps", + "f4e98a17d92c50528ac5512cf6d19c28381a671a": "EnumerableMap", + "034b7e7cc2490688bf19079ab52aca584c622a2d": "EnumerableSet", + "3ff259364b811ce55fbaf0b7d6e145fe32532877": "AccessControl", + "982c66e73b9fd3c148d7f157a38fb08a074922a9": "AccessControlEnumerable", + "47e570ba4dfb58e4d36d325ca74008a1ac3a25ef": "IAccessControl", + "d78d847dd07ed931c12f77b0f7626eb4e0100745": "IAccessControlEnumerable", + "1f9a441bb3f9991cf0d8db4a0f7338155dc1135e": "Governor", + "c802a401fe1793af47cb8b418684023cd4d5361b": "IGovernor", + "5fd29ee0161a032ec9a5e86f2d8cd71f53bc6ed1": "GovernorCompatibilityBravo", + "0d8b9df97940d08bb323a575ef0d7060676ed260": "IGovernorCompatibilityBravo", + "54543b187e4d9f29dc31c819093f48d9969d7d8a": "GovernorCountingSimple", + "dae38923cfdcb3de8c354a88b7b13fc2ecc26e12": "GovernorProposalThreshold", + "946bb0a46b5c75167f052528a401a12768de1f45": "ICompoundTimelock", + "6d6fc8587f4cc604ecc04de3ee0f8377c88c2e38": "GovernorTimelockCompound", + "8a58931413fa94e76f02d330097fcfa9c1c48bd9": "GovernorTimelockControl", + "2eb8af93a3b36609392bf643c72a9d03f0a6f398": "GovernorVotes", + "fb68a921152337bcb1e01376223f4c55de026197": "GovernorVotesComp", + "f5c1995c54bbbda556c0b279624eb88f03cdea3f": "GovernorVotesQuorumFraction", + "bce8f84c0ec1c03925f2478e3a3fccb33f60f35e": "IGovernorTimelock", + "9bd35ec7f53dbd0a4a87d1a93c424f09916497f6": "IERC1363", + "898275960fb383e8850df71e6e26dc86a5af34ee": "IERC1363Receiver", + "8e978b1851c28780339fc78c1095ef2e9844ee55": "IERC1363Spender", + "8794d872af0a539cdb093481e698677eff5e2745": "IERC2981", + "e72cca0e88cb8abd72845272eb6c90402063a578": "IERC2612", + "2bfb18e3d399cff65ab9b803c1e058868d26387a": "ERC2771Context", + "88fb8242a3f1c90475facda5a92901c903676ce3": "ECDSAMock", + "339f780618b8638444d16c9e43ee94e0dedbd4d8": "EnumerableBytes32SetMock", + "a32259aa2046b09ffc5dc8b1a89cd3bbdf4163a1": "EnumerableAddressSetMock", + "47212bb1a4a0679b281ef4d5d1ff20b1d8e152e4": "EnumerableUintSetMock", + "6892b367ba9dbfecaf18e5ec15291d334a2a67a2": "GovernorCompMock", + "fa5c7c49cb08c80190788a5f66c38869fae7ae51": "GovernorCompatibilityBravoMock", + "aa27e63eb1eda7556b559ae08ed141575a001370": "GovernorMock", + "bc7e434e2afd6cea41ec96110028e63c2c55db42": "GovernorTimelockCompoundMock", + "d8b5430cf0a55144e3ebfb8a06f882614dbb7718": "GovernorTimelockControlMock", + "cce92ebddff5d610dca62d66c72c9cb83c62700f": "TimersBlockNumberImpl", + "83786236d97273dfc27838a31c523b1d362bf105": "TimersTimestampImpl", + "8a04dcf69374c0eb397038120d6f3efdcc2ffd76": "CompTimelock", + "60dfa68371a6272fc626fd9aae7e556621402067": "ERC1155", + "f0766528233a6368c8539a4627387175feb32b94": "ERC20", + "91e9f927a20d0de07df4ea6e3c2060bcca716ea3": "ERC20FlashMint", + "b655b4fbbb49760010632cc8d0fc006b15f0c4ee": "ERC20Votes", + "e92b2feb6b8539d301c2c4c66b91fdf11ab3a691": "ERC721", + "1fde194446c5afd545cc902213afbec2c87a46bd": "Address", + "6ced0927362ad42d906b44d8616661c2da119c84": "Timers", + "14c1e71a34bcc6538f8de689211c51c0ec0a8d11": "ECDSA", + "b590e553b7df8030182c6ecb4721a9c5dad81c98": "SignatureChecker", + "eebebdb79c1b3e1f8ffcff988f929b6dc1eda7dc": "ERC165Checker", + "9f15868ec22f5af898a458488bc83dfe12bf8817": "Math", + "2d212d3ead2002233febe7e68c6851cb66449d97": "BitMaps", + "1896e438b057c94ccba383036112041dd7cbad62": "EnumerableSet", + "898b9a1a1bb87f2ca186905c385d3bca567eebb7": "TimelockController", + "2219a93edab7ad1455f89d93bc04bfd6799232a1": "UUPSUpgradeable", + "8b6ce0d7b4ad592774afeadd155078d4027ab95a": "ERC1155SupplyMock", + "dba518f42d643a2286c0bf8eacd3613c53d85ca4": "ERC1155Supply", + "a99091ffa64d372a750e960e401381eb95593793": "AccessControl", + "27faee4bc796dc15628234c0aff9f28e6a93eda9": "AccessControlEnumerable", + "bad3e51ef939deac2032e71376b598cdbfa12b14": "Ownable", + "5492770f5c3d20f1b82762f03356ef4fd6995126": "PaymentSplitter", + "c7fbf0739abbc9f1f60596b280bbd07bb4390681": "VestingWallet", + "f258a176329f89585b497b54a6c49c51dec02479": "Governor", + "13ef8f5e7fef9d50c289b20dc3b1ee35d9fc08a5": "IGovernor", + "84f5273d82b316b964e0094fedc4790215ae3f4a": "GovernorCompatibilityBravo", + "828f00113b4c019ae42020b90286d6c0d902bc08": "IGovernorCompatibilityBravo", + "d60a1b5753981b2f04d1b3e8fe01856bca55d895": "GovernorCountingSimple", + "7b5312b7e518b77b9ca1807058090a7f27908f75": "GovernorProposalThreshold", + "5caea9b7191c8bf8fe302e98f69d61efe4a626cf": "GovernorSettings", + "392943039111895161ca27cf1884863f7f9a96b9": "GovernorTimelockCompound", + "bc5e88dd5c3e739eea0b8f33568044dd0a04abf7": "ECDSAMock", + "96506e6a865793695afaa9ba6149baf8acca2f1c": "GovernorCompMock", + "920beda23e95dc26939587a933619dfae19492c2": "GovernorCompatibilityBravoMock", + "00d7d368e9e122f5d5162e42c6247685e5c94a7a": "GovernorMock", + "6ba6c91c65d91381889a327f62e600e48bab91b5": "GovernorTimelockCompoundMock", + "22674de544356a14664077d9598afc866e1e08d3": "GovernorTimelockControlMock", + "308abb0377baa296b93206b78e0f17a7eacd5dd0": "MerkleProofWrapper", + "d594afd3a1d8065b0999fab33b33ee98afbb1a9e": "MyGovernor1", + "a6e00d1c93dca6635da940320b7ca27b97aac5a9": "MyGovernor2", + "73feea0db74075f5757321a99d1602d8255eb17f": "MyGovernor", + "514e3afefce9342035a181c08c0ec2ee4ea03640": "ReentrancyGuard", + "d324c57106e8a29e644543f66c6466102c4cff4d": "ERC1155", + "cdcb56b1b4f8d6c2baa0aad1d5d293975be3b6b6": "ERC1155Supply", + "642fb791ce5f30f714a33b8eadf51e3cc183f353": "ERC20Votes", + "5ea292ebdd2f061e9379b500f2fceba49ef00761": "ERC721", + "61ac98a69d3dfd3c15232499e2315581004d8522": "ECDSA", + "461520eae9f1d49bd16c01cdd05800f72633691d": "MerkleProof", + "876796dde039fc6fe4b5d43d9ca6e411af135800": "EIP712", + "81903dc774a37209651c9c2e0b2ba85b56f381f1": "InitializableMock", + "a0ec129eecdccb3a692f9be3661a19f39d1312e2": "ConstructorInitializableMock", + "f0b9b893ca9aad442d6d92dca525a1c5332c474b": "SampleHuman", + "1c97276a55c8d0090fa15d4b99d27deaa955e3b7": "SampleMother", + "26b8494cd75563c4d5f0b141c27c59065421eaf9": "SampleGramps", + "4fad92aa7e239a5a470b35c3ab8d1101c69c23a0": "SampleFather", + "31fd7aee4912ba9ae36ba4a04a4a05d9d2690afb": "SampleChild", + "eec4af0ee55aba5b65b0ac375db706b2541e5653": "Initializable", + "94d8214a6855376d8fcde6f26316c8d848faeb6d": "GovernorCompatibilityBravo", + "2a8c112fa192928eae7c1e7b8f8322fa7766121e": "CallReceiverMock", + "f6b1a7502344283a76b1385153d5dbe17bd792ae": "AccessControl", + "a1d8fc054c5d73114421ce0f143b4fabf3568d42": "AccessControlEnumerable", + "7019d3d6e4cf90818adcc5d8f2034670cda85daf": "Governor", + "dbbf75e8914cd4f0946c52f98d04f493e94dd620": "IGovernor", + "c00e7da3dba00f6c11fdcbbf357b6dc18110e2b9": "GovernorPreventLateQuorum", + "1bc4aae7c1537cd679c7193f3f7652101d30a892": "GovernorTimelockCompound", + "58969c4290386e434b89e71174668703cec1ab45": "GovernorTimelockControl", + "29836afa63a7f71b8afb1d048e444b4b75cd822b": "GovernorVotes", + "800c4417f2601773c7bb90aaf81a1dea6f47485f": "GovernorVotesQuorumFraction", + "5235772d4436eccec983d7c5edbd240052c9ba22": "IVotes", + "563ff993a6b7d8def9f98ac8bbba2e0d260ceff0": "Votes", + "287623ca3a4ee8b95286d73ba6b2ed74b31aa56e": "IERC2981", + "2d3287e3ef37104daa848d29ba9e569939dfb421": "IERC1822Proxiable", + "55a1a0a2c8d2703791c32dbbe88d26107897fc53": "ERC2771Context", + "0f78a22d966157b538e172ee646c8b2aa2ddcce5": "MinimalForwarder", + "2ba4a77e01e137cab1d1ad573bae7e2bfef25b8f": "Base64Mock", + "9ad73f0552ac99d3e074b3c630658afda1049412": "CheckpointsImpl", + "660557bd64e5e8e21d5d45f4ee8fb6ad951d0452": "ERC2771ContextMock", + "ea0f405b0d5c246931e84d1375055083872f097c": "ERC721RoyaltyMock", + "e0e331829d37789f4c66f72174b609e65e382d54": "ERC721VotesMock", + "c67fdb73a1ebdc6f94bd34f84f7410d860b179d4": "GovernorMock", + "3d5d49916ab335e7e63e6ac8c6bbdde4ce91774a": "GovernorPreventLateQuorumMock", + "846f47565f55b3ce4e7e1991a4f76a0f6d257cae": "GovernorTimelockCompoundMock", + "d80b0d79f0062440f20d9cd7992ef3b6412d74ee": "GovernorTimelockControlMock", + "50fc19942debe7b63d6307cc2ad4f485739a4f6f": "GovernorVoteMocks", + "50c9c79167cff6cae0533e799ccb7da86cf72d90": "ERC20ReturnFalseMock", + "1306e3dd922f348e0ad76610cec7acfbb1363489": "SignedMathMock", + "fb165320294354e11a7e2d11e8c1b73000dac9c7": "UUPSUpgradeableLegacyMock", + "794af8bd5c3a40c9e038b52ec27b22abcb52c8bb": "VotesMock", + "a3dc30773372880a622a3577d2097f9976622b0b": "MyGovernor1", + "b154ab0518de330d71a343878580a2dd4130c6cd": "MyGovernor2", + "20d2a2d2701c4357b2abce38302a1caa427ae884": "MyGovernor", + "6bc0b1abdafe6cd09f3b89d0a2204361106cd29d": "ERC1967Upgrade", + "1cce6c0614504a6d6ee709651a1182a1cbba8e2e": "Proxy", + "dd05a2a306a051e1c4c381d967584d02c114038a": "UUPSUpgradeable", + "2f99143bf51f009a94948a12b8ee5b5af48743c6": "IERC1155Receiver", + "dfd6949ce9bb4cf1b409dec313064e123de4d18d": "ERC20", + "6fa24eddd6020e757903a86dd74f335e9d6d92ae": "IERC20", + "6137641e7029f78ccdb9ed7576394655140f1687": "ERC20Burnable", + "630204f30f220515a71dada488ef5e2b5f8cac65": "ERC20FlashMint", + "f132d224bf01c7af2adab4143b27eb01e3af3908": "ERC20Votes", + "c78fb00bcac30eac9c9f09370bfb134f1fb0dace": "ERC20VotesComp", + "73965f3b502d3eb2c7b119a1a3385dbbf61431e1": "TokenTimelock", + "d1216cfae4bd3a10f1d1875dfff6d645866adf43": "ERC721", + "bf9ad9a6de08088c645ff86bdf875c0beac8a3b5": "ERC721Royalty", + "a8385ddba748ac6b2d17f1c342aba1e9b5d6927d": "IERC721Enumerable", + "6f84eff1a9116fbf20abd5c4457e4897ab40a415": "ERC721Votes", + "b457774f9fc82764468c9438603124f1243e042f": "ERC777", + "89520f76f5c9a9c6bad97750f2e01377f76bad6f": "ERC2981", + "be306f01ae84e9a1a568f703b8bcc9b1a0c49898": "Address", + "3bc96067d15f810ae58d139dd854197d0c3be98a": "Base64", + "0802f0deda6bb9b59cdbe73a5e5c6a238ea5668b": "Checkpoints", + "fc9ecdcc8173f23d1db2eecc243d1ab3999dbe35": "Multicall", + "68081d1d7d71bcdbb1507f31b71fe09f66b5ad21": "ECDSA", + "33ea0fbdba5f8542328ddac5067b9384c8988296": "MerkleProof", + "1c3856f541a8333183cfecbed1f6034030f2dd2a": "SignatureChecker", + "29e09293303b76a688d81e63b7c3469ef5459b59": "SignedMath" +} diff --git a/slither/utils/standard_libraries.py b/slither/utils/standard_libraries.py index d4cbdbe5e..8062efacc 100644 --- a/slither/utils/standard_libraries.py +++ b/slither/utils/standard_libraries.py @@ -1,5 +1,7 @@ from pathlib import Path from typing import Optional, TYPE_CHECKING +from hashlib import sha1 +from slither.utils.oz_hashes import oz_hashes if TYPE_CHECKING: from slither.core.declarations import Contract @@ -65,6 +67,16 @@ def is_openzepellin(contract: "Contract") -> bool: return is_zep +def is_openzepellin_strict(contract: "Contract") -> bool: + start = contract.source_mapping['start'] + end = start + contract.source_mapping['length'] + + # we need a way to get the source code, from a Contract + # source_code = slither.source_code[contract.source_mapping['filename_absolute']][start:end] + # source_hash = sha1(source_code.encode('utf-8')).hexdigest() + # return source_hash in oz_hashes + + def is_zos(contract: "Contract") -> bool: if not contract.is_from_dependency(): return False