@aztec/l1-artifacts 1.0.0-nightly.20250606 → 1.0.0-nightly.20250608

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/dest/CoinIssuerAbi.d.ts +28 -0
  2. package/dest/CoinIssuerAbi.d.ts.map +1 -1
  3. package/dest/CoinIssuerAbi.js +37 -0
  4. package/dest/CoinIssuerBytecode.d.ts +1 -1
  5. package/dest/CoinIssuerBytecode.js +1 -1
  6. package/dest/EmpireBaseAbi.d.ts +28 -0
  7. package/dest/EmpireBaseAbi.d.ts.map +1 -1
  8. package/dest/EmpireBaseAbi.js +37 -0
  9. package/dest/ErrorsAbi.d.ts +28 -0
  10. package/dest/ErrorsAbi.d.ts.map +1 -1
  11. package/dest/ErrorsAbi.js +37 -0
  12. package/dest/ExtRollupLibAbi.d.ts +28 -0
  13. package/dest/ExtRollupLibAbi.d.ts.map +1 -1
  14. package/dest/ExtRollupLibAbi.js +37 -0
  15. package/dest/ExtRollupLibBytecode.d.ts +1 -1
  16. package/dest/ExtRollupLibBytecode.d.ts.map +1 -1
  17. package/dest/ExtRollupLibBytecode.js +1 -1
  18. package/dest/FeeAssetHandlerAbi.d.ts +28 -0
  19. package/dest/FeeAssetHandlerAbi.d.ts.map +1 -1
  20. package/dest/FeeAssetHandlerAbi.js +37 -0
  21. package/dest/FeeAssetHandlerBytecode.d.ts +1 -1
  22. package/dest/FeeAssetHandlerBytecode.js +1 -1
  23. package/dest/FeeJuicePortalAbi.d.ts +28 -0
  24. package/dest/FeeJuicePortalAbi.d.ts.map +1 -1
  25. package/dest/FeeJuicePortalAbi.js +37 -0
  26. package/dest/FeeJuicePortalBytecode.d.ts +1 -1
  27. package/dest/FeeJuicePortalBytecode.js +1 -1
  28. package/dest/ForwarderAbi.d.ts +28 -0
  29. package/dest/ForwarderAbi.d.ts.map +1 -1
  30. package/dest/ForwarderAbi.js +37 -0
  31. package/dest/ForwarderBytecode.d.ts +1 -1
  32. package/dest/ForwarderBytecode.js +1 -1
  33. package/dest/GSEAbi.d.ts +28 -0
  34. package/dest/GSEAbi.d.ts.map +1 -1
  35. package/dest/GSEAbi.js +37 -0
  36. package/dest/GSEBytecode.d.ts +1 -1
  37. package/dest/GSEBytecode.js +1 -1
  38. package/dest/GovernanceAbi.d.ts +32 -4
  39. package/dest/GovernanceAbi.d.ts.map +1 -1
  40. package/dest/GovernanceAbi.js +41 -4
  41. package/dest/GovernanceBytecode.d.ts +1 -1
  42. package/dest/GovernanceBytecode.d.ts.map +1 -1
  43. package/dest/GovernanceBytecode.js +1 -1
  44. package/dest/GovernanceProposerAbi.d.ts +42 -0
  45. package/dest/GovernanceProposerAbi.d.ts.map +1 -1
  46. package/dest/GovernanceProposerAbi.js +56 -0
  47. package/dest/GovernanceProposerBytecode.d.ts +1 -1
  48. package/dest/GovernanceProposerBytecode.d.ts.map +1 -1
  49. package/dest/GovernanceProposerBytecode.js +1 -1
  50. package/dest/HonkVerifierAbi.d.ts +28 -0
  51. package/dest/HonkVerifierAbi.d.ts.map +1 -1
  52. package/dest/HonkVerifierAbi.js +37 -0
  53. package/dest/HonkVerifierBytecode.d.ts +1 -1
  54. package/dest/HonkVerifierBytecode.d.ts.map +1 -1
  55. package/dest/HonkVerifierBytecode.js +1 -1
  56. package/dest/IERC20Abi.d.ts +28 -0
  57. package/dest/IERC20Abi.d.ts.map +1 -1
  58. package/dest/IERC20Abi.js +37 -0
  59. package/dest/IVerifierAbi.d.ts +28 -0
  60. package/dest/IVerifierAbi.d.ts.map +1 -1
  61. package/dest/IVerifierAbi.js +37 -0
  62. package/dest/InboxAbi.d.ts +28 -0
  63. package/dest/InboxAbi.d.ts.map +1 -1
  64. package/dest/InboxAbi.js +37 -0
  65. package/dest/InboxBytecode.d.ts +1 -1
  66. package/dest/InboxBytecode.js +1 -1
  67. package/dest/MockVerifierAbi.d.ts +28 -0
  68. package/dest/MockVerifierAbi.d.ts.map +1 -1
  69. package/dest/MockVerifierAbi.js +37 -0
  70. package/dest/MockVerifierBytecode.d.ts +1 -1
  71. package/dest/MockVerifierBytecode.js +1 -1
  72. package/dest/MockZKPassportVerifierAbi.d.ts +1328 -0
  73. package/dest/MockZKPassportVerifierAbi.d.ts.map +1 -0
  74. package/dest/MockZKPassportVerifierAbi.js +1758 -0
  75. package/dest/MockZKPassportVerifierBytecode.d.ts +9 -0
  76. package/dest/MockZKPassportVerifierBytecode.d.ts.map +1 -0
  77. package/dest/MockZKPassportVerifierBytecode.js +6 -0
  78. package/dest/MultiAdderAbi.d.ts +28 -0
  79. package/dest/MultiAdderAbi.d.ts.map +1 -1
  80. package/dest/MultiAdderAbi.js +37 -0
  81. package/dest/MultiAdderBytecode.d.ts +1 -1
  82. package/dest/MultiAdderBytecode.js +1 -1
  83. package/dest/NewGovernanceProposerPayloadAbi.d.ts +28 -0
  84. package/dest/NewGovernanceProposerPayloadAbi.d.ts.map +1 -1
  85. package/dest/NewGovernanceProposerPayloadAbi.js +37 -0
  86. package/dest/NewGovernanceProposerPayloadBytecode.d.ts +1 -1
  87. package/dest/NewGovernanceProposerPayloadBytecode.d.ts.map +1 -1
  88. package/dest/NewGovernanceProposerPayloadBytecode.js +1 -1
  89. package/dest/OutboxAbi.d.ts +28 -0
  90. package/dest/OutboxAbi.d.ts.map +1 -1
  91. package/dest/OutboxAbi.js +37 -0
  92. package/dest/OutboxBytecode.d.ts +1 -1
  93. package/dest/OutboxBytecode.js +1 -1
  94. package/dest/RegisterNewRollupVersionPayloadAbi.d.ts +28 -0
  95. package/dest/RegisterNewRollupVersionPayloadAbi.d.ts.map +1 -1
  96. package/dest/RegisterNewRollupVersionPayloadAbi.js +37 -0
  97. package/dest/RegisterNewRollupVersionPayloadBytecode.d.ts +1 -1
  98. package/dest/RegisterNewRollupVersionPayloadBytecode.js +1 -1
  99. package/dest/RegistryAbi.d.ts +28 -0
  100. package/dest/RegistryAbi.d.ts.map +1 -1
  101. package/dest/RegistryAbi.js +37 -0
  102. package/dest/RegistryBytecode.d.ts +1 -1
  103. package/dest/RegistryBytecode.js +1 -1
  104. package/dest/RewardDistributorAbi.d.ts +28 -0
  105. package/dest/RewardDistributorAbi.d.ts.map +1 -1
  106. package/dest/RewardDistributorAbi.js +37 -0
  107. package/dest/RewardDistributorBytecode.d.ts +1 -1
  108. package/dest/RewardDistributorBytecode.js +1 -1
  109. package/dest/RollupAbi.d.ts +32 -30
  110. package/dest/RollupAbi.d.ts.map +1 -1
  111. package/dest/RollupAbi.js +42 -39
  112. package/dest/RollupBytecode.d.ts +14 -14
  113. package/dest/RollupBytecode.d.ts.map +1 -1
  114. package/dest/RollupBytecode.js +14 -14
  115. package/dest/RollupStorage.d.ts +3 -3
  116. package/dest/RollupStorage.js +3 -3
  117. package/dest/SlashFactoryAbi.d.ts +28 -0
  118. package/dest/SlashFactoryAbi.d.ts.map +1 -1
  119. package/dest/SlashFactoryAbi.js +37 -0
  120. package/dest/SlashFactoryBytecode.d.ts +1 -1
  121. package/dest/SlashFactoryBytecode.js +1 -1
  122. package/dest/SlasherAbi.d.ts +28 -0
  123. package/dest/SlasherAbi.d.ts.map +1 -1
  124. package/dest/SlasherAbi.js +37 -0
  125. package/dest/SlasherBytecode.d.ts +1 -1
  126. package/dest/SlasherBytecode.js +1 -1
  127. package/dest/SlashingProposerAbi.d.ts +28 -0
  128. package/dest/SlashingProposerAbi.d.ts.map +1 -1
  129. package/dest/SlashingProposerAbi.js +37 -0
  130. package/dest/SlashingProposerBytecode.d.ts +1 -1
  131. package/dest/SlashingProposerBytecode.js +1 -1
  132. package/dest/StakingAssetHandlerAbi.d.ts +194 -1
  133. package/dest/StakingAssetHandlerAbi.d.ts.map +1 -1
  134. package/dest/StakingAssetHandlerAbi.js +252 -1
  135. package/dest/StakingAssetHandlerBytecode.d.ts +1 -1
  136. package/dest/StakingAssetHandlerBytecode.d.ts.map +1 -1
  137. package/dest/StakingAssetHandlerBytecode.js +1 -1
  138. package/dest/TestERC20Abi.d.ts +28 -0
  139. package/dest/TestERC20Abi.d.ts.map +1 -1
  140. package/dest/TestERC20Abi.js +37 -0
  141. package/dest/TestERC20Bytecode.d.ts +1 -1
  142. package/dest/TestERC20Bytecode.js +1 -1
  143. package/dest/TokenPortalAbi.d.ts +28 -0
  144. package/dest/TokenPortalAbi.d.ts.map +1 -1
  145. package/dest/TokenPortalAbi.js +37 -0
  146. package/dest/TokenPortalBytecode.d.ts +1 -1
  147. package/dest/TokenPortalBytecode.js +1 -1
  148. package/dest/UniswapPortalAbi.d.ts +28 -0
  149. package/dest/UniswapPortalAbi.d.ts.map +1 -1
  150. package/dest/UniswapPortalAbi.js +37 -0
  151. package/dest/UniswapPortalBytecode.d.ts +1 -1
  152. package/dest/UniswapPortalBytecode.js +1 -1
  153. package/dest/ValidatorSelectionLibAbi.d.ts +28 -0
  154. package/dest/ValidatorSelectionLibAbi.d.ts.map +1 -1
  155. package/dest/ValidatorSelectionLibAbi.js +37 -0
  156. package/dest/ValidatorSelectionLibBytecode.d.ts +1 -1
  157. package/dest/ValidatorSelectionLibBytecode.js +1 -1
  158. package/dest/checksum.d.ts +1 -1
  159. package/dest/checksum.js +1 -1
  160. package/dest/index.d.ts +2 -0
  161. package/dest/index.d.ts.map +1 -1
  162. package/dest/index.js +2 -0
  163. package/package.json +1 -1
@@ -1,61 +1,61 @@
1
1
  /**
2
2
  * Rollup bytecode.
3
- */ export const RollupBytecode = "0x6101806040525f6003556004805461ffff19166001179055348015610022575f5ffd5b5060405161ab8e38038061ab8e83398101604081905261004191610d40565b86868686868686826040518060400160405280600c81526020016b0417a74656320526f6c6c75760a41b815250604051806040016040528060018152602001603160f81b81525061009b5f836106d060201b90919060201c565b610120526100aa8160016106d0565b61014052815160208084019190912060e052815190820120610100524660a05261013660e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b03811661016d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61017681610702565b5080516020820151610189914291610753565b5f6201518090505f82608001518360a001516040516101a790610c2a565b9182526020820152604001604051809103905ff0801580156101cb573d5f5f3e3d5ffd5b507fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cad80546001600160a01b03808b166001600160a01b0319928316179092557fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68caf8054838b169083161790557fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb08590557fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cae8054928416929091169190911790559050604083810151905163ada0269160e01b8152600481019190915273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063ada02691906024015f6040518083038186803b1580156102db575f5ffd5b505af41580156102ed573d5f5f3e3d5ffd5b50504361016052505083517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636c556020808501517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636d55604080516060810182528187015181525f8184018181529282018181529080527f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf8706363909352517fb3ade4033914152f3b005b4478fa384ef1c303edcc4f553600cf82f7ad591fe455517fb3ade4033914152f3b005b4478fa384ef1c303edcc4f553600cf82f7ad591fe555517fb3ade4033914152f3b005b4478fa384ef1c303edcc4f553600cf82f7ad591fe65560608301517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf8706368557f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636980546001600160a01b038b81166001600160a01b0319928316179092557f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636b8054928b16929091169190911790556040517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf8706361906104b290610c37565b604051809103905ff0801580156104cb573d5f5f3e3d5ffd5b50600d820180546001600160a01b0319166001600160a01b0392909216919091179055604080518082018252600c81526b0617a7465635f726f6c6c75760a41b60208083019190915291515f926105299291469130918b9101610e2a565b604051602081830303815290604052805190602001205f1c63ffffffff1690508082600701600901819055505f308c83600460405161056790610c44565b6001600160a01b03948516815293909216602084015260408301526060820152608001604051809103905ff0801580156105a3573d5f5f3e3d5ffd5b50600e840180546001600160a01b0319166001600160a01b038316179055604051909150309083906105d490610c51565b6001600160a01b0390921682526020820152604001604051809103905ff080158015610602573d5f5f3e3d5ffd5b50600f840180546001600160a01b0319166001600160a01b0392831617905560408051638ccf6b9560e01b8152905191831691638ccf6b95916004808201926020929091908290030181865afa15801561065e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106829190610e76565b6009840180546001600160a01b0319166001600160a01b039290921691909117905560c086015160e08701516106b891906107ef565b50505050505050505050505050505050505050611064565b5f6020835110156106eb576106e4836109a0565b90506106fc565b816106f68482610f1c565b5060ff90505b92915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b7fcc2bde3d21ba778aa5c156bb6fc47381978b0054c8a1ef73f44234164324cbe061077d846109dd565b81546001600160801b0319166001600160801b03919091161781556107a183610a14565b815463ffffffff91909116600160801b0263ffffffff60801b199091161781556107ca82610a14565b815463ffffffff91909116600160a01b0263ffffffff60a01b19909116179055505050565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652c8281556305f5e1006108266332f1b33685610fd6565b6108309190610ff9565b6001820155600281018290556040805160a0810182525f8082526020820181905291810182905260608101829052608081019190915261086f90610a44565b5f8080526008830160209081526040918290208351815485840151868601516060808901516080998a015163ffffffff16600160e01b026001600160e01b0365ffffffffffff928316600160b01b0265ffffffffffff60b01b1993909516600160801b0292909216600160801b600160e01b03196001600160401b0396871668010000000000000000026001600160801b0319909816969098169590951795909517959095169290921717831691909117909255835160a081018552633b9aca009281019283526001958101959095529084528251808401909352488352838201929182019061095f90610b1b16565b905281526005602091820181905282518051600386015582015160048501558282015180519185019190915501516006830155604001516007909101555050565b5f5f829050601f815111156109ca578260405163305a27a960e01b81526004016101649190611018565b80516109d58261102a565b179392505050565b5f6001600160801b03821115610a10576040516306dfcc6560e41b81526080600482015260248101839052604401610164565b5090565b5f63ffffffff821115610a10576040516306dfcc6560e41b81526020600482015260248101839052604401610164565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a00160405280610a8c8460600151610bc360201b60201c565b6001600160401b03168152602001610aad8460800151610bc360201b60201c565b6001600160401b03168152602001610ace8460400151610bf860201b60201c565b65ffffffffffff168152602001610aed845f0151610bf860201b60201c565b65ffffffffffff168152602001610b0d8460200151610a1460201b60201c565b63ffffffff16905292915050565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610bbe577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b95573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb9919061104d565b905090565b504a90565b5f6001600160401b03821115610a1057604080516306dfcc6560e41b8152600481019190915260248101839052604401610164565b5f65ffffffffffff821115610a10576040516306dfcc6560e41b81526030600482015260248101839052604401610164565b611dd98061652583390190565b610173806182fe83390190565b611c368061847183390190565b610ae78061a0a783390190565b6001600160a01b0381168114610c72575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715610cac57610cac610c75565b60405290565b604051606081016001600160401b0381118282101715610cac57610cac610c75565b5f6101008284031215610ce5575f5ffd5b610ced610c89565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e0928301519281019290925250919050565b5f5f5f5f5f5f5f878903610200811215610d58575f5ffd5b8851610d6381610c5e565b60208a0151909850610d7481610c5e565b60408a0151909750610d8581610c5e565b60608a0151909650610d9681610c5e565b60808a0151909550610da781610c5e565b93506060609f1982011215610dba575f5ffd5b50610dc3610cb2565b60a0890151815260c0890151602082015260e089015160408201529150610dee896101008a01610cd4565b905092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60c081525f610e3c60c0830187610dfc565b905084602083015260018060a01b03841660408301528251606083015260208301516080830152604083015160a083015295945050505050565b5f60208284031215610e86575f5ffd5b8151610e9181610c5e565b9392505050565b600181811c90821680610eac57607f821691505b602082108103610eca57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610f1757805f5260205f20601f840160051c81016020851015610ef55750805b601f840160051c820191505b81811015610f14575f8155600101610f01565b50505b505050565b81516001600160401b03811115610f3557610f35610c75565b610f4981610f438454610e98565b84610ed0565b6020601f821160018114610f7b575f8315610f645750848201515b5f19600385901b1c1916600184901b178455610f14565b5f84815260208120601f198516915b82811015610faa5787850151825560209485019460019092019101610f8a565b5084821015610fc757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b80820281158282048414176106fc57634e487b7160e01b5f52601160045260245ffd5b5f8261101357634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f610e916020830184610dfc565b80516020808301519190811015610eca575f1960209190910360031b1b16919050565b5f6020828403121561105d575f5ffd5b5051919050565b60805160a05160c05160e051610100516101205161014051610160516154756110b05f395f61093401525f612e8501525f612e5901525f50505f50505f50505f50505f50506154755ff3fe608060405234801561000f575f5ffd5b50600436106104f3575f3560e01c80637de3ca891161028f578063c27f08b511610161578063d9bbd278116100d5578063ed9187b71161008f578063ed9187b714610c2b578063ede57c3414610c48578063ee3b8dc214610c50578063f2e97fa714610c63578063f2fde38b14610c6b578063fcb3f6ba14610c7e575f5ffd5b8063d9bbd27814610bb7578063dc1bb8f414610bbf578063e0fae2a914610bd2578063e3380b7914610be5578063e48a5f7b14610bed578063e6e2844014610c18575f5ffd5b8063cf20d87211610126578063cf20d87214610b49578063d03b2bae14610b51578063d0c80f1314610b64578063d43b51d114610b94578063d768df6e14610b9c578063d8e3784c14610baf575f5ffd5b8063c27f08b514610adc578063c38f2a6d14610aef578063c4014c1214610b02578063c7523d7914610b23578063c9d1e01214610b36575f5ffd5b806391ee8b6411610203578063a32fbb7b116101bd578063a32fbb7b14610a8b578063a7f8e64614610a93578063aabc249614610aa6578063b67d057b14610ab9578063b97dd9e214610ac1578063b9d0916314610ac9575f5ffd5b806391ee8b6414610a09578063966ab4ee14610a295780639e0fedd814610a315780639f2b315414610a53578063a011f6a914610a5b578063a2429e8814610a78575f5ffd5b806388e4a0731161025457806388e4a073146109ba5780638ccf6b95146109c25780638da5cb5b146109ca5780638f2a2b26146109db5780638fcc697a146109ee57806390a3b38614610a01575f5ffd5b80637de3ca891461096957806380edb5bd1461097157806384b0196e14610984578063850bee351461099f5780638789a132146109a7575f5ffd5b806348b9e57b116103c857806368faa7781161033c57806372c6c710116102f657806372c6c710146108a85780637468582f146108fc57806374af185e14610909578063754eddb71461091c57806379ed8ead1461092f5780637afeed2814610956575f5ffd5b806368faa7781461080457806369457a6f1461081757806370192e561461082a578063715018a614610870578063723d8e9614610878578063725e494e14610895575f5ffd5b80635a97eaa11161038d5780635a97eaa11461076a5780635aa516001461077d5780635d3ea8f1146107905780635dc0ff94146107b15780635f82401f146107d157806368bdcbc5146107f1575f5ffd5b806348b9e57b146107375780634a1770081461073f5780634eb4a4d6146107525780634ed7e4351461075a578063508ac49b14610762575f5ffd5b806330ccebb51161046a578063386f56fc11610424578063386f56fc1461069e57806338b39d29146106c55780633b10244b146106df5780633f47ad06146106e75780634267d0bd146106ef57806342d21ef7146106f7575f5ffd5b806330ccebb5146105e05780633334f7dc1461060057806333f9acb41461062357806334a51ed51461064b578063368c093c1461066b5780633777e8631461068b575f5ffd5b80630d8e6e2c116104bb5780630d8e6e2c14610582578063160bbf8a1461058a5780631708095c1461059d5780631be94175146105a55780631cfe2878146105b857806329c24030146105d8575f5ffd5b80630121b93f146104f757806302a214601461050c57806302fb4d851461052757806304c075691461053a5780630808ee6e1461056f575b5f5ffd5b61050a61050536600461420c565b610c90565b005b610514610cf3565b6040519081526020015b60405180910390f35b61050a610535366004614237565b610d16565b61054d61054836600461420c565b610d24565b604080518251815260208084015190820152918101519082015260600161051e565b61050a61057d36600461426e565b610dc0565b610514610e3c565b61050a610598366004614483565b610e4e565b610514610e9c565b61050a6105b336600461454b565b610eae565b6105cb6105c636600461420c565b610f25565b60405161051e91906145dd565b610514610f39565b6105f36105ee36600461461d565b610f47565b60405161051e919061466c565b61061361060e36600461467a565b610f51565b604051901515815260200161051e565b6106366106313660046146a5565b610f9b565b6040805192835260208301919091520161051e565b61065e61065936600461461d565b6110a1565b60405161051e9190614709565b6106736110b2565b6040516001600160a01b03909116815260200161051e565b61051461069936600461420c565b6110cd565b7fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb054610514565b734355415548584943414c4c490000000000000000610673565b6106736110fc565b610514611106565b61051461111c565b61070a61070536600461420c565b611150565b604080519687526020870195909552938501929092526060840152608083015260a082015260c00161051e565b6105146111b3565b61050a61074d36600461461d565b6111bc565b6105146111c8565b6105cb6111e1565b61050a6111ec565b61051461077836600461420c565b6111f6565b61050a61078b36600461420c565b611215565b5f5160206154005f395f51905f5254600160a01b900463ffffffff16610514565b6107c46107bf36600461461d565b611226565b60405161051e9190614755565b6107e46107df36600461420c565b611237565b60405161051e9190614763565b61050a6107ff36600461420c565b611253565b61051461081236600461477a565b611264565b6105cb61082536600461420c565b611318565b61083d6108383660046147a8565b611323565b60405161051e91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b61050a611354565b5f5160206154005f395f51905f52546001600160801b0316610514565b61050a6108a336600461461d565b611365565b6108bb6108b636600461420c565b611376565b60405161051e91905f60a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b6004546106139060ff1681565b61051461091736600461420c565b611440565b61051461092a3660046147a8565b61144a565b6105147f000000000000000000000000000000000000000000000000000000000000000081565b61051461096436600461420c565b61145d565b61051461147e565b61051461097f36600461420c565b611492565b61098c61149c565b60405161051e9796959493929190614833565b6106736114de565b6105146109b536600461461d565b6114f9565b6107e4611523565b61067361155c565b6002546001600160a01b0316610673565b6105146109e936600461420c565b611577565b61050a6109fc3660046148a2565b611593565b6105146115ef565b610a1c610a173660046148bd565b6115f9565b60405161051e9190614989565b6105cb61168c565b610a44610a3f36600461499b565b611699565b60405161051e939291906149d9565b61050a61172d565b5f5160206153a05f395f51905f52546001600160a01b0316610673565b61050a610a8636600461420c565b61175b565b610673611787565b610673610aa136600461420c565b6117a2565b61050a610ab436600461461d565b6117ac565b6105146117f4565b610514611806565b610514610ad736600461420c565b611810565b610673610aea36600461420c565b61181a565b61050a610afd3660046149fd565b611845565b5f5160206154005f395f51905f5254600160801b900463ffffffff16610514565b610514610b3136600461461d565b61187c565b610514610b4436600461420c565b611920565b61067361192a565b610514610b5f36600461420c565b611945565b7fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cae546001600160a01b0316610673565b61051461194f565b610514610baa366004614a34565b611961565b610514611a03565b610514611a0d565b610613610bcd36600461420c565b611a84565b610636610be036600461420c565b611a8e565b61050a611aaa565b610c00610bfb36600461461d565b611b04565b60405190516001600160a01b0316815260200161051e565b61050a610c2636600461420c565b611b1b565b5f5160206153c05f395f51905f52546001600160a01b0316610673565b610514611b59565b610613610c5e366004614ad9565b611b73565b61050a611bed565b61050a610c7936600461461d565b611c2f565b60045461061390610100900460ff1681565b604051630121b93f60e01b81526004810182905273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__90630121b93f906024015b5f6040518083038186803b158015610cda575f5ffd5b505af4158015610cec573d5f5f3e3d5ffd5b5050505050565b5f5f610cfd611c69565b80545f9081526002909101602052604090205492915050565b610d208282611c8d565b5050565b610d4560405180606001604052805f81526020015f81526020015f81525090565b5f610d4e611c69565b80549091508381811115610d835760405163e5edf84760e01b8152600481019290925260248201526044015b60405180910390fd5b50505f9283526002908101602090815260409384902084516060810186528154815260018201549281019290925290910154928101929092525090565b604051630404773760e11b81526001600160a01b03808516600483015283166024820152811515604482015273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__90630808ee6e906064015f6040518083038186803b158015610e21575f5ffd5b505af4158015610e33573d5f5f3e3d5ffd5b50505050505050565b5f610e45611c69565b60100154919050565b610e336040518060e00160405280610e668a8a612049565b8152602001878152602001868152602001858152602001610e8886600161144a565b8152602001848152602001838152506121f7565b5f610ea5611c69565b60070154919050565b6004805460405163a911737f60e01b815273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9263a911737f92610ef392899289928992899260ff9092169101614c40565b5f6040518083038186803b158015610f09575f5ffd5b505af4158015610f1b573d5f5f3e3d5ffd5b5050505050505050565b6060610f3361082583611920565b92915050565b5f610f4261244d565b905090565b5f610f3382612471565b5f610f5a611c69565b5f8581526005919091016020908152604080832086845260020182528083206001600160a01b038616845260010190915290205460ff1690505b9392505050565b5f5f5f610fa78561253f565b90505f610fb2611c69565b90505f610fbe8761257d565b5f8181526002848101602052604090912001549091508084808210610fff5760405163083510bd60e41b815260048101929092526024820152604401610d7a565b50505f828152600284016020526040902054808880821461103c57604051635b41520760e11b815260048101929092526024820152604401610d7a565b50505f6110518661104c886125a7565b6125ce565b905080336001600160a01b038216811461108057604051631510874d60e31b8152600401610d7a929190614d0e565b5086905061108f856001614d3c565b975097505050505050505b9250929050565b6110a9614114565b610f3382612633565b5f6110bb611c69565b600e01546001600160a01b0316919050565b5f5f6110d7611c69565b80549091508311156110e9575f610f94565b5f92835260020160205250604090205490565b5f610f424261181a565b5f5f5160206154205f395f51905f525b54919050565b5f610f4261112861194f565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652e5490612709565b5f5f5f5f5f5f5f61115f611c69565b60018101545f818152600283016020526040808220548454808452919092205493945091929091906111908c6110cd565b600186015461119e90611492565b949d939c50919a509850965090945092505050565b5f611116611c69565b6111c58161271b565b50565b5f5f5160206154205f395f51905f525b60020154905090565b6060610f42426129b8565b6111f4612a3c565b565b5f6111ff611c69565b5f92835260050160205250604090206001015490565b61121d612af7565b6111c581612b24565b61122e614149565b610f3382612b34565b604080518082019091525f8082526020820152610f3382612bd1565b61125b612af7565b6111c581612c39565b5f5f61126e611c69565b6001600160a01b0384165f908152600682016020908152604080832088845290915290205490915060ff16156112a7575f915050610f33565b5f848152600582016020908152604080832080548085526002820184528285206001600160a01b038916865260010190935292205460ff161561130d575f81815260028301602052604090205460018301546113039190614d63565b9350505050610f33565b505f95945050505050565b6060610f3382612c49565b61134a60405180608001604052805f81526020015f81526020015f81526020015f81525090565b610f948383612c61565b61135c612af7565b6111f45f612c9f565b61136d612af7565b6111c581612cf0565b6113a36040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b5f8281527f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de65346020908152604091829020825160a08101845290546001600160401b0380821683526801000000000000000082041692820192909252600160801b820465ffffffffffff90811693820193909352600160b01b82049092166060830152600160e01b900463ffffffff166080820152610f3390612d1d565b5f610f33826125a7565b5f610f946114588484611323565b612db3565b5f61146f61146a83611920565b612dd5565b6001600160e01b031692915050565b5f5f5160206153e05f395f51905f526111d8565b5f610f3382612dfa565b5f6060805f5f5f60606114ad612e52565b6114b5612e7e565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f6114e7611c69565b600801546001600160a01b0316919050565b5f611502611c69565b6001600160a01b039092165f90815260049290920160205250604090205490565b604080518082019091525f808252602082015261153e611c69565b60408051808201909152815481526001909101546020820152919050565b5f611565611c69565b600901546001600160a01b0316919050565b5f611580611c69565b5f92835260030160205250604090205490565b61159b612af7565b600480548215156101000261ff00199091161790556040517ffa50fc5c953ca42e5b6a7acac6e13c95c2ec283b259630f1d839e445fcec8c94906115e490831515815260200190565b60405180910390a150565b5f610f4242612eab565b60405163d99537c960e01b815260609073__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063d99537c99061163f908b908b908b908b908b908b908b90600401614da8565b5f60405180830381865af4158015611659573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116809190810190614e42565b98975050505050505050565b6060610f42610825611806565b6004805460405163f711e6c360e01b81526060925f92839273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9263f711e6c3926116df928a928a9260ff169101614e73565b5f60405180830381865af41580156116f9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526117209190810190614e98565b9250925092509250925092565b61173642612f08565b6117535760405163850defd360e01b815260040160405180910390fd5b6111f4612f70565b611763612af7565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652e55565b5f611790611c69565b600f01546001600160a01b0316919050565b5f610f3382612fc5565b6117b4612af7565b60405163555e124b60e11b81526001600160a01b038216600482015273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063aabc249690602401610cc4565b5f6117fd611c69565b60010154919050565b5f610f424261304c565b5f610f338261253f565b5f5f6118258361253f565b90505f611831826125a7565b905061183d82826125ce565b949350505050565b604051630f484ad560e01b815273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__90630f484ad590610cc4908490600401614ee3565b6004545f90610100900460ff166118a65760405163e8b9b95160e01b815260040160405180910390fd5b60405163c7523d7960e01b81526001600160a01b038316600482015273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063c7523d7990602401602060405180830381865af41580156118fc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f339190614f80565b5f610f338261304c565b5f611933611c69565b600a01546001600160a01b0316919050565b5f610f338261309e565b5f610f4261195b611c69565b546130d7565b6004545f90610100900460ff1661198b5760405163e8b9b95160e01b815260040160405180910390fd5b604051636bb46fb760e11b815273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063d768df6e906119c49086908690600401614f97565b602060405180830381865af41580156119df573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f949190614f80565b5f610f424261253f565b5f5160206153c05f395f51905f525460408051631e328a3b60e31b815290515f926001600160a01b03169163f19451d89160048083019260209291908290030181865afa158015611a60573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f429190614f80565b5f610f3382612f08565b5f5f611aa1611a9c84611920565b61312b565b91509150915091565b73__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__63e3380b796040518163ffffffff1660e01b81526004015f6040518083038186803b158015611aec575f5ffd5b505af4158015611afe573d5f5f3e3d5ffd5b50505050565b60408051602081019091525f8152610f33826131a5565b611b23612af7565b611b2c8161322e565b60405181907faaa1053539ab4621b2aecf54a7ccf2096610ff768f32261f667aca9ae3069482905f90a250565b5f611b6561146a611806565b6001600160e01b0316905090565b60405163771dc6e160e11b81525f9073__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063ee3b8dc290611bae9086908690600401614d0e565b602060405180830381865af4158015611bc9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f949190614fec565b73__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__63f2e97fa76040518163ffffffff1660e01b81526004015f6040518083038186803b158015611aec575f5ffd5b611c37612af7565b6001600160a01b038116611c6057604051631e4fbdf760e01b81525f6004820152602401610d7a565b6111c581612c9f565b7f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636190565b7fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cae545f5160206153a05f395f51905f52906001600160a01b031633808214611cea576040516311d37a1960e11b8152600401610d7a929190614d0e565b50506001600160a01b0383165f90815260048201602052604090206003810154600160a81b900460ff1615611db657600281015442108490611d4b57604051630116fd2560e61b81526001600160a01b039091166004820152602401610d7a565b5082816001015403611d98576001600160a01b0384165f908152600483016020526040812081815560018101829055600281019190915560030180546001600160b01b0319169055612000565b82816001015f828254611dab9190615007565b909155506120009050565b600282015460405163f4603fe160e01b81525f9182916001600160a01b039091169063f4603fe190611dee9030908a90600401614d0e565b606060405180830381865afa158015611e09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e2d919061501a565b5091509150808690611e5e57604051631f8bdfc760e21b81526001600160a01b039091166004820152602401610d7a565b50600284015460405163f3fef3a360e01b81526001600160a01b038881166004830152602482018890525f92839283929091169063f3fef3a3906044016060604051808303815f875af1158015611eb7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611edb9190615059565b919450925090505f611eed8985615007565b9050828015611efb57505f81115b15611ff9576040518060c00160405280838152602001828152602001611f25428b60030154613265565b8152602001876001600160a01b031681526020015f1515815260200160011515815250886004015f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160030160146101000a81548160ff02191690831515021790555060a08201518160030160156101000a81548160ff0219169083151502179055509050505b5050505050505b836001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd8460405161203b91815260200190565b60405180910390a250505050565b612051614186565b61015c8280821461207e5760405163f3ccb24760e01b815260048101929092526024820152604401610d7a565b5050612088614186565b61209560205f8587615091565b61209e916150b8565b81526120ae604060208587615091565b6120b7916150b8565b6020820151526120cb606060408587615091565b6120d4916150b8565b60208083015101526120ea608060608587615091565b6120f3916150b8565b60208201516040015261210a60a060808587615091565b612113916150b8565b60208201516060015261212a60c060a08587615091565b612133916150b8565b604082015261214660c860c08587615091565b61214f916150d5565b60c01c606082015261216560dc60c88587615091565b61216e9161510d565b60601c608082015261218460fc60dc8587615091565b61218d916150b8565b60a08201526121a161011c60fc8587615091565b6121aa916150b8565b60c0820151526121c061013c61011c8587615091565b6121c9916150b8565b60c0820151602001526121e261015c61013c8587615091565b6121eb916150b8565b60e08201529392505050565b6121ff61244d565b815160e001511115612224576040516313258e7d60e01b815260040160405180910390fd5b5f61222d611c69565b90505f61223d836060015161257d565b5f81815260028401602052604090205484515191925090819080821461227f57604051635b41520760e11b815260048101929092526024820152604401610d7a565b505083516040908101515f84815260028681016020529290209091015480828082106122c75760405163083510bd60e41b815260048101929092526024820152604401610d7a565b50505f6122d7876060015161253f565b90508083808214612304576040516309ba91ff60e01b815260048101929092526024820152604401610d7a565b50505f6123108461309e565b885160600151909150819081811461234457604051633132e89560e01b815260048101929092526024820152604401610d7a565b5050612354818960600151101590565b88606001518290916123825760405163089f306960e41b815260048101929092526024820152604401610d7a565b505060c088015151806123a1575060a088015188516020908101510151145b88516020908101510151906123cc5760405163414906c360e01b8152600401610d7a91815260200190565b50875160c0015151156123f257604051636ce3afa960e11b815260040160405180910390fd5b6080880151885160c001516020015180821461242a576040516339db6c4b60e11b815260048101929092526024820152604401610d7a565b5050610f1b84612439866125a7565b8a602001518b604001518c60c00151613270565b5f5160206154205f395f51905f5280545f919061246b90600261514d565b91505090565b5f5f61247c83612b34565b90505f5f5160206153a05f395f51905f5260020154604051630a6718eb60e31b81526001600160a01b0390911690635338c758906124c09030908890600401614d0e565b602060405180830381865afa1580156124db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ff9190614f80565b90505f8260a001511561252657826080015161251c57600261251f565b60035b905061183d565b5f8211612533575f612536565b60015b95945050505050565b5f5160206154005f395f51905f5280545f9190600160801b810463ffffffff1690612573906001600160801b031685615007565b610f949190614d63565b5f5f612587611c69565b905061259283612f08565b61259d578054610f94565b6001015492915050565b5f5f5160206154005f395f51905f5254610f3390600160a01b900463ffffffff1683614d63565b5f5f6125d983612dd5565b90505f6125e68483613584565b905080515f036125fa575f92505050610f33565b806126118587856001600160e01b03168551613611565b8151811061262157612621615164565b60200260200101519250505092915050565b61263b614114565b604051806080016040528061264f84612471565b600381111561266057612660614638565b81526020015f5160206153a05f395f51905f5260020154604051630a6718eb60e31b81526001600160a01b0390911690635338c758906126a69030908890600401614d0e565b602060405180830381865afa1580156126c1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126e59190614f80565b81526020016126f384612b34565b8152602001612701846131a5565b905292915050565b5f610f948383633b9aca006001613652565b6001600160a01b038181165f9081527fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb16020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600390910154918216606082015260ff600160a01b8304811615156080830152600160a81b909204909116151560a082018190525f5160206153a05f395f51905f52919083906127e95760405163077ab37760e51b81526001600160a01b039091166004820152602401610d7a565b508060800151839061281a5760405163077ab37760e51b81526001600160a01b039091166004820152602401610d7a565b50604081015142908082101561284c57604051632238609b60e21b815260048101929092526024820152604401610d7a565b50506001600160a01b038381165f908152600484810160205260408083208381556001810184905560028082019490945560030180546001600160b01b031916905591850154845192516333f3d8ff60e01b8152918201929092529116906333f3d8ff906024015f604051808303815f87803b1580156128ca575f5ffd5b505af11580156128dc573d5f5f3e3d5ffd5b505083546060840151602085015160405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529116925063a9059cbb91506044016020604051808303815f875af1158015612939573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295d9190614fec565b5080606001516001600160a01b0316836001600160a01b03167f66c8566b2b2f6e94c4aeb1a2b19fb4453fe9ed72ac3c4e152f257d655c13b5bf83602001516040516129ab91815260200190565b60405180910390a3505050565b60605f5160206153a05f395f51905f526002015460405163bd76784b60e01b8152306004820152602481018490526001600160a01b039091169063bd76784b906044015f60405180830381865afa158015612a15573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f339190810190615178565b5f612a464261253f565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de6533549091505f5160206154205f395f51905f52905f90612a9190612a8c60056002613694565b613265565b905082811115612aa057505050565b60058201546003830155600682015460048301556040805180820190915248815260208101612acd61369f565b905280516005840155602001516006830155612aea836002613265565b6007909201919091555050565b6002546001600160a01b031633146111f45760405163118cdaa760e01b8152336004820152602401610d7a565b80612b2d611c69565b600b015550565b612b3c614149565b506001600160a01b039081165f9081527fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb16020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600390910154918216606082015260ff600160a01b8304811615156080830152600160a81b909204909116151560a082015290565b604080518082019091525f80825260208201525f5160206154205f395f51905f52612c07612bfe8461253f565b60078301541190565b612c145760058101612c19565b600381015b604080518082019091528154815260019091015460208201529392505050565b80612c42611c69565b600c015550565b60605f612c5583612dd5565b9050610f948382613584565b612c8860405180608001604052805f81526020015f81526020015f81526020015f81525090565b5f612c928461257d565b905061183d81858561371e565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80612cf9611c69565b600d0180546001600160a01b0319166001600160a01b039290921691909117905550565b612d4a6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060a00160405280836060015165ffffffffffff168152602001836080015163ffffffff168152602001836040015165ffffffffffff168152602001835f01516001600160401b0316815260200183602001516001600160401b03168152509050919050565b8051606082015160408301515f9291612dcb91614d3c565b610f339190614d3c565b5f5f5160206153e05f395f51905f52610f94612df08461394d565b6001830190613981565b5f5f612e04611c69565b80549091508381811115612e345760405163e5edf84760e01b815260048101929092526024820152604401610d7a565b50505f838152600280830160205260409091200154610f94906125a7565b6060610f427f00000000000000000000000000000000000000000000000000000000000000005f6139d7565b6060610f427f000000000000000000000000000000000000000000000000000000000000000060016139d7565b5f5f5160206153a05f395f51905f526002015460405163ec6e69db60e01b8152306004820152602481018490526001600160a01b039091169063ec6e69db90604401602060405180830381865afa1580156118fc573d5f5f3e3d5ffd5b5f5f612f12611c69565b600181015481549192509003612f2a57505f92915050565b6001808201545f91612f4491612f3f91614d3c565b612dfa565b90505f612f5d612f5383613a80565b6007850154613265565b905061253681612f6c8761253f565b1190565b5f612f79611c69565b80546001820154808355604080519182526020820183905292935090917fc78a70f3b27748d5fa327f6a3c1104b9b007d6a80d20c41f7c0dc4543fbdbdcd910160405180910390a15050565b5f5f5160206153a05f395f51905f526002015460405163a9cd26c960e01b8152306004820152602481018490524260448201526001600160a01b039091169063a9cd26c990606401602060405180830381865afa158015613028573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f339190615207565b5f5160206154005f395f51905f5280545f919061307f9063ffffffff600160801b8204811691600160a01b900416615222565b815463ffffffff9190911690612573906001600160801b031685615007565b5f5160206154005f395f51905f5280545f9190610f94906001600160801b03811690612a8c90600160801b900463ffffffff168661514d565b5f8181527f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de653460205260408120545f5160206154205f395f51905f5290610f9490600160801b900465ffffffffffff16613aa7565b5f8181525f5160206153e05f395f51905f5260208190526040822054919082820361316d5761316a6131658561316087612dd5565b613584565b613abc565b92505b5f61317785613aeb565b90506131888163ffffffff16612eab565b9250816002015483111561319e57816002015492505b5050915091565b604080516020810182525f81525f5160206153c05f395f51905f52549151635dee5f6b60e11b815290916001600160a01b03169063bbdcbed6906131ef9030908690600401614d0e565b602060405180830381865afa15801561320a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f339190615241565b5f5160206154205f395f51905f528181556305f5e1006132526332f1b3368461514d565b61325c9190614d63565b60019091015550565b5f610f948284614d3c565b5f5f61327b8661312b565b91509150805f0361328d575050610cec565b82602001511561329e575050610cec565b845181908082146132cb57604051633a48c66360e21b815260048101929092526024820152604401610d7a565b50505f6132eb87896132dc8a612dd5565b6001600160e01b031685613611565b90505f60036132fb84600261514d565b6133059190614d63565b613310906001614d3c565b90505f80846001600160401b0381111561332c5761332c6142f3565b604051908082528060200260200182016040528015613355578160200160208202803683370190505b507f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c8a9052603c8120919250905f5b8b518110156134b7575f8c82815181106133a6576133a6615164565b6020026020010151905080602001515f015160ff165f146134775760208181015180518183015160409283015183515f80825295810180865289905260ff909316938301939093526060820152608081019190915260019060a0016020604051602081039080840390855afa158015613421573d5f5f3e3d5ffd5b5050506020604051035190508086848151811061344057613440615164565b6001600160a01b0390921660209283029190910190910152866134628161528c565b97505088830361347157600194505b506134ae565b805f015185838151811061348d5761348d615164565b60200260200101906001600160a01b031690816001600160a01b0316815250505b5060010161338a565b505f8387815181106134cb576134cb615164565b6020026020010151905082806134e957506001600160a01b03811633145b8133909161350c57604051631510874d60e31b8152600401610d7a929190614d0e565b50869050858181101561353b5760405163af47297f60e01b815260048101929092526024820152604401610d7a565b50505f61354785613abc565b9050898114613573576040516332a3565560e21b815260048101829052602481018b9052604401610d7a565b505050505050505050505050505050565b60605f5160206153e05f395f51905f525f61359e85613aeb565b90505f6135b08263ffffffff16612eab565b60028401549091508082118015906135dd576135d18463ffffffff166129b8565b95505050505050610f33565b5f6135f283858a6001600160e01b0316613b1b565b90506136048563ffffffff1682613c56565b9650505050505050610f33565b6040805160208101869052908101849052606081018390525f908290608001604051602081830303815290604052805190602001205f1c61253691906152a4565b5f61367f61365f83613cd8565b801561367a57505f848061367557613675614d4f565b868809115b151590565b61368a868686613d04565b6125369190614d3c565b5f610f948284615007565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15613719577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a60573d5f5f3e3d5ffd5b504a90565b61374560405180608001604052805f81526020015f81526020015f81526020015f81525090565b5f5160206154205f395f51905f5280545f8190036137875760405180608001604052805f81526020015f81526020015f81526020015f81525092505050610f94565b5f5f5f5f61379489612bd1565b90505f6137a461c350600361514d565b6137b190620249f0614d3c565b82519091505f906137c2908361514d565b60208401519091506137d862020000600361514d565b6137e2919061514d565b6137ec9082614d3c565b90506137fc816001896001613652565b9550505061384e61384461383a620f4240845f01516138255f5160206154005f395f51905f5290565b54600160a01b900463ffffffff166001613652565b6001886001613652565b8760020154613265565b925061385a8484613265565b5f8b8152600888016020526040812080549294509250906138b19061389b90600160e01b810463ffffffff1690600160b01b900465ffffffffffff166152b7565b65ffffffffffff166138ac886152d5565b613dba565b90505f6138bd82613e01565b90505f6138d96138d38684633b9aca005f613652565b86613694565b90505f8b6138eb57633b9aca006138f4565b6138f48e6130d7565b90506040518060800160405280613914838561270990919063ffffffff16565b81526020810185905260400161392a8a84612709565b81526020016139398984612709565b90529e9d5050505050505050505050505050565b5f63ffffffff82111561397d576040516306dfcc6560e41b81526020600482015260248101839052604401610d7a565b5090565b81545f908161399285858385613e26565b905080156139cd576139b6856139a9600184615007565b5f91825260209091200190565b5464010000000090046001600160e01b0316612536565b5f95945050505050565b606060ff83146139f1576139ea83613e81565b9050610f33565b8180546139fd906152ef565b80601f0160208091040260200160405190810160405280929190818152602001828054613a29906152ef565b8015613a745780601f10613a4b57610100808354040283529160200191613a74565b820191905f5260205f20905b815481529060010190602001808311613a5757829003601f168201915b50505050509050610f33565b5f5f5160206154005f395f51905f5254610f3390600160a01b900463ffffffff168361514d565b5f610f336402540be400836305f5e100613ebe565b5f81604051602001613ace91906145dd565b604051602081830303815290604052805190602001209050919050565b5f6001613af6613f29565b613b07613b0285613f68565b61394d565b613b119190615327565b610f339190615327565b6060838380821115613b4957604051631723245360e31b815260048101929092526024820152604401610d7a565b50505f846001600160401b03811115613b6457613b646142f3565b604051908082528060200260200182016040528015613b8d578160200160208202803683370190505b5090505f613b9c600186615007565b90505f5b86811015613c15575f613bbe82613bb8856001614d3c565b88613f7a565b9050613bc981613fbc565b848381518110613bdb57613bdb615164565b60209081029190910101528215613c0c57613bfe81613bf985613fbc565b613fdc565b82613c0881615343565b9350505b50600101613ba0565b505f5b86811015613c4b57613c43838281518110613c3557613c35615164565b60200260200101515f613fdc565b600101613c18565b509095945050505050565b5f5160206153c05f395f51905f5254604051639796d97760e01b81526060916001600160a01b031690639796d97790613c9790309087908790600401615358565b5f60405180830381865afa158015613cb1573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f949190810190615178565b5f6002826003811115613ced57613ced614638565b613cf7919061537e565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03613d3857838281613d2e57613d2e614d4f565b0492505050610f94565b808411613d4f57613d4f6003851502601118614037565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f8212613dd557613dcb82614048565b6139ea9084614d3c565b60ff82901d8083011880841115613df857613df08185615007565b915050610f33565b505f9392505050565b5f805f5160206154205f395f51905f529050610f94633b9aca00848360010154613ebe565b5f5b81831015613e79575f613e3b848461406d565b5f8781526020902090915063ffffffff86169082015463ffffffff161115613e6557809250613e73565b613e70816001614d3c565b93505b50613e28565b509392505050565b60605f613e8d83614087565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60018180613ecd858861514d565b90505b8015613f1457613ee08183614d3c565b9150613eec838661514d565b613ef6878361514d565b613f009190614d63565b9050613f0d600184614d3c565b9250613ed0565b613f1e8583614d63565b979650505050505050565b5f5160206154005f395f51905f5280545f9190613f5c9063ffffffff600160801b8204811691600160a01b900416615222565b63ffffffff1691505090565b5f610f33613f7583613a80565b61309e565b5f825f03613f8957505f610f94565b6040805160208082018590528183018790528251808303840181526060909201909252805191012061183d9084906152a4565b5f5f613fc7836140ae565b90508015613fd55792915050565b5090919050565b610d208161403161402e8561402060405180604001604052806018815260200177417a7465632e53616d706c654c69622e4f7665727269646560401b8152506140f6565b5f9182526020526040902090565b90565b9061410d565b634e487b715f52806020526024601cfd5b5f5f82121561397d57604051635467221960e11b815260048101839052602401610d7a565b5f61407b6002848418614d63565b610f9490848416614d3c565b5f60ff8216601f811115610f3357604051632cd44ac360e21b815260040160405180910390fd5b5f610f336140f261402e8461402060405180604001604052806018815260200177417a7465632e53616d706c654c69622e4f7665727269646560401b8152506140f6565b5c90565b80516020918201205f19015f9081522060ff191690565b80825d5050565b604080516080810182525f8082526020820152908101614132614149565b81526040805160208181019092525f815291015290565b6040518060c001604052805f81526020015f81526020015f81526020015f6001600160a01b031681526020015f151581526020015f151581525090565b6040518061010001604052805f81526020016141bf60405180608001604052805f81526020015f81526020015f81526020015f81525090565b81526020015f81526020015f81526020015f6001600160a01b031681526020015f815260200161420060405180604001604052805f81526020015f81525090565b81526020015f81525090565b5f6020828403121561421c575f5ffd5b5035919050565b6001600160a01b03811681146111c5575f5ffd5b5f5f60408385031215614248575f5ffd5b823561425381614223565b946020939093013593505050565b80151581146111c5575f5ffd5b5f5f5f60608486031215614280575f5ffd5b833561428b81614223565b9250602084013561429b81614223565b915060408401356142ab81614261565b809150509250925092565b5f5f83601f8401126142c6575f5ffd5b5081356001600160401b038111156142dc575f5ffd5b60208301915083602082850101111561109a575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b0381118282101715614329576143296142f3565b60405290565b604051606081016001600160401b0381118282101715614329576143296142f3565b604051601f8201601f191681016001600160401b0381118282101715614379576143796142f3565b604052919050565b5f6001600160401b03821115614399576143996142f3565b5060051b60200190565b5f82601f8301126143b2575f5ffd5b81356143c56143c082614381565b614351565b8082825260208201915060208360071b8601019250858311156143e6575f5ffd5b602085015b83811015614479578087036080811215614403575f5ffd5b61440b614307565b823561441681614223565b81526060601f1983011215614429575f5ffd5b61443161432f565b9150602083013560ff81168114614446575f5ffd5b825260408381013560208085019190915260608501359184019190915281810192909252845292909201916080016143eb565b5095945050505050565b5f5f5f5f5f5f5f87890360e081121561449a575f5ffd5b88356001600160401b038111156144af575f5ffd5b6144bb8b828c016142b6565b90995097505060208901356001600160401b038111156144d9575f5ffd5b6144e58b828c016143a3565b965050604089810135955060608a0135945060808a01359350609f198201121561450d575f5ffd5b50614516614307565b60a089013561452481614261565b815260c089013561453481614261565b806020830152508091505092959891949750929550565b5f5f5f5f6060858703121561455e575f5ffd5b84356001600160401b03811115614573575f5ffd5b850160a08188031215614584575f5ffd5b935060208501356001600160401b0381111561459e575f5ffd5b6145aa878288016143a3565b93505060408501356001600160401b038111156145c5575f5ffd5b6145d1878288016142b6565b95989497509550505050565b602080825282518282018190525f918401906040840190835b81811015613c4b5783516001600160a01b03168352602093840193909201916001016145f6565b5f6020828403121561462d575f5ffd5b8135610f9481614223565b634e487b7160e01b5f52602160045260245ffd5b6004811061466857634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610f33828461464c565b5f5f5f6060848603121561468c575f5ffd5b833592506020840135915060408401356142ab81614223565b5f5f604083850312156146b6575f5ffd5b50508035926020909101359150565b8051825260208082015190830152604080820151908301526060808201516001600160a01b03169083015260808082015115159083015260a0908101511515910152565b5f6101208201905061471c82845161464c565b60208301516020830152604083015161473860408401826146c5565b5060609290920151516001600160a01b0316610100919091015290565b60c08101610f3382846146c5565b815181526020808301519082015260408101610f33565b5f5f6040838503121561478b575f5ffd5b82359150602083013561479d81614223565b809150509250929050565b5f5f604083850312156147b9575f5ffd5b82359150602083013561479d81614261565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f8151808452602084019350602083015f5b8281101561482957815186526020958601959091019060010161480b565b5093949350505050565b60ff60f81b8816815260e060208201525f61485160e08301896147cb565b828103604084015261486381896147cb565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152905061489481856147f9565b9a9950505050505050505050565b5f602082840312156148b2575f5ffd5b8135610f9481614261565b5f5f5f5f5f5f5f87890360e08112156148d4575f5ffd5b88359750602089013596506060603f19820112156148f0575f5ffd5b5060408801945060a08801356001600160401b0381111561490f575f5ffd5b8801601f81018a1361491f575f5ffd5b80356001600160401b03811115614934575f5ffd5b8a60208260051b8401011115614948575f5ffd5b6020919091019450925060c08801356001600160401b0381111561496a575f5ffd5b6149768a828b016142b6565b989b979a50959850939692959293505050565b602081525f610f9460208301846147f9565b5f5f602083850312156149ac575f5ffd5b82356001600160401b038111156149c1575f5ffd5b6149cd858286016142b6565b90969095509350505050565b606081525f6149eb60608301866147f9565b60208301949094525060400152919050565b5f60208284031215614a0d575f5ffd5b81356001600160401b03811115614a22575f5ffd5b82016101008185031215610f94575f5ffd5b5f5f60408385031215614a45575f5ffd5b8235614a5081614223565b915060208301356001600160401b03811115614a6a575f5ffd5b8301601f81018513614a7a575f5ffd5b8035614a886143c082614381565b8082825260208201915060208360051b850101925087831115614aa9575f5ffd5b6020840193505b82841015614acb578335825260209384019390910190614ab0565b809450505050509250929050565b5f5f60408385031215614aea575f5ffd5b8235614af581614223565b9150602083013561479d81614223565b5f5f8335601e19843603018112614b1a575f5ffd5b83016020810192503590506001600160401b03811115614b38575f5ffd5b80360382131561109a575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f5f8335601e19843603018112614b83575f5ffd5b83016020810192503590506001600160401b03811115614ba1575f5ffd5b8060051b360382131561109a575f5ffd5b8183525f6001600160fb1b03831115614bc9575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8151808452602084019350602083015f5b8281101561482957815180516001600160a01b03168752602090810151805160ff1682890152808201516040808a01919091520151606088015260809096019590910190600101614bf4565b60808082528635908201525f614c596020880188614b05565b60a080850152614c6e61012085018284614b46565b915050604088013560c0840152614c886060890189614b05565b848303607f190160e0860152614c9f838284614b46565b92505050614cb06080890189614b6e565b848303607f1901610100860152614cc8838284614bb2565b925050508281036020840152614cde8188614be2565b90508281036040840152614cf3818688614b46565b915050614d04606083018415159052565b9695505050505050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610f3357610f33614d28565b634e487b7160e01b5f52601260045260245ffd5b5f82614d7157614d71614d4f565b500490565b80358252602080820135908301526040810135614d9281614223565b6001600160a01b03166040929092019190915250565b878152866020820152614dbe6040820187614d76565b60e060a08201525f614dd460e083018688614bb2565b82810360c0840152614894818587614b46565b5f82601f830112614df6575f5ffd5b8151614e046143c082614381565b8082825260208201915060208360051b860101925085831115614e25575f5ffd5b602085015b83811015614479578051835260209283019201614e2a565b5f60208284031215614e52575f5ffd5b81516001600160401b03811115614e67575f5ffd5b61183d84828501614de7565b604081525f614e86604083018587614b46565b90508215156020830152949350505050565b5f5f5f60608486031215614eaa575f5ffd5b83516001600160401b03811115614ebf575f5ffd5b614ecb86828701614de7565b60208601516040909601519097959650949350505050565b60208082528235828201528201356040808301919091525f90614f0c9060608401908501614d76565b614f1960a0840184614b6e565b61010060c0850152614f3061012085018284614bb2565b915050614f4060c0850185614b05565b848303601f190160e0860152614f57838284614b46565b92505050614f6860e0850185614b05565b848303601f1901610100860152614d04838284614b46565b5f60208284031215614f90575f5ffd5b5051919050565b6001600160a01b03831681526040602080830182905283519183018290525f91908401906060840190835b81811015614fe0578351835260209384019390920191600101614fc2565b50909695505050505050565b5f60208284031215614ffc575f5ffd5b8151610f9481614261565b81810381811115610f3357610f33614d28565b5f5f5f6060848603121561502c575f5ffd5b835161503781614223565b602085015190935061504881614261565b60408501519092506142ab81614223565b5f5f5f6060848603121561506b575f5ffd5b8351602085015190935061507e81614261565b6040949094015192959394509192915050565b5f5f8585111561509f575f5ffd5b838611156150ab575f5ffd5b5050820193919092039150565b80356020831015610f33575f19602084900360031b1b1692915050565b80356001600160c01b03198116906008841015615106576001600160c01b0319600885900360031b81901b82161691505b5092915050565b80356bffffffffffffffffffffffff198116906014841015615106576bffffffffffffffffffffffff1960149490940360031b84901b1690921692915050565b8082028115828204841417610f3357610f33614d28565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215615188575f5ffd5b81516001600160401b0381111561519d575f5ffd5b8201601f810184136151ad575f5ffd5b80516151bb6143c082614381565b8082825260208201915060208360051b8501019250868311156151dc575f5ffd5b6020840193505b82841015614d045783516151f681614223565b8252602093840193909101906151e3565b5f60208284031215615217575f5ffd5b8151610f9481614223565b63ffffffff818116838216029081169081811461510657615106614d28565b5f6020828403128015615252575f5ffd5b50604051602081016001600160401b0381118282101715615275576152756142f3565b604052825161528381614223565b81529392505050565b5f6001820161529d5761529d614d28565b5060010190565b5f826152b2576152b2614d4f565b500690565b65ffffffffffff8181168382160190811115610f3357610f33614d28565b5f600160ff1b82016152e9576152e9614d28565b505f0390565b600181811c9082168061530357607f821691505b60208210810361532157634e487b7160e01b5f52602260045260245ffd5b50919050565b63ffffffff8281168282160390811115610f3357610f33614d28565b5f8161535157615351614d28565b505f190190565b60018060a01b0384168152826020820152606060408201525f61253660608301846147f9565b5f60ff83168061539057615390614d4f565b8060ff8416069150509291505056febba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cadbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68caf9bd0cd65f3d2d8103fe75b0f150f04a46bd0e603fd1819b64700ff42b24ee3aacc2bde3d21ba778aa5c156bb6fc47381978b0054c8a1ef73f44234164324cbe02e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652ca2646970667358221220bb30acd07e848c40dd20dd29a64c6a86efbe380d4b7ac69f0a94e93f840b68a664736f6c634300081b003360a060405234801561000f575f5ffd5b50604051611dd9380380611dd983398101604081905261002e9161009c565b3330838360405161003e9061008f565b6001600160a01b03948516815293909216602084015260408301526060820152608001604051809103905ff08015801561007a573d5f5f3e3d5ffd5b506001600160a01b0316608052506100be9050565b6117798061066083390190565b5f5f604083850312156100ad575f5ffd5b505080516020909101519092909150565b6080516105856100db5f395f8181603d015260a301526105855ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063bffa7f0f14610038578063c96be4cb1461007c575b5f5ffd5b61005f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61008f61008a3660046102af565b61009f565b6040519015158152602001610073565b5f337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381168214610102576040516344c1f74f60e01b81526001600160a01b0392831660048201529116602482015260440160405180910390fd5b50505f826001600160a01b031663504d080b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610140573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610167919081019061033f565b90505f5b815181101561028e575f5f838381518110610188576101886104b8565b60200260200101515f01516001600160a01b03168484815181106101ae576101ae6104b8565b6020026020010151602001516040516101c791906104cc565b5f604051808303815f865af19150503d805f8114610200576040519150601f19603f3d011682016040523d82523d5f602084013e610205565b606091505b509150915081610284577f606461c3c22ef5d2f9fa14ff2480c0ec357ce58718c1b2d6f360f603b14cb3e5848481518110610242576102426104b8565b60200260200101515f015185858151811061025f5761025f6104b8565b6020026020010151602001518360405161027b93929190610510565b60405180910390a15b505060010161016b565b5060019392505050565b6001600160a01b03811681146102ac575f5ffd5b50565b5f602082840312156102bf575f5ffd5b81356102ca81610298565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610308576103086102d1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610337576103376102d1565b604052919050565b5f6020828403121561034f575f5ffd5b815167ffffffffffffffff811115610365575f5ffd5b8201601f81018413610375575f5ffd5b805167ffffffffffffffff81111561038f5761038f6102d1565b8060051b61039f6020820161030e565b918252602081840181019290810190878411156103ba575f5ffd5b6020850192505b838310156104ad57825167ffffffffffffffff8111156103df575f5ffd5b85016040818a03601f190112156103f4575f5ffd5b6103fc6102e5565b602082015161040a81610298565b8152604082015167ffffffffffffffff811115610425575f5ffd5b60208184010192505089601f83011261043c575f5ffd5b815167ffffffffffffffff811115610456576104566102d1565b610469601f8201601f191660200161030e565b8181528b602083860101111561047d575f5ffd5b8160208501602083015e5f60208383010152806020840152505080845250506020820191506020830192506103c1565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03841681526060602082018190525f90610533908301856104e2565b828103604084015261054581856104e2565b969550505050505056fea264697066735822122059de334bc8c16e56a9ad50f16e94d45d93d52a51a4bd61b82a1db1ccd21c06d364736f6c634300081b00336101e0604052348015610010575f5ffd5b5060405161177938038061177983398101604081905261002f9161024d565b81816040518060400160405280600a815260200169456d706972654261736560b01b815250604051806040016040528060018152602001603160f81b8152506100815f836101c760201b90919060201c565b610120526100908160016101c7565b61014052815160208084019190912060e052815190820120610100524660a05261011c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05261016082905261018081905261013c600282610292565b610160516101805190918211610173576040516365424f5b60e11b8152600481019290925260248201526044015b60405180910390fd5b5050610180516101605190808211156101a85760405163103804ad60e11b81526004810192909252602482015260440161016a565b5050506001600160a01b039485166101a052505050166101c05261045b565b5f6020835110156101e2576101db836101f9565b90506101f3565b816101ed8482610349565b5060ff90505b92915050565b5f5f829050601f81511115610223578260405163305a27a960e01b815260040161016a9190610403565b805161022e82610438565b179392505050565b6001600160a01b038116811461024a575f5ffd5b50565b5f5f5f5f60808587031215610260575f5ffd5b845161026b81610236565b602086015190945061027c81610236565b6040860151606090960151949790965092505050565b5f826102ac57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806102d957607f821691505b6020821081036102f757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561034457805f5260205f20601f840160051c810160208510156103225750805b601f840160051c820191505b81811015610341575f815560010161032e565b50505b505050565b81516001600160401b03811115610362576103626102b1565b6103768161037084546102c5565b846102fd565b6020601f8211600181146103a8575f83156103915750848201515b5f19600385901b1c1916600184901b178455610341565b5f84815260208120601f198516915b828110156103d757878501518255602094850194600190920191016103b7565b50848210156103f457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102f7575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516112666105135f395f818161012c015281816101e2015261078f01525f81816103280152818161034c01528181610373015281816106af01526107fe01525f81816101be015261074901525f81816102ee0152818161053b0152610b6201525f610c0301525f610bd201525f610ea101525f610e7901525f610dd401525f610dfe01525f610e2801526112665ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c80638652297311610093578063c9e525df11610063578063c9e525df146102e9578063d11eb2b214610310578063d15db8b414610323578063de7b5d141461034a575f5ffd5b80638652297314610247578063a32bf5971461026e578063a97f36a814610276578063b59c46fb1461027e575f5ffd5b80636c1032af116100ce5780636c1032af146101e05780636c54023e146102065780636dd7d8ea1461021957806384b0196e1461022c575f5ffd5b80630d61b519146100ff5780635db93dfa1461012757806362c69d7214610166578063693f917e146101b9575b5f5ffd5b61011261010d366004610f55565b610370565b60405190151581526020015b60405180910390f35b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161011e565b6101ab610174366004610f83565b6001600160a01b038084165f9081526002602081815260408084208785528252808420948616845293909101905220549392505050565b60405190815260200161011e565b6101ab7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000061014e565b610112610214366004610fc2565b61062f565b610112610227366004611059565b610643565b610234610669565b60405161011e97969594939291906110a9565b6101ab7fcd3782d11dc5a73768b1e0eb46a9c478abd8e0f29d28656d790ad911a4619a7481565b6101ab6106ab565b6101ab600581565b6102c461028c36600461113f565b600260209081525f9283526040808420909152908252902080546001909101546001600160a01b03811690600160a01b900460ff1683565b604080519384526001600160a01b03909216602084015215159082015260600161011e565b6101ab7f000000000000000000000000000000000000000000000000000000000000000081565b6101ab61031e366004610f55565b610743565b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000061014e565b5f7f0000000000000000000000000000000000000000000000000000000000000000806001600160a01b0381163b6103cc57604051635fa9262560e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b505f8190505f816001600160a01b031663d8e3784c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561040e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104329190611169565b90505f61043e82610743565b90508086106104605760405163117e3a7760e31b815260040160405180910390fd5b8061046c600588611180565b1015868290916104985760405163c3d7aa4f60e01b8152600481019290925260248201526044016103c3565b50506001600160a01b0384165f908152600260209081526040808320898452909152902060018101548790600160a01b900460ff16156104ee5760405163058240ed60e31b81526004016103c391815260200190565b5060018101546001600160a01b031661051a57604051630b560ca160e11b815260040160405180910390fd5b60018101546001600160a01b03165f908152600282016020526040902054807f000000000000000000000000000000000000000000000000000000000000000080821015610584576040516357d5327960e11b8152600481019290925260248201526044016103c3565b505060018201805460ff60a01b198116600160a01b1790915560405189916001600160a01b0316907f7bfd03e44f31b1867e10c41d419cd8073b4719d321ccc5c3a3c79ac2babab3c3905f90a360018201546105e8906001600160a01b031661076e565b60018301546001600160a01b031690610620576040516323653eff60e21b81526001600160a01b0390911660048201526024016103c3565b50600198975050505050505050565b5f61063a83836107fb565b90505b92915050565b604080516060810182525f8082526020820181905291810182905261063d9083906107fb565b5f6060805f5f5f606061067a610bcb565b610682610bfc565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663d8e3784c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190611169565b905061073c81610743565b9250505090565b5f61063d7f00000000000000000000000000000000000000000000000000000000000000008361119f565b60405163c96be4cb60e01b81526001600160a01b0382811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063c96be4cb906024016020604051808303815f875af11580156107d7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063d91906111be565b5f7f0000000000000000000000000000000000000000000000000000000000000000806001600160a01b0381163b61085257604051635fa9262560e01b81526001600160a01b0390911660048201526024016103c3565b505f8190505f816001600160a01b031663d8e3784c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610894573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b89190611169565b90505f6108c482610743565b6001600160a01b0385165f90815260026020908152604080832084845290915290208054919250908311839061091057604051631d30a86560e11b81526004016103c391815260200190565b505f846001600160a01b0316633b10244b6040518163ffffffff1660e01b81526004016020604051808303815f875af115801561094f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097391906111dd565b9050610981885160ff161590565b156109cb5733816001600160a01b03811682146109c457604051633a8db46b60e21b81526001600160a01b039283166004820152911660248201526044016103c3565b5050610a74565b5f610a2f7fcd3782d11dc5a73768b1e0eb46a9c478abd8e0f29d28656d790ad911a4619a748b604051602001610a149291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120610c29565b9050610a3c898383610c55565b33839091610a7057604051633a8db46b60e21b81526001600160a01b039283166004820152911660248201526044016103c3565b5050505b6001600160a01b0389165f9081526002830160205260408120805460019290610a9e908490611180565b909155505083825560018201546001600160a01b038a8116911614801590610aec575060018201546001600160a01b039081165f90815260028401602052604080822054928c168252902054115b15610b0f576001820180546001600160a01b0319166001600160a01b038b161790555b604051339084906001600160a01b038c16907f75b35ca960bbb2cc550471a4098b1a96255dd657fe926e331754cd7c2e4489b3905f90a46001600160a01b0389165f9081526002830160205260409020547f000000000000000000000000000000000000000000000000000000000000000090036106205760405183906001600160a01b038b16907f0df61444d0227466513d76c78610d02f944a8c799f07f549ff6d3dd692cd6a6a905f90a350600198975050505050505050565b6060610bf77f00000000000000000000000000000000000000000000000000000000000000005f610d1f565b905090565b6060610bf77f00000000000000000000000000000000000000000000000000000000000000006001610d1f565b5f61063d610c35610dc8565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f600183865f0151876020015188604001516040515f8152602001604052604051610c9d949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610cbd573d5f5f3e3d5ffd5b505050602060405103519050806001600160a01b0316846001600160a01b03161484829091610d1257604051633672eb9b60e21b81526001600160a01b039283166004820152911660248201526044016103c3565b5060019695505050505050565b606060ff8314610d3957610d3283610ef1565b905061063d565b818054610d45906111f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d71906111f8565b8015610dbc5780601f10610d9357610100808354040283529160200191610dbc565b820191905f5260205f20905b815481529060010190602001808311610d9f57829003601f168201915b5050505050905061063d565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610e2057507f000000000000000000000000000000000000000000000000000000000000000046145b15610e4a57507f000000000000000000000000000000000000000000000000000000000000000090565b610bf7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60605f610efd83610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561063d57604051632cd44ac360e21b815260040160405180910390fd5b5f60208284031215610f65575f5ffd5b5035919050565b6001600160a01b0381168114610f80575f5ffd5b50565b5f5f5f60608486031215610f95575f5ffd5b8335610fa081610f6c565b9250602084013591506040840135610fb781610f6c565b809150509250925092565b5f5f8284036080811215610fd4575f5ffd5b8335610fdf81610f6c565b92506060601f1982011215610ff2575f5ffd5b506040516060810181811067ffffffffffffffff8211171561102257634e487b7160e01b5f52604160045260245ffd5b604052602084013560ff81168114611038575f5ffd5b81526040848101356020830152606090940135938101939093525092909150565b5f60208284031215611069575f5ffd5b813561107481610f6c565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b8816815260e060208201525f6110c760e083018961107b565b82810360408401526110d9818961107b565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561112e578351835260209384019390920191600101611110565b50909b9a5050505050505050505050565b5f5f60408385031215611150575f5ffd5b823561115b81610f6c565b946020939093013593505050565b5f60208284031215611179575f5ffd5b5051919050565b8082018082111561063d57634e487b7160e01b5f52601160045260245ffd5b5f826111b957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156111ce575f5ffd5b81518015158114611074575f5ffd5b5f602082840312156111ed575f5ffd5b815161107481610f6c565b600181811c9082168061120c57607f821691505b60208210810361122a57634e487b7160e01b5f52602260045260245ffd5b5091905056fea2646970667358221220d3b432fa3b0436b5764d5d188d8b8c091d8674aa131e30e057cf73568eb360d464736f6c634300081b00336080604052348015600e575f5ffd5b506101578061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c8063ea50d0e41461002d575b5f5ffd5b61004561003b366004610059565b6001949350505050565b604051901515815260200160405180910390f35b5f5f5f5f6040858703121561006c575f5ffd5b843567ffffffffffffffff811115610082575f5ffd5b8501601f81018713610092575f5ffd5b803567ffffffffffffffff8111156100a8575f5ffd5b8760208284010111156100b9575f5ffd5b60209182019550935085013567ffffffffffffffff8111156100d9575f5ffd5b8501601f810187136100e9575f5ffd5b803567ffffffffffffffff8111156100ff575f5ffd5b8760208260051b8401011115610113575f5ffd5b94979396506020019450505056fea2646970667358221220b347706a3dc7f76b5cbd0f02b652482a8592c3334d7013c40fe86559709bd69964736f6c634300081b0033610140604052348015610010575f5ffd5b50604051611c36380380611c3683398101604081905261002f91610470565b6001600160a01b03841660805260a082905260e08190526100518160026105ac565b61010052604080516060810182525f80825260208201529081016100766001806105be565b6001600160401b03908116909152815160028054602085015160409095015160809390931c6001600160c01b031990911617600160801b94841694909402939093176001600160c01b0316600160c01b91909216021790556100d85f82610184565b6101135f60e0516101005160015f6001806100f391906105be565b6001600160401b0316815260208101919091526040015f2092919061022d565b610120818152505083833060a05160405161012d9061044c565b6001600160a01b0394851681529284166020840152921660408201526060810191909152608001604051809103905ff08015801561016d573d5f5f3e3d5ffd5b506001600160a01b031660c0525061068592505050565b5f8080526020839052604081205560015b81811161022857610208835f6101ac6001856105dd565b81526020019081526020015f2054845f015f6001856101cb91906105dd565b81526020019081526020015f20546040516020016101f3929190918252602082015260400190565b60408051601f19818403018152919052610386565b5f8281526020859052604090205580610220816105f0565b915050610195565b505050565b83545f9080820361024d5750505f8281526020849052604090205461037e565b82810361026b5750505f82815260018501602052604090205461037e565b5f6102776001836105dd565b90505f61028382610421565b5f81815260018a01602052604090205490915082821c825b8881101561037557600180831614801561033a575f82815260018d0160205260409020548490036103075760405162461bcd60e51b81526020600482015260126024820152714d697374616b65732077657265206d61646560701b604482015260640160405180910390fd5b5f82815260018d01602090815260409182902054825191820152908101859052610333906060016101f3565b9350610368565b5f82815260208c8152604091829020549151610365926101f392889201918252602082015260400190565b93505b50600191821c910161029b565b50909450505050505b949350505050565b6040805160018082528183019092525f91602082018180368337019050506002836040516103b4919061061f565b602060405180830381855afa1580156103cf573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906103f2919061062a565b604051602001610403929190610641565b60405160208183030381529060405261041b9061065f565b92915050565b5f80825b80600116600103610445578161043a816105f0565b92505060011c610425565b5092915050565b6107f88061143e83390190565b6001600160a01b038116811461046d575f5ffd5b50565b5f5f5f5f60808587031215610483575f5ffd5b845161048e81610459565b602086015190945061049f81610459565b6040860151606090960151949790965092505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610504578085048111156104e8576104e86104b5565b60018416156104f657908102905b60019390931c9280026104cd565b935093915050565b5f8261051a5750600161041b565b8161052657505f61041b565b816001811461053c576002811461054657610562565b600191505061041b565b60ff841115610557576105576104b5565b50506001821b61041b565b5060208310610133831016604e8410600b8410161715610585575081810a61041b565b6105915f1984846104c9565b805f19048211156105a4576105a46104b5565b029392505050565b5f6105b7838361050c565b9392505050565b6001600160401b03818116838216019081111561041b5761041b6104b5565b8181038181111561041b5761041b6104b5565b5f60018201610601576106016104b5565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f6105b78284610608565b5f6020828403121561063a575f5ffd5b5051919050565b5f61064c8285610608565b60ff199390931683525050601f01919050565b8051602080830151919081101561067f575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051610d3a6107045f395f61072301525f8181610455015281816104a70152818161077f015261082f01525f818161075e015261080e01525f81816101800152818161022801526104fc01525f81816102a3015261032001525f818161026901526106b00152610d3a5ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80637a5080221161006e5780637a508022146102075780638ccf6b95146102265780639500ac301461024c5780639611c5c2146102645780639b24b3b01461028b578063ffa1ad741461029e575f5ffd5b80631865c57d146100aa5780631f6d510b146101535780632fb131c81461017b578063483f31ab146101ba5780635fd3c809146101db575b5f5ffd5b610111604080516060810182525f808252602082018190529181019190915250604080516060810182526002546001600160801b0319608082901b1682526001600160401b03600160801b820481166020840152600160c01b909104169181019190915290565b6040805182516001600160801b03191681526020808401516001600160401b039081169183019190915292820151909216908201526060015b60405180910390f35b610166610161366004610b71565b6102c5565b6040805192835260208301919091520161014a565b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014a565b6101cd6101c8366004610be8565b6106a4565b60405190815260200161014a565b600254600160c01b90046001600160401b03165b6040516001600160401b03909116815260200161014a565b6101cd610215366004610be8565b60016020525f908152604090205481565b7f00000000000000000000000000000000000000000000000000000000000000006101a2565b600254600160801b90046001600160401b03166101ef565b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b6101cd610299366004610be8565b6107fa565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b82515f9081907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000811115610318576040516353bb503760e11b815260040161030f91815260200190565b60405180910390fd5b5060208501517f000000000000000000000000000000000000000000000000000000000000000081811461036857604051632e26721160e21b81526004810192909252602482015260440161030f565b508490507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008111156103b0576040516311d1480560e21b815260040161030f91815260200190565b50827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008111156103f657604051633b379f8b60e21b815260040161030f91815260200190565b50604080516060810182526002546001600160801b0319608082901b168083526001600160401b03600160801b830481166020808601829052600160c01b9094049091168486018190525f8181526001909452949092208054939491937f0000000000000000000000000000000000000000000000000000000000000000036104a157610484600183610c13565b6001600160401b0381165f90815260016020526040902090925090505b80545f907f00000000000000000000000000000000000000000000000000000000000000006104da60016001600160401b038716610c32565b6104e49190610c45565b6104ee9190610c5c565b90505f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610527573361052a565b60055b6040805160e0810182526001600160a01b03831660a082019081524660c08301528152602081018f90529081018d9052606081018c9052608081018490529091505f61057582610859565b905061058185826108db565b506040516001600160801b031989166020820152603081018290525f9060500160408051601f198184030181528282528051602091820120606084019092526001600160801b03198216835290925081016105dd8a6001610c13565b6001600160401b0390811682528981166020928301819052835160028054948601516040968701518516600160c01b026001600160c01b0391909516600160801b026001600160c01b031990961660809390931c9290921794909417169190911790915590518391907fe3afb584bcff3adb9d452d2e1ccbcd4aee164ae2a8cdab637aecf866a53fbb779061068890899086909182526001600160801b031916602082015260400190565b60405180910390a3509d929c50919a5050505050505050505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106ee5760405163e5336a6b60e01b815260040160405180910390fd5b600254600160c01b90046001600160401b03168083106107215760405163c490199960e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060018411156107a6575f8481526001602052604081206107a3917f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061095c565b90505b6001600160401b0382166107bb856001610c5c565b036107f3576107cb826001610c13565b600280546001600160401b0392909216600160c01b026001600160c01b039092169190911790555b9392505050565b5f81815260016020526040812061085390827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061095c565b92915050565b5f610853825f015183602001518460400151856060015186608001516040516020016108c795949392919085516001600160a01b03168152602095860151868201528451604082015293909401516060840152608083019190915260a082015260c081019190915260e00190565b604051602081830303815290604052610ab1565b81545f90816108e982610b46565b9050835f5b8281101561092c575f81815260018801602090815260409182902054825191820152908101839052610922906060016108c7565b91506001016108ee565b505f8281526001870160205260408120829055865490879061094d83610c6f565b90915550929695505050505050565b83545f9080820361097c5750505f82815260208490526040902054610aa9565b82810361099a5750505f828152600185016020526040902054610aa9565b5f6109a6600183610c32565b90505f6109b282610b46565b5f81815260018a01602052604090205490915082821c825b88811015610aa0576001808316148015610a65575f82815260018d016020526040902054849003610a325760405162461bcd60e51b81526020600482015260126024820152714d697374616b65732077657265206d61646560701b604482015260640161030f565b5f82815260018d01602090815260409182902054825191820152908101859052610a5e906060016108c7565b9350610a93565b5f82815260208c8152604091829020549151610a90926108c792889201918252602082015260400190565b93505b50600191821c91016109ca565b50909450505050505b949350505050565b6040805160018082528183019092525f9160208201818036833701905050600283604051610adf9190610c9e565b602060405180830381855afa158015610afa573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b1d9190610ca9565b604051602001610b2e929190610cc0565b60405160208183030381529060405261085390610cde565b5f80825b80600116600103610b6a5781610b5f81610c6f565b92505060011c610b4a565b5092915050565b5f5f5f8385036080811215610b84575f5ffd5b6040811215610b91575f5ffd5b50604051604081018181106001600160401b0382111715610bc057634e487b7160e01b5f52604160045260245ffd5b6040908152853582526020808701359083015290969085013595506060909401359392505050565b5f60208284031215610bf8575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216019081111561085357610853610bff565b8181038181111561085357610853610bff565b808202811582820484141761085357610853610bff565b8082018082111561085357610853610bff565b5f60018201610c8057610c80610bff565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f6107f38284610c87565b5f60208284031215610cb9575f5ffd5b5051919050565b5f610ccb8285610c87565b60ff199390931683525050601f01919050565b80516020808301519190811015610cfe575f198160200360031b1b821691505b5091905056fea2646970667358221220a0873236bef5ff156b05f24e73a26aad3ddec9fe163a2274e6214c923ad0be4164736f6c634300081b0033610100604052348015610010575f5ffd5b506040516107f83803806107f883398101604081905261002f91610067565b6001600160a01b0393841660805290831660a052911660c05260e0526100b7565b6001600160a01b0381168114610064575f5ffd5b50565b5f5f5f5f6080858703121561007a575f5ffd5b845161008581610050565b602086015190945061009681610050565b60408601519093506100a781610050565b6060959095015193969295505050565b60805160a05160c05160e0516106ec61010c5f395f8181610168015261019901525f818161014101528181610218015261039601525f818161011a015261027a01525f818160db015261034b01526106ec5ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80639611c5c2116100585780639611c5c2146100d6578063b701069714610115578063c5d664c61461013c578063ffa1ad7414610163575f5ffd5b8063284b5dc61461007e5780632dc81c62146100ab57806348fef595146100c1575b5f5ffd5b61009161008c3660046105b2565b61018a565b604080519283526020830191909152015b60405180910390f35b6100b3600581565b6040519081526020016100a2565b6100d46100cf3660046105db565b610340565b005b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a2565b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b604080518082018252600581527f00000000000000000000000000000000000000000000000000000000000000006020820152905160248101859052604481018490525f91829182906102099060640160408051601f198184030181529190526020810180516001600160e01b0316630c7e892d60e31b179052610404565b90506102406001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308961049f565b604051631f6d510b60e01b8152825160048201526020830151602482015260448101829052606481018690525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f6d510b9060840160408051808303815f875af11580156102bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e39190610610565b604080518b8152602081018b905290810183905260608101829052919350915089907fcb43dda0de11e57048e9d074ae7474446335afc906a0e5789d624fa5422629e39060800160405180910390a2909890975095505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610389576040516333f1b48f60e11b815260040160405180910390fd5b6103bd6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361050c565b816001600160a01b03167f63be20cc905d5ba0cf65db405c4999f99f2575e521875f13a8009d6eed7a09d9826040516103f891815260200190565b60405180910390a25050565b6040805160018082528183019092525f91602082018180368337019050506002836040516104329190610649565b602060405180830381855afa15801561044d573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610470919061065b565b604051602001610481929190610672565b60405160208183030381529060405261049990610690565b92915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526105069186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610542565b50505050565b6040516001600160a01b0383811660248301526044820183905261053d91859182169063a9059cbb906064016104d4565b505050565b5f5f60205f8451602086015f885af180610561576040513d5f823e3d81fd5b50505f513d91508115610578578060011415610585565b6001600160a01b0384163b155b1561050657604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b5f5f5f606084860312156105c4575f5ffd5b505081359360208301359350604090920135919050565b5f5f604083850312156105ec575f5ffd5b82356001600160a01b0381168114610602575f5ffd5b946020939093013593505050565b5f5f60408385031215610621575f5ffd5b505080516020909101519092909150565b5f81518060208401855e5f93019283525090919050565b5f6106548284610632565b9392505050565b5f6020828403121561066b575f5ffd5b5051919050565b5f61067d8285610632565b60ff199390931683525050601f01919050565b805160208083015191908110156106b0575f198160200360031b1b821691505b5091905056fea26469706673582212209444be51076e923b5ca3aae13ef32c1f272a1b887d60f6d7f95a6c9d12d1789d64736f6c634300081b003360c060405234801561000f575f5ffd5b50604051610ae7380380610ae783398101604081905261002e91610044565b6001600160a01b0390911660805260a05261007b565b5f5f60408385031215610055575f5ffd5b82516001600160a01b038116811461006b575f5ffd5b6020939093015192949293505050565b60805160a051610a306100b75f395f818161013c015261036a01525f818160fd015281816101700152818161022501526102b60152610a305ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c80632249f653146100645780633d96c2c9146100915780637fb34967146100a657806384f15db2146100b95780639611c5c2146100f8578063ffa1ad7414610137575b5f5ffd5b610077610072366004610743565b61016c565b604080519283526020830191909152015b60405180910390f35b6100a461009f36600461075a565b61021a565b005b6100a46100b4366004610783565b6102b4565b6100e86100c736600461081c565b5f918252602082815260408084209284526002909201905290205460ff1690565b6040519015158152602001610088565b61011f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610088565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610088565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b67d057b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee919061083c565b8311156101ff57505f928392509050565b50505f90815260208190526040902080546001909101549091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102635760405163164a486160e11b815260040160405180910390fd5b5f83815260208181526040918290208481556001018390559051828152839185917fd3fab397eb3e47fb43090430543ca9623e09aeddf27bfde1bf7bdca871ee9ebc910160405180910390a3505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b67d057b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610310573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610334919061083c565b841115849061036257604051630e194a6d60e01b815260040161035991815260200190565b60405180910390fd5b5060208501357f00000000000000000000000000000000000000000000000000000000000000008181146103b25760405163deae896760e01b815260048101929092526024820152604401610359565b506103c59050606086016040870161086e565b6001600160a01b031633146103e0606087016040880161086e565b339091610413576040516357aad58160e01b81526001600160a01b03928316600482015291166024820152604401610359565b505046606086013514610439576040516315dfb1f160e21b815260040160405180910390fd5b5f8481526020819052604090208054858161046a57604051635228479160e11b815260040161035991815260200190565b505f8581526002830160205260409020548690869060ff16156104a957604051633f5c70b560e21b815260048101929092526024820152604401610359565b505060018201548084808211156104dc57604051631206f36760e21b815260048101929092526024820152604401610359565b505f90506104f76104f2368b90038b018b6108f2565b61056b565b90506105068686838a876105cd565b5f87815260028501602052604090819020805460ff1916600117905551819084908a907f34bc3301c4660a5642d2246e175e7fea498c94258d39dcaa555a52464dbb083d90610558908c815260200190565b60405180910390a4505050505050505050565b80516020808301516040808501518151855181860152948401519185019190915281516001600160a01b03166060850152910151608083015260a08201525f906105c79060c0015b6040516020818303038152906040526106ae565b92915050565b82825f5b8681101561066657600180831614806106205761061b848a8a858181106105fa576105fa610980565b905060200201356040516020016105b3929190918252602082015260400190565b610657565b61065789898481811061063557610635610980565b90506020020135856040516020016105b3929190918252602082015260400190565b935050600191821c91016105d1565b50828286868284146106a157604051635f216bf160e01b81526004810194909452602484019290925260448301526064820152608401610359565b5050505050505050505050565b6040805160018082528183019092525f91602082018180368337019050506002836040516106dc91906109ab565b602060405180830381855afa1580156106f7573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061071a919061083c565b60405160200161072b9291906109b6565b6040516020818303038152906040526105c7906109d4565b5f60208284031215610753575f5ffd5b5035919050565b5f5f5f6060848603121561076c575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f5f5f858703610100811215610799575f5ffd5b60a08112156107a6575f5ffd5b5085945060a0850135935060c0850135925060e085013567ffffffffffffffff8111156107d1575f5ffd5b8601601f810188136107e1575f5ffd5b803567ffffffffffffffff8111156107f7575f5ffd5b8860208260051b840101111561080b575f5ffd5b959894975092955050506020019190565b5f5f6040838503121561082d575f5ffd5b50508035926020909101359150565b5f6020828403121561084c575f5ffd5b5051919050565b80356001600160a01b0381168114610869575f5ffd5b919050565b5f6020828403121561087e575f5ffd5b61088782610853565b9392505050565b6040516060810167ffffffffffffffff811182821017156108bd57634e487b7160e01b5f52604160045260245ffd5b60405290565b6040805190810167ffffffffffffffff811182821017156108bd57634e487b7160e01b5f52604160045260245ffd5b5f81830360a081128015610904575f5ffd5b5061090d61088e565b604082121561091a575f5ffd5b6109226108c3565b843581526020808601359082015281526040603f1983011215610943575f5ffd5b61094b6108c3565b915061095960408501610853565b82526060840135602080840191909152810191909152608090920135604083015250919050565b634e487b7160e01b5f52603260045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f6108878284610994565b5f6109c18285610994565b60ff199390931683525050601f01919050565b805160208083015191908110156109f4575f198160200360031b1b821691505b5091905056fea26469706673582212209e3a176930995bc8c7def6e7bebbc96947e6537b0b8f2cfb33a18325b6408ed264736f6c634300081b0033";
3
+ */ export const RollupBytecode = "0x6101806040525f6003556004805461ffff19166001179055348015610022575f5ffd5b5060405161a9e038038061a9e083398101604081905261004191610d1b565b8787878787878787826040518060400160405280600c81526020016b0417a74656320526f6c6c75760a41b815250604051806040016040528060018152602001603160f81b81525061009c5f836106b860201b90919060201c565b610120526100ab8160016106b8565b61014052815160208084019190912060e052815190820120610100524660a05261013760e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b03811661016e57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610177816106ea565b508051602082015161018a91429161073b565b5f6201518090505f82608001518360a001516040516101a890610c12565b9182526020820152604001604051809103905ff0801580156101cc573d5f5f3e3d5ffd5b507fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cad80546001600160a01b03808c166001600160a01b0319928316179092557fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68caf8054838c169083161790557fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb08590557fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cae8054928416929091169190911790559050604083810151905163ada0269160e01b8152600481019190915273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063ada02691906024015f6040518083038186803b1580156102dc575f5ffd5b505af41580156102ee573d5f5f3e3d5ffd5b50504361016052505083517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636c556020808501517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636d55604080516060810182528187015181525f8184018181529282018181529080527f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf8706363909352517fb3ade4033914152f3b005b4478fa384ef1c303edcc4f553600cf82f7ad591fe455517fb3ade4033914152f3b005b4478fa384ef1c303edcc4f553600cf82f7ad591fe555517fb3ade4033914152f3b005b4478fa384ef1c303edcc4f553600cf82f7ad591fe65560608301517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf8706368557f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636980546001600160a01b038c81166001600160a01b0319928316179092557f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636b80548c84169083161790557f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636e805492891692909116919091179055604080518082018252600c81526b0617a7465635f726f6c6c75760a41b60208083019190915291517f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf8706361925f9261050f929091469130918b9101610e19565b604051602081830303815290604052805190602001205f1c63ffffffff1690508082600701600901819055505f308d83600460405161054d90610c1f565b6001600160a01b03948516815293909216602084015260408301526060820152608001604051809103905ff080158015610589573d5f5f3e3d5ffd5b50600e840180546001600160a01b0319166001600160a01b038316179055604051909150309083906105ba90610c2c565b6001600160a01b0390921682526020820152604001604051809103905ff0801580156105e8573d5f5f3e3d5ffd5b50600f840180546001600160a01b0319166001600160a01b0392831617905560408051638ccf6b9560e01b8152905191831691638ccf6b95916004808201926020929091908290030181865afa158015610644573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106689190610e65565b6009840180546001600160a01b0319166001600160a01b039290921691909117905560c086015160e087015161069e91906107d7565b505050505050505050505050505050505050505050611053565b5f6020835110156106d3576106cc83610988565b90506106e4565b816106de8482610f0b565b5060ff90505b92915050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b7fcc2bde3d21ba778aa5c156bb6fc47381978b0054c8a1ef73f44234164324cbe0610765846109c5565b81546001600160801b0319166001600160801b0391909116178155610789836109fc565b815463ffffffff91909116600160801b0263ffffffff60801b199091161781556107b2826109fc565b815463ffffffff91909116600160a01b0263ffffffff60a01b19909116179055505050565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652c8281556305f5e10061080e6332f1b33685610fc5565b6108189190610fe8565b6001820155600281018290556040805160a0810182525f8082526020820181905291810182905260608101829052608081019190915261085790610a2c565b5f8080526008830160209081526040918290208351815485840151868601516060808901516080998a015163ffffffff16600160e01b026001600160e01b0365ffffffffffff928316600160b01b0265ffffffffffff60b01b1993909516600160801b0292909216600160801b600160e01b03196001600160401b0396871668010000000000000000026001600160801b0319909816969098169590951795909517959095169290921717831691909117909255835160a081018552633b9aca009281019283526001958101959095529084528251808401909352488352838201929182019061094790610b0316565b905281526005602091820181905282518051600386015582015160048501558282015180519185019190915501516006830155604001516007909101555050565b5f5f829050601f815111156109b2578260405163305a27a960e01b81526004016101659190611007565b80516109bd82611019565b179392505050565b5f6001600160801b038211156109f8576040516306dfcc6560e41b81526080600482015260248101839052604401610165565b5090565b5f63ffffffff8211156109f8576040516306dfcc6560e41b81526020600482015260248101839052604401610165565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091526040518060a00160405280610a748460600151610bab60201b60201c565b6001600160401b03168152602001610a958460800151610bab60201b60201c565b6001600160401b03168152602001610ab68460400151610be060201b60201c565b65ffffffffffff168152602001610ad5845f0151610be060201b60201c565b65ffffffffffff168152602001610af584602001516109fc60201b60201c565b63ffffffff16905292915050565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15610ba6577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b7d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ba1919061103c565b905090565b504a90565b5f6001600160401b038211156109f857604080516306dfcc6560e41b8152600481019190915260248101839052604401610165565b5f65ffffffffffff8211156109f8576040516306dfcc6560e41b81526030600482015260248101839052604401610165565b611dd9806164ea83390190565b611c36806182c383390190565b610ae780619ef983390190565b6001600160a01b0381168114610c4d575f5ffd5b50565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b0381118282101715610c8757610c87610c50565b60405290565b604051606081016001600160401b0381118282101715610c8757610c87610c50565b5f6101008284031215610cc0575f5ffd5b610cc8610c64565b825181526020808401519082015260408084015190820152606080840151908201526080808401519082015260a0808401519082015260c0808401519082015260e0928301519281019290925250919050565b5f5f5f5f5f5f5f5f888a03610220811215610d34575f5ffd5b8951610d3f81610c39565b60208b0151909950610d5081610c39565b60408b0151909850610d6181610c39565b60608b0151909750610d7281610c39565b60808b0151909650610d8381610c39565b60a08b0151909550610d9481610c39565b9350606060bf1982011215610da7575f5ffd5b50610db0610c8d565b60c08a0151815260e08a015160208201526101008a015160408201529150610ddc8a6101208b01610caf565b90509295985092959890939650565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60c081525f610e2b60c0830187610deb565b905084602083015260018060a01b03841660408301528251606083015260208301516080830152604083015160a083015295945050505050565b5f60208284031215610e75575f5ffd5b8151610e8081610c39565b9392505050565b600181811c90821680610e9b57607f821691505b602082108103610eb957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610f0657805f5260205f20601f840160051c81016020851015610ee45750805b601f840160051c820191505b81811015610f03575f8155600101610ef0565b50505b505050565b81516001600160401b03811115610f2457610f24610c50565b610f3881610f328454610e87565b84610ebf565b6020601f821160018114610f6a575f8315610f535750848201515b5f19600385901b1c1916600184901b178455610f03565b5f84815260208120601f198516915b82811015610f995787850151825560209485019460019092019101610f79565b5084821015610fb657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b80820281158282048414176106e457634e487b7160e01b5f52601160045260245ffd5b5f8261100257634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f610e806020830184610deb565b80516020808301519190811015610eb9575f1960209190910360031b1b16919050565b5f6020828403121561104c575f5ffd5b5051919050565b60805160a05160c05160e0516101005161012051610140516101605161544b61109f5f395f6108da01525f612e1301525f612de701525f50505f50505f50505f50505f505061544b5ff3fe608060405234801561000f575f5ffd5b50600436106104d2575f3560e01c806380edb5bd11610284578063c27f08b511610161578063d9bbd278116100d5578063ed9187b71161008f578063ed9187b714610bd1578063ede57c3414610bee578063ee3b8dc214610bf6578063f2e97fa714610c09578063f2fde38b14610c11578063fcb3f6ba14610c24575f5ffd5b8063d9bbd27814610b5d578063dc1bb8f414610b65578063e0fae2a914610b78578063e3380b7914610b8b578063e48a5f7b14610b93578063e6e2844014610bbe575f5ffd5b8063cf20d87211610126578063cf20d87214610aef578063d03b2bae14610af7578063d0c80f1314610b0a578063d43b51d114610b3a578063d768df6e14610b42578063d8e3784c14610b55575f5ffd5b8063c27f08b514610a82578063c38f2a6d14610a95578063c4014c1214610aa8578063c7523d7914610ac9578063c9d1e01214610adc575f5ffd5b8063966ab4ee116101f8578063a32fbb7b116101bd578063a32fbb7b14610a31578063a7f8e64614610a39578063aabc249614610a4c578063b67d057b14610a5f578063b97dd9e214610a67578063b9d0916314610a6f575f5ffd5b8063966ab4ee146109cf5780639e0fedd8146109d75780639f2b3154146109f9578063a011f6a914610a01578063a2429e8814610a1e575f5ffd5b80638ccf6b95116102495780638ccf6b95146109685780638da5cb5b146109705780638f2a2b26146109815780638fcc697a1461099457806390a3b386146109a757806391ee8b64146109af575f5ffd5b806380edb5bd1461091757806384b0196e1461092a578063850bee35146109455780638789a1321461094d57806388e4a07314610960575f5ffd5b806342d21ef7116103b257806369457a6f116103265780637468582f116102eb5780637468582f146108a257806374af185e146108af578063754eddb7146108c257806379ed8ead146108d55780637afeed28146108fc5780637de3ca891461090f575f5ffd5b806369457a6f146107d057806370192e56146107e3578063715018a614610829578063723d8e961461083157806372c6c7101461084e575f5ffd5b8063508ac49b11610377578063508ac49b146107415780635a97eaa1146107495780635d3ea8f11461075c5780635dc0ff941461077d5780635f82401f1461079d57806368faa778146107bd575f5ffd5b806342d21ef7146106d657806348b9e57b146107165780634a1770081461071e5780634eb4a4d6146107315780634ed7e43514610739575f5ffd5b806330ccebb5116104495780633777e8631161040e5780633777e8631461066a578063386f56fc1461067d57806338b39d29146106a45780633b10244b146106be5780633f47ad06146106c65780634267d0bd146106ce575f5ffd5b806330ccebb5146105bf5780633334f7dc146105df57806333f9acb41461060257806334a51ed51461062a578063368c093c1461064a575f5ffd5b80630d8e6e2c1161049a5780630d8e6e2c14610561578063160bbf8a146105695780631708095c1461057c5780631be94175146105845780631cfe28781461059757806329c24030146105b7575f5ffd5b80630121b93f146104d657806302a21460146104eb57806302fb4d851461050657806304c07569146105195780630808ee6e1461054e575b5f5ffd5b6104e96104e43660046141ac565b610c36565b005b6104f3610c99565b6040519081526020015b60405180910390f35b6104e96105143660046141d7565b610cbc565b61052c6105273660046141ac565b610cca565b60408051825181526020808401519082015291810151908201526060016104fd565b6104e961055c36600461420e565b610d66565b6104f3610de2565b6104e9610577366004614423565b610df4565b6104f3610e42565b6104e96105923660046144eb565b610e54565b6105aa6105a53660046141ac565b610ecb565b6040516104fd919061457d565b6104f3610edf565b6105d26105cd3660046145bd565b610eed565b6040516104fd919061460c565b6105f26105ed36600461461a565b610ef7565b60405190151581526020016104fd565b610615610610366004614645565b610f41565b604080519283526020830191909152016104fd565b61063d6106383660046145bd565b611047565b6040516104fd91906146a9565b610652611058565b6040516001600160a01b0390911681526020016104fd565b6104f36106783660046141ac565b611073565b7fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb0546104f3565b734355415548584943414c4c490000000000000000610652565b6106526110a2565b6104f36110ac565b6104f36110c2565b6106e96106e43660046141ac565b6110f6565b604080519687526020870195909552938501929092526060840152608083015260a082015260c0016104fd565b6104f3611159565b6104e961072c3660046145bd565b611162565b6104f361116e565b6105aa611187565b6104e9611192565b6104f36107573660046141ac565b61119c565b5f5160206153d65f395f51905f5254600160a01b900463ffffffff166104f3565b61079061078b3660046145bd565b6111bb565b6040516104fd91906146f5565b6107b06107ab3660046141ac565b6111cc565b6040516104fd9190614703565b6104f36107cb36600461471a565b6111e8565b6105aa6107de3660046141ac565b61129c565b6107f66107f1366004614748565b6112a7565b6040516104fd91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b6104e96112d8565b5f5160206153d65f395f51905f52546001600160801b03166104f3565b61086161085c3660046141ac565b6112e9565b6040516104fd91905f60a082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015292915050565b6004546105f29060ff1681565b6104f36108bd3660046141ac565b6113b3565b6104f36108d0366004614748565b6113bd565b6104f37f000000000000000000000000000000000000000000000000000000000000000081565b6104f361090a3660046141ac565b6113d0565b6104f36113f1565b6104f36109253660046141ac565b611405565b61093261140f565b6040516104fd97969594939291906147d3565b610652611451565b6104f361095b3660046145bd565b61146c565b6107b0611496565b6106526114cf565b6002546001600160a01b0316610652565b6104f361098f3660046141ac565b6114ea565b6104e96109a2366004614842565b611506565b6104f3611562565b6109c26109bd36600461485d565b61156c565b6040516104fd9190614929565b6105aa6115ff565b6109ea6109e536600461493b565b61160c565b6040516104fd93929190614979565b6104e96116a0565b5f5160206153765f395f51905f52546001600160a01b0316610652565b6104e9610a2c3660046141ac565b6116ce565b6106526116fa565b610652610a473660046141ac565b611715565b6104e9610a5a3660046145bd565b61171f565b6104f3611767565b6104f3611779565b6104f3610a7d3660046141ac565b611783565b610652610a903660046141ac565b61178d565b6104e9610aa336600461499d565b6117b8565b5f5160206153d65f395f51905f5254600160801b900463ffffffff166104f3565b6104f3610ad73660046145bd565b6117ef565b6104f3610aea3660046141ac565b611893565b61065261189d565b6104f3610b053660046141ac565b6118b8565b7fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cae546001600160a01b0316610652565b6104f36118c2565b6104f3610b503660046149d4565b6118d4565b6104f3611976565b6104f3611980565b6105f2610b733660046141ac565b6119f7565b610615610b863660046141ac565b611a01565b6104e9611a1d565b610ba6610ba13660046145bd565b611a77565b60405190516001600160a01b031681526020016104fd565b6104e9610bcc3660046141ac565b611a8e565b5f5160206153965f395f51905f52546001600160a01b0316610652565b6104f3611b0a565b6105f2610c04366004614a79565b611b24565b6104e9611b9e565b6104e9610c1f3660046145bd565b611be0565b6004546105f290610100900460ff1681565b604051630121b93f60e01b81526004810182905273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__90630121b93f906024015b5f6040518083038186803b158015610c80575f5ffd5b505af4158015610c92573d5f5f3e3d5ffd5b5050505050565b5f5f610ca3611c1a565b80545f9081526002909101602052604090205492915050565b610cc68282611c3e565b5050565b610ceb60405180606001604052805f81526020015f81526020015f81525090565b5f610cf4611c1a565b80549091508381811115610d295760405163e5edf84760e01b8152600481019290925260248201526044015b60405180910390fd5b50505f9283526002908101602090815260409384902084516060810186528154815260018201549281019290925290910154928101929092525090565b604051630404773760e11b81526001600160a01b03808516600483015283166024820152811515604482015273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__90630808ee6e906064015f6040518083038186803b158015610dc7575f5ffd5b505af4158015610dd9573d5f5f3e3d5ffd5b50505050505050565b5f610deb611c1a565b60100154919050565b610dd96040518060e00160405280610e0c8a8a611ffa565b8152602001878152602001868152602001858152602001610e2e8660016113bd565b8152602001848152602001838152506121b7565b5f610e4b611c1a565b60070154919050565b6004805460405163a911737f60e01b815273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9263a911737f92610e9992899289928992899260ff9092169101614be0565b5f6040518083038186803b158015610eaf575f5ffd5b505af4158015610ec1573d5f5f3e3d5ffd5b5050505050505050565b6060610ed96107de83611893565b92915050565b5f610ee8612428565b905090565b5f610ed98261244c565b5f610f00611c1a565b5f8581526005919091016020908152604080832086845260020182528083206001600160a01b038616845260010190915290205460ff1690505b9392505050565b5f5f5f610f4d8561251a565b90505f610f58611c1a565b90505f610f6487612558565b5f8181526002848101602052604090912001549091508084808210610fa55760405163083510bd60e41b815260048101929092526024820152604401610d20565b50505f8281526002840160205260409020548088808214610fe257604051635b41520760e11b815260048101929092526024820152604401610d20565b50505f610ff786610ff288612582565b6125a9565b905080336001600160a01b038216811461102657604051631510874d60e31b8152600401610d20929190614cae565b50869050611035856001614cdc565b975097505050505050505b9250929050565b61104f6140a2565b610ed98261260e565b5f611061611c1a565b600e01546001600160a01b0316919050565b5f5f61107d611c1a565b805490915083111561108f575f610f3a565b5f92835260020160205250604090205490565b5f610ee84261178d565b5f5f5160206153f65f395f51905f525b54919050565b5f610ee86110ce6118c2565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652e54906126e4565b5f5f5f5f5f5f5f611105611c1a565b60018101545f818152600283016020526040808220548454808452919092205493945091929091906111368c611073565b600186015461114490611405565b949d939c50919a509850965090945092505050565b5f6110bc611c1a565b61116b816126f6565b50565b5f5f5160206153f65f395f51905f525b60020154905090565b6060610ee842612993565b61119a612a17565b565b5f6111a5611c1a565b5f92835260050160205250604090206001015490565b6111c36140d7565b610ed982612ad2565b604080518082019091525f8082526020820152610ed982612b6f565b5f5f6111f2611c1a565b6001600160a01b0384165f908152600682016020908152604080832088845290915290205490915060ff161561122b575f915050610ed9565b5f848152600582016020908152604080832080548085526002820184528285206001600160a01b038916865260010190935292205460ff1615611291575f81815260028301602052604090205460018301546112879190614d03565b9350505050610ed9565b505f95945050505050565b6060610ed982612bd7565b6112ce60405180608001604052805f81526020015f81526020015f81526020015f81525090565b610f3a8383612bef565b6112e0612c2d565b61119a5f612c5a565b6113166040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b5f8281527f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de65346020908152604091829020825160a08101845290546001600160401b0380821683526801000000000000000082041692820192909252600160801b820465ffffffffffff90811693820193909352600160b01b82049092166060830152600160e01b900463ffffffff166080820152610ed990612cab565b5f610ed982612582565b5f610f3a6113cb84846112a7565b612d41565b5f6113e26113dd83611893565b612d63565b6001600160e01b031692915050565b5f5f5160206153b65f395f51905f5261117e565b5f610ed982612d88565b5f6060805f5f5f6060611420612de0565b611428612e0c565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f61145a611c1a565b600801546001600160a01b0316919050565b5f611475611c1a565b6001600160a01b039092165f90815260049290920160205250604090205490565b604080518082019091525f80825260208201526114b1611c1a565b60408051808201909152815481526001909101546020820152919050565b5f6114d8611c1a565b600901546001600160a01b0316919050565b5f6114f3611c1a565b5f92835260030160205250604090205490565b61150e612c2d565b600480548215156101000261ff00199091161790556040517ffa50fc5c953ca42e5b6a7acac6e13c95c2ec283b259630f1d839e445fcec8c949061155790831515815260200190565b60405180910390a150565b5f610ee842612e39565b60405163d99537c960e01b815260609073__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063d99537c9906115b2908b908b908b908b908b908b908b90600401614d48565b5f60405180830381865af41580156115cc573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526115f39190810190614de2565b98975050505050505050565b6060610ee86107de611779565b6004805460405163f711e6c360e01b81526060925f92839273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9263f711e6c392611652928a928a9260ff169101614e13565b5f60405180830381865af415801561166c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526116939190810190614e38565b9250925092509250925092565b6116a942612e96565b6116c65760405163850defd360e01b815260040160405180910390fd5b61119a612efe565b6116d6612c2d565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652e55565b5f611703611c1a565b600f01546001600160a01b0316919050565b5f610ed982612f53565b611727612c2d565b60405163555e124b60e11b81526001600160a01b038216600482015273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063aabc249690602401610c6a565b5f611770611c1a565b60010154919050565b5f610ee842612fda565b5f610ed98261251a565b5f5f6117988361251a565b90505f6117a482612582565b90506117b082826125a9565b949350505050565b604051630f484ad560e01b815273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__90630f484ad590610c6a908490600401614e83565b6004545f90610100900460ff166118195760405163e8b9b95160e01b815260040160405180910390fd5b60405163c7523d7960e01b81526001600160a01b038316600482015273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063c7523d7990602401602060405180830381865af415801561186f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed99190614f20565b5f610ed982612fda565b5f6118a6611c1a565b600a01546001600160a01b0316919050565b5f610ed98261302c565b5f610ee86118ce611c1a565b54613065565b6004545f90610100900460ff166118fe5760405163e8b9b95160e01b815260040160405180910390fd5b604051636bb46fb760e11b815273__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063d768df6e906119379086908690600401614f37565b602060405180830381865af4158015611952573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3a9190614f20565b5f610ee84261251a565b5f5160206153965f395f51905f525460408051631e328a3b60e31b815290515f926001600160a01b03169163f19451d89160048083019260209291908290030181865afa1580156119d3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee89190614f20565b5f610ed982612e96565b5f5f611a14611a0f84611893565b6130b9565b91509150915091565b73__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__63e3380b796040518163ffffffff1660e01b81526004015f6040518083038186803b158015611a5f575f5ffd5b505af4158015611a71573d5f5f3e3d5ffd5b50505050565b60408051602081019091525f8152610ed982613133565b611a96612c2d565b5f5160206153f65f395f51905f5254808281811015611ad157604051630d1bff9560e21b815260048101929092526024820152604401610d20565b5050611adc826131bc565b60405182907faaa1053539ab4621b2aecf54a7ccf2096610ff768f32261f667aca9ae3069482905f90a25050565b5f611b166113dd611779565b6001600160e01b0316905090565b60405163771dc6e160e11b81525f9073__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__9063ee3b8dc290611b5f9086908690600401614cae565b602060405180830381865af4158015611b7a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3a9190614f8c565b73__$7eee354a7e2fe0a30cbaa7cec3d04ae93b$__63f2e97fa76040518163ffffffff1660e01b81526004015f6040518083038186803b158015611a5f575f5ffd5b611be8612c2d565b6001600160a01b038116611c1157604051631e4fbdf760e01b81525f6004820152602401610d20565b61116b81612c5a565b7f0958201b72d64259285941dffd868dac55267471fcc73e8a06e1fd9cf870636190565b7fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cae545f5160206153765f395f51905f52906001600160a01b031633808214611c9b576040516311d37a1960e11b8152600401610d20929190614cae565b50506001600160a01b0383165f90815260048201602052604090206003810154600160a81b900460ff1615611d6757600281015442108490611cfc57604051630116fd2560e61b81526001600160a01b039091166004820152602401610d20565b5082816001015403611d49576001600160a01b0384165f908152600483016020526040812081815560018101829055600281019190915560030180546001600160b01b0319169055611fb1565b82816001015f828254611d5c9190614fa7565b90915550611fb19050565b600282015460405163f4603fe160e01b81525f9182916001600160a01b039091169063f4603fe190611d9f9030908a90600401614cae565b606060405180830381865afa158015611dba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dde9190614fba565b5091509150808690611e0f57604051631f8bdfc760e21b81526001600160a01b039091166004820152602401610d20565b50600284015460405163f3fef3a360e01b81526001600160a01b038881166004830152602482018890525f92839283929091169063f3fef3a3906044016060604051808303815f875af1158015611e68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e8c9190614ff9565b919450925090505f611e9e8985614fa7565b9050828015611eac57505f81115b15611faa576040518060c00160405280838152602001828152602001611ed6428b600301546131f3565b8152602001876001600160a01b031681526020015f1515815260200160011515815250886004015f8c6001600160a01b03166001600160a01b031681526020019081526020015f205f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060808201518160030160146101000a81548160ff02191690831515021790555060a08201518160030160156101000a81548160ff0219169083151502179055509050505b5050505050505b836001600160a01b03167f4ed05e9673c26d2ed44f7ef6a7f2942df0ee3b5e1e17db4b99f9dcd261a339cd84604051611fec91815260200190565b60405180910390a250505050565b612002614114565b61013c8280821461202f5760405163f3ccb24760e01b815260048101929092526024820152604401610d20565b5050612039614114565b61204660205f8587615031565b61204f91615058565b815261205f604060208587615031565b61206891615058565b60208201515261207c606060408587615031565b61208591615058565b602080830151015261209b608060608587615031565b6120a491615058565b6020820151604001526120bb60a060808587615031565b6120c491615058565b6020820151606001526120db60c060a08587615031565b6120e491615058565b60408201526120f760c860c08587615031565b61210091615075565b60c01c606082015261211660dc60c88587615031565b61211f916150ad565b60601c608082015261213560fc60dc8587615031565b61213e91615058565b60a082015261215261010c60fc8587615031565b61215b916150ed565b60c082015160809190911c905261217861011c61010c8587615031565b612181916150ed565b60c082015160809190911c6020909101526121a261013c61011c8587615031565b6121ab91615058565b60e08201529392505050565b6121bf612428565b815160e0015111156121e4576040516313258e7d60e01b815260040160405180910390fd5b5f6121ed611c1a565b90505f6121fd8360600151612558565b5f81815260028401602052604090205484515191925090819080821461223f57604051635b41520760e11b815260048101929092526024820152604401610d20565b505083516040908101515f84815260028681016020529290209091015480828082106122875760405163083510bd60e41b815260048101929092526024820152604401610d20565b50505f612297876060015161251a565b905080838082146122c4576040516309ba91ff60e01b815260048101929092526024820152604401610d20565b50505f6122d08461302c565b885160600151909150819081811461230457604051633132e89560e01b815260048101929092526024820152604401610d20565b5050612314818960600151101590565b88606001518290916123425760405163089f306960e41b815260048101929092526024820152604401610d20565b505060c08801515180612361575060a088015188516020908101510151145b885160209081015101519061238c5760405163414906c360e01b8152600401610d2091815260200190565b50875160c00151516001600160801b0316156123bb57604051636ce3afa960e11b815260040160405180910390fd5b6080880151885160c00151602001516001600160801b0381168214612405576040516339db6c4b60e11b815260048101929092526001600160801b03166024820152604401610d20565b5050610ec18461241486612582565b8a602001518b604001518c60c001516131fe565b5f5160206153f65f395f51905f5280545f9190612446906002615123565b91505090565b5f5f61245783612ad2565b90505f5f5160206153765f395f51905f5260020154604051630a6718eb60e31b81526001600160a01b0390911690635338c7589061249b9030908890600401614cae565b602060405180830381865afa1580156124b6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124da9190614f20565b90505f8260a00151156125015782608001516124f75760026124fa565b60035b90506117b0565b5f821161250e575f612511565b60015b95945050505050565b5f5160206153d65f395f51905f5280545f9190600160801b810463ffffffff169061254e906001600160801b031685614fa7565b610f3a9190614d03565b5f5f612562611c1a565b905061256d83612e96565b612578578054610f3a565b6001015492915050565b5f5f5160206153d65f395f51905f5254610ed990600160a01b900463ffffffff1683614d03565b5f5f6125b483612d63565b90505f6125c18483613512565b905080515f036125d5575f92505050610ed9565b806125ec8587856001600160e01b0316855161359f565b815181106125fc576125fc61513a565b60200260200101519250505092915050565b6126166140a2565b604051806080016040528061262a8461244c565b600381111561263b5761263b6145d8565b81526020015f5160206153765f395f51905f5260020154604051630a6718eb60e31b81526001600160a01b0390911690635338c758906126819030908890600401614cae565b602060405180830381865afa15801561269c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c09190614f20565b81526020016126ce84612ad2565b81526020016126dc84613133565b905292915050565b5f610f3a8383633b9aca0060016135e0565b6001600160a01b038181165f9081527fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb16020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600390910154918216606082015260ff600160a01b8304811615156080830152600160a81b909204909116151560a082018190525f5160206153765f395f51905f52919083906127c45760405163077ab37760e51b81526001600160a01b039091166004820152602401610d20565b50806080015183906127f55760405163077ab37760e51b81526001600160a01b039091166004820152602401610d20565b50604081015142908082101561282757604051632238609b60e21b815260048101929092526024820152604401610d20565b50506001600160a01b038381165f908152600484810160205260408083208381556001810184905560028082019490945560030180546001600160b01b031916905591850154845192516333f3d8ff60e01b8152918201929092529116906333f3d8ff906024015f604051808303815f87803b1580156128a5575f5ffd5b505af11580156128b7573d5f5f3e3d5ffd5b505083546060840151602085015160405163a9059cbb60e01b81526001600160a01b03928316600482015260248101919091529116925063a9059cbb91506044016020604051808303815f875af1158015612914573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129389190614f8c565b5080606001516001600160a01b0316836001600160a01b03167f66c8566b2b2f6e94c4aeb1a2b19fb4453fe9ed72ac3c4e152f257d655c13b5bf836020015160405161298691815260200190565b60405180910390a3505050565b60605f5160206153765f395f51905f526002015460405163bd76784b60e01b8152306004820152602481018490526001600160a01b039091169063bd76784b906044015f60405180830381865afa1580156129f0573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ed9919081019061514e565b5f612a214261251a565b7f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de6533549091505f5160206153f65f395f51905f52905f90612a6c90612a6760056002613622565b6131f3565b905082811115612a7b57505050565b60058201546003830155600682015460048301556040805180820190915248815260208101612aa861362d565b905280516005840155602001516006830155612ac58360026131f3565b6007909201919091555050565b612ada6140d7565b506001600160a01b039081165f9081527fbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cb16020908152604091829020825160c08101845281548152600182015492810192909252600281015492820192909252600390910154918216606082015260ff600160a01b8304811615156080830152600160a81b909204909116151560a082015290565b604080518082019091525f80825260208201525f5160206153f65f395f51905f52612ba5612b9c8461251a565b60078301541190565b612bb25760058101612bb7565b600381015b604080518082019091528154815260019091015460208201529392505050565b60605f612be383612d63565b9050610f3a8382613512565b612c1660405180608001604052805f81526020015f81526020015f81526020015f81525090565b5f612c2084612558565b90506117b08185856136ac565b6002546001600160a01b0316331461119a5760405163118cdaa760e01b8152336004820152602401610d20565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b612cd86040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060a00160405280836060015165ffffffffffff168152602001836080015163ffffffff168152602001836040015165ffffffffffff168152602001835f01516001600160401b0316815260200183602001516001600160401b03168152509050919050565b8051606082015160408301515f9291612d5991614cdc565b610ed99190614cdc565b5f5f5160206153b65f395f51905f52610f3a612d7e846138db565b600183019061390f565b5f5f612d92611c1a565b80549091508381811115612dc25760405163e5edf84760e01b815260048101929092526024820152604401610d20565b50505f838152600280830160205260409091200154610f3a90612582565b6060610ee87f00000000000000000000000000000000000000000000000000000000000000005f613965565b6060610ee87f00000000000000000000000000000000000000000000000000000000000000006001613965565b5f5f5160206153765f395f51905f526002015460405163ec6e69db60e01b8152306004820152602481018490526001600160a01b039091169063ec6e69db90604401602060405180830381865afa15801561186f573d5f5f3e3d5ffd5b5f5f612ea0611c1a565b600181015481549192509003612eb857505f92915050565b6001808201545f91612ed291612ecd91614cdc565b612d88565b90505f612eeb612ee183613a0e565b60078501546131f3565b905061251181612efa8761251a565b1190565b5f612f07611c1a565b80546001820154808355604080519182526020820183905292935090917fc78a70f3b27748d5fa327f6a3c1104b9b007d6a80d20c41f7c0dc4543fbdbdcd910160405180910390a15050565b5f5f5160206153765f395f51905f526002015460405163a9cd26c960e01b8152306004820152602481018490524260448201526001600160a01b039091169063a9cd26c990606401602060405180830381865afa158015612fb6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed991906151dd565b5f5160206153d65f395f51905f5280545f919061300d9063ffffffff600160801b8204811691600160a01b9004166151f8565b815463ffffffff919091169061254e906001600160801b031685614fa7565b5f5160206153d65f395f51905f5280545f9190610f3a906001600160801b03811690612a6790600160801b900463ffffffff1686615123565b5f8181527f2e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de653460205260408120545f5160206153f65f395f51905f5290610f3a90600160801b900465ffffffffffff16613a35565b5f8181525f5160206153b65f395f51905f526020819052604082205491908282036130fb576130f86130f3856130ee87612d63565b613512565b613a4a565b92505b5f61310585613a79565b90506131168163ffffffff16612e39565b9250816002015483111561312c57816002015492505b5050915091565b604080516020810182525f81525f5160206153965f395f51905f52549151635dee5f6b60e11b815290916001600160a01b03169063bbdcbed69061317d9030908690600401614cae565b602060405180830381865afa158015613198573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed99190615217565b5f5160206153f65f395f51905f528181556305f5e1006131e06332f1b33684615123565b6131ea9190614d03565b60019091015550565b5f610f3a8284614cdc565b5f5f613209866130b9565b91509150805f0361321b575050610c92565b82602001511561322c575050610c92565b8451819080821461325957604051633a48c66360e21b815260048101929092526024820152604401610d20565b50505f613279878961326a8a612d63565b6001600160e01b03168561359f565b90505f6003613289846002615123565b6132939190614d03565b61329e906001614cdc565b90505f80846001600160401b038111156132ba576132ba614293565b6040519080825280602002602001820160405280156132e3578160200160208202803683370190505b507f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c8a9052603c8120919250905f5b8b51811015613445575f8c82815181106133345761333461513a565b6020026020010151905080602001515f015160ff165f146134055760208181015180518183015160409283015183515f80825295810180865289905260ff909316938301939093526060820152608081019190915260019060a0016020604051602081039080840390855afa1580156133af573d5f5f3e3d5ffd5b505050602060405103519050808684815181106133ce576133ce61513a565b6001600160a01b0390921660209283029190910190910152866133f081615262565b9750508883036133ff57600194505b5061343c565b805f015185838151811061341b5761341b61513a565b60200260200101906001600160a01b031690816001600160a01b0316815250505b50600101613318565b505f8387815181106134595761345961513a565b60200260200101519050828061347757506001600160a01b03811633145b8133909161349a57604051631510874d60e31b8152600401610d20929190614cae565b5086905085818110156134c95760405163af47297f60e01b815260048101929092526024820152604401610d20565b50505f6134d585613a4a565b9050898114613501576040516332a3565560e21b815260048101829052602481018b9052604401610d20565b505050505050505050505050505050565b60605f5160206153b65f395f51905f525f61352c85613a79565b90505f61353e8263ffffffff16612e39565b600284015490915080821180159061356b5761355f8463ffffffff16612993565b95505050505050610ed9565b5f61358083858a6001600160e01b0316613aa9565b90506135928563ffffffff1682613be4565b9650505050505050610ed9565b6040805160208101869052908101849052606081018390525f908290608001604051602081830303815290604052805190602001205f1c612511919061527a565b5f61360d6135ed83613c66565b801561360857505f848061360357613603614cef565b868809115b151590565b613618868686613c92565b6125119190614cdc565b5f610f3a8284614fa7565b5f737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156136a7577f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c6001600160a01b0316631f6d6ef76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119d3573d5f5f3e3d5ffd5b504a90565b6136d360405180608001604052805f81526020015f81526020015f81526020015f81525090565b5f5160206153f65f395f51905f5280545f8190036137155760405180608001604052805f81526020015f81526020015f81526020015f81525092505050610f3a565b5f5f5f5f61372289612b6f565b90505f61373261c3506003615123565b61373f90620249f0614cdc565b82519091505f906137509083615123565b6020840151909150613766620200006003615123565b6137709190615123565b61377a9082614cdc565b905061378a8160018960016135e0565b955050506137dc6137d26137c8620f4240845f01516137b35f5160206153d65f395f51905f5290565b54600160a01b900463ffffffff1660016135e0565b60018860016135e0565b87600201546131f3565b92506137e884846131f3565b5f8b81526008880160205260408120805492945092509061383f9061382990600160e01b810463ffffffff1690600160b01b900465ffffffffffff1661528d565b65ffffffffffff1661383a886152ab565b613d48565b90505f61384b82613d8f565b90505f6138676138618684633b9aca005f6135e0565b86613622565b90505f8b61387957633b9aca00613882565b6138828e613065565b905060405180608001604052806138a283856126e490919063ffffffff16565b8152602081018590526040016138b88a846126e4565b81526020016138c789846126e4565b90529e9d5050505050505050505050505050565b5f63ffffffff82111561390b576040516306dfcc6560e41b81526020600482015260248101839052604401610d20565b5090565b81545f908161392085858385613db4565b9050801561395b5761394485613937600184614fa7565b5f91825260209091200190565b5464010000000090046001600160e01b0316612511565b5f95945050505050565b606060ff831461397f5761397883613e0f565b9050610ed9565b81805461398b906152c5565b80601f01602080910402602001604051908101604052809291908181526020018280546139b7906152c5565b8015613a025780601f106139d957610100808354040283529160200191613a02565b820191905f5260205f20905b8154815290600101906020018083116139e557829003601f168201915b50505050509050610ed9565b5f5f5160206153d65f395f51905f5254610ed990600160a01b900463ffffffff1683615123565b5f610ed96402540be400836305f5e100613e4c565b5f81604051602001613a5c919061457d565b604051602081830303815290604052805190602001209050919050565b5f6001613a84613eb7565b613a95613a9085613ef6565b6138db565b613a9f91906152fd565b610ed991906152fd565b6060838380821115613ad757604051631723245360e31b815260048101929092526024820152604401610d20565b50505f846001600160401b03811115613af257613af2614293565b604051908082528060200260200182016040528015613b1b578160200160208202803683370190505b5090505f613b2a600186614fa7565b90505f5b86811015613ba3575f613b4c82613b46856001614cdc565b88613f08565b9050613b5781613f4a565b848381518110613b6957613b6961513a565b60209081029190910101528215613b9a57613b8c81613b8785613f4a565b613f6a565b82613b9681615319565b9350505b50600101613b2e565b505f5b86811015613bd957613bd1838281518110613bc357613bc361513a565b60200260200101515f613f6a565b600101613ba6565b509095945050505050565b5f5160206153965f395f51905f5254604051639796d97760e01b81526060916001600160a01b031690639796d97790613c259030908790879060040161532e565b5f60405180830381865afa158015613c3f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f3a919081019061514e565b5f6002826003811115613c7b57613c7b6145d8565b613c859190615354565b60ff166001149050919050565b5f838302815f1985870982811083820303915050805f03613cc657838281613cbc57613cbc614cef565b0492505050610f3a565b808411613cdd57613cdd6003851502601118613fc5565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f8212613d6357613d5982613fd6565b6139789084614cdc565b60ff82901d8083011880841115613d8657613d7e8185614fa7565b915050610ed9565b505f9392505050565b5f805f5160206153f65f395f51905f529050610f3a633b9aca00848360010154613e4c565b5f5b81831015613e07575f613dc98484613ffb565b5f8781526020902090915063ffffffff86169082015463ffffffff161115613df357809250613e01565b613dfe816001614cdc565b93505b50613db6565b509392505050565b60605f613e1b83614015565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60018180613e5b8588615123565b90505b8015613ea257613e6e8183614cdc565b9150613e7a8386615123565b613e848783615123565b613e8e9190614d03565b9050613e9b600184614cdc565b9250613e5e565b613eac8583614d03565b979650505050505050565b5f5160206153d65f395f51905f5280545f9190613eea9063ffffffff600160801b8204811691600160a01b9004166151f8565b63ffffffff1691505090565b5f610ed9613f0383613a0e565b61302c565b5f825f03613f1757505f610f3a565b604080516020808201859052818301879052825180830384018152606090920190925280519101206117b090849061527a565b5f5f613f558361403c565b90508015613f635792915050565b5090919050565b610cc681613fbf613fbc85613fae60405180604001604052806018815260200177417a7465632e53616d706c654c69622e4f7665727269646560401b815250614084565b5f9182526020526040902090565b90565b9061409b565b634e487b715f52806020526024601cfd5b5f5f82121561390b57604051635467221960e11b815260048101839052602401610d20565b5f6140096002848418614d03565b610f3a90848416614cdc565b5f60ff8216601f811115610ed957604051632cd44ac360e21b815260040160405180910390fd5b5f610ed9614080613fbc84613fae60405180604001604052806018815260200177417a7465632e53616d706c654c69622e4f7665727269646560401b815250614084565b5c90565b80516020918201205f19015f9081522060ff191690565b80825d5050565b604080516080810182525f80825260208201529081016140c06140d7565b81526040805160208181019092525f815291015290565b6040518060c001604052805f81526020015f81526020015f81526020015f6001600160a01b031681526020015f151581526020015f151581525090565b6040518061010001604052805f815260200161414d60405180608001604052805f81526020015f81526020015f81526020015f81525090565b81526020015f81526020015f81526020015f6001600160a01b031681526020015f81526020016141a060405180604001604052805f6001600160801b031681526020015f6001600160801b031681525090565b81526020015f81525090565b5f602082840312156141bc575f5ffd5b5035919050565b6001600160a01b038116811461116b575f5ffd5b5f5f604083850312156141e8575f5ffd5b82356141f3816141c3565b946020939093013593505050565b801515811461116b575f5ffd5b5f5f5f60608486031215614220575f5ffd5b833561422b816141c3565b9250602084013561423b816141c3565b9150604084013561424b81614201565b809150509250925092565b5f5f83601f840112614266575f5ffd5b5081356001600160401b0381111561427c575f5ffd5b602083019150836020828501011115611040575f5ffd5b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156142c9576142c9614293565b60405290565b604051606081016001600160401b03811182821017156142c9576142c9614293565b604051601f8201601f191681016001600160401b038111828210171561431957614319614293565b604052919050565b5f6001600160401b0382111561433957614339614293565b5060051b60200190565b5f82601f830112614352575f5ffd5b813561436561436082614321565b6142f1565b8082825260208201915060208360071b860101925085831115614386575f5ffd5b602085015b838110156144195780870360808112156143a3575f5ffd5b6143ab6142a7565b82356143b6816141c3565b81526060601f19830112156143c9575f5ffd5b6143d16142cf565b9150602083013560ff811681146143e6575f5ffd5b8252604083810135602080850191909152606085013591840191909152818101929092528452929092019160800161438b565b5095945050505050565b5f5f5f5f5f5f5f87890360e081121561443a575f5ffd5b88356001600160401b0381111561444f575f5ffd5b61445b8b828c01614256565b90995097505060208901356001600160401b03811115614479575f5ffd5b6144858b828c01614343565b965050604089810135955060608a0135945060808a01359350609f19820112156144ad575f5ffd5b506144b66142a7565b60a08901356144c481614201565b815260c08901356144d481614201565b806020830152508091505092959891949750929550565b5f5f5f5f606085870312156144fe575f5ffd5b84356001600160401b03811115614513575f5ffd5b850160a08188031215614524575f5ffd5b935060208501356001600160401b0381111561453e575f5ffd5b61454a87828801614343565b93505060408501356001600160401b03811115614565575f5ffd5b61457187828801614256565b95989497509550505050565b602080825282518282018190525f918401906040840190835b81811015613bd95783516001600160a01b0316835260209384019390920191600101614596565b5f602082840312156145cd575f5ffd5b8135610f3a816141c3565b634e487b7160e01b5f52602160045260245ffd5b6004811061460857634e487b7160e01b5f52602160045260245ffd5b9052565b60208101610ed982846145ec565b5f5f5f6060848603121561462c575f5ffd5b8335925060208401359150604084013561424b816141c3565b5f5f60408385031215614656575f5ffd5b50508035926020909101359150565b8051825260208082015190830152604080820151908301526060808201516001600160a01b03169083015260808082015115159083015260a0908101511515910152565b5f610120820190506146bc8284516145ec565b6020830151602083015260408301516146d86040840182614665565b5060609290920151516001600160a01b0316610100919091015290565b60c08101610ed98284614665565b815181526020808301519082015260408101610ed9565b5f5f6040838503121561472b575f5ffd5b82359150602083013561473d816141c3565b809150509250929050565b5f5f60408385031215614759575f5ffd5b82359150602083013561473d81614201565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f8151808452602084019350602083015f5b828110156147c95781518652602095860195909101906001016147ab565b5093949350505050565b60ff60f81b8816815260e060208201525f6147f160e083018961476b565b8281036040840152614803818961476b565b606084018890526001600160a01b038716608085015260a0840186905283810360c085015290506148348185614799565b9a9950505050505050505050565b5f60208284031215614852575f5ffd5b8135610f3a81614201565b5f5f5f5f5f5f5f87890360e0811215614874575f5ffd5b88359750602089013596506060603f1982011215614890575f5ffd5b5060408801945060a08801356001600160401b038111156148af575f5ffd5b8801601f81018a136148bf575f5ffd5b80356001600160401b038111156148d4575f5ffd5b8a60208260051b84010111156148e8575f5ffd5b6020919091019450925060c08801356001600160401b0381111561490a575f5ffd5b6149168a828b01614256565b989b979a50959850939692959293505050565b602081525f610f3a6020830184614799565b5f5f6020838503121561494c575f5ffd5b82356001600160401b03811115614961575f5ffd5b61496d85828601614256565b90969095509350505050565b606081525f61498b6060830186614799565b60208301949094525060400152919050565b5f602082840312156149ad575f5ffd5b81356001600160401b038111156149c2575f5ffd5b82016101008185031215610f3a575f5ffd5b5f5f604083850312156149e5575f5ffd5b82356149f0816141c3565b915060208301356001600160401b03811115614a0a575f5ffd5b8301601f81018513614a1a575f5ffd5b8035614a2861436082614321565b8082825260208201915060208360051b850101925087831115614a49575f5ffd5b6020840193505b82841015614a6b578335825260209384019390910190614a50565b809450505050509250929050565b5f5f60408385031215614a8a575f5ffd5b8235614a95816141c3565b9150602083013561473d816141c3565b5f5f8335601e19843603018112614aba575f5ffd5b83016020810192503590506001600160401b03811115614ad8575f5ffd5b803603821315611040575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f5f8335601e19843603018112614b23575f5ffd5b83016020810192503590506001600160401b03811115614b41575f5ffd5b8060051b3603821315611040575f5ffd5b8183525f6001600160fb1b03831115614b69575f5ffd5b8260051b80836020870137939093016020019392505050565b5f8151808452602084019350602083015f5b828110156147c957815180516001600160a01b03168752602090810151805160ff1682890152808201516040808a01919091520151606088015260809096019590910190600101614b94565b60808082528635908201525f614bf96020880188614aa5565b60a080850152614c0e61012085018284614ae6565b915050604088013560c0840152614c286060890189614aa5565b848303607f190160e0860152614c3f838284614ae6565b92505050614c506080890189614b0e565b848303607f1901610100860152614c68838284614b52565b925050508281036020840152614c7e8188614b82565b90508281036040840152614c93818688614ae6565b915050614ca4606083018415159052565b9695505050505050565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610ed957610ed9614cc8565b634e487b7160e01b5f52601260045260245ffd5b5f82614d1157614d11614cef565b500490565b80358252602080820135908301526040810135614d32816141c3565b6001600160a01b03166040929092019190915250565b878152866020820152614d5e6040820187614d16565b60e060a08201525f614d7460e083018688614b52565b82810360c0840152614834818587614ae6565b5f82601f830112614d96575f5ffd5b8151614da461436082614321565b8082825260208201915060208360051b860101925085831115614dc5575f5ffd5b602085015b83811015614419578051835260209283019201614dca565b5f60208284031215614df2575f5ffd5b81516001600160401b03811115614e07575f5ffd5b6117b084828501614d87565b604081525f614e26604083018587614ae6565b90508215156020830152949350505050565b5f5f5f60608486031215614e4a575f5ffd5b83516001600160401b03811115614e5f575f5ffd5b614e6b86828701614d87565b60208601516040909601519097959650949350505050565b60208082528235828201528201356040808301919091525f90614eac9060608401908501614d16565b614eb960a0840184614b0e565b61010060c0850152614ed061012085018284614b52565b915050614ee060c0850185614aa5565b848303601f190160e0860152614ef7838284614ae6565b92505050614f0860e0850185614aa5565b848303601f1901610100860152614ca4838284614ae6565b5f60208284031215614f30575f5ffd5b5051919050565b6001600160a01b03831681526040602080830182905283519183018290525f91908401906060840190835b81811015614f80578351835260209384019390920191600101614f62565b50909695505050505050565b5f60208284031215614f9c575f5ffd5b8151610f3a81614201565b81810381811115610ed957610ed9614cc8565b5f5f5f60608486031215614fcc575f5ffd5b8351614fd7816141c3565b6020850151909350614fe881614201565b604085015190925061424b816141c3565b5f5f5f6060848603121561500b575f5ffd5b8351602085015190935061501e81614201565b6040949094015192959394509192915050565b5f5f8585111561503f575f5ffd5b8386111561504b575f5ffd5b5050820193919092039150565b80356020831015610ed9575f19602084900360031b1b1692915050565b80356001600160c01b031981169060088410156150a6576001600160c01b0319600885900360031b81901b82161691505b5092915050565b80356bffffffffffffffffffffffff1981169060148410156150a6576bffffffffffffffffffffffff1960149490940360031b84901b1690921692915050565b80356001600160801b031981169060108410156150a6576001600160801b031960109490940360031b84901b1690921692915050565b8082028115828204841417610ed957610ed9614cc8565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561515e575f5ffd5b81516001600160401b03811115615173575f5ffd5b8201601f81018413615183575f5ffd5b805161519161436082614321565b8082825260208201915060208360051b8501019250868311156151b2575f5ffd5b6020840193505b82841015614ca45783516151cc816141c3565b8252602093840193909101906151b9565b5f602082840312156151ed575f5ffd5b8151610f3a816141c3565b63ffffffff81811683821602908116908181146150a6576150a6614cc8565b5f6020828403128015615228575f5ffd5b50604051602081016001600160401b038111828210171561524b5761524b614293565b6040528251615259816141c3565b81529392505050565b5f6001820161527357615273614cc8565b5060010190565b5f8261528857615288614cef565b500690565b65ffffffffffff8181168382160190811115610ed957610ed9614cc8565b5f600160ff1b82016152bf576152bf614cc8565b505f0390565b600181811c908216806152d957607f821691505b6020821081036152f757634e487b7160e01b5f52602260045260245ffd5b50919050565b63ffffffff8281168282160390811115610ed957610ed9614cc8565b5f8161532757615327614cc8565b505f190190565b60018060a01b0384168152826020820152606060408201525f6125116060830184614799565b5f60ff83168061536657615366614cef565b8060ff8416069150509291505056febba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68cadbba4a4d3c3eeb229c4f06863ce3d3d8cddab9e4dee538d785fc67e2ed9d68caf9bd0cd65f3d2d8103fe75b0f150f04a46bd0e603fd1819b64700ff42b24ee3aacc2bde3d21ba778aa5c156bb6fc47381978b0054c8a1ef73f44234164324cbe02e57d696f4035f6dfbf369d367f6b4aaf23baac5f6ee9a3a5207d71c56de652ca264697066735822122037450b7725dce4ce3e50b0f2e66556e55999f4e9c4f65e86d862a9d8b0fabe7c64736f6c634300081b003360a060405234801561000f575f5ffd5b50604051611dd9380380611dd983398101604081905261002e9161009c565b3330838360405161003e9061008f565b6001600160a01b03948516815293909216602084015260408301526060820152608001604051809103905ff08015801561007a573d5f5f3e3d5ffd5b506001600160a01b0316608052506100be9050565b6117798061066083390190565b5f5f604083850312156100ad575f5ffd5b505080516020909101519092909150565b6080516105856100db5f395f8181603d015260a301526105855ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c8063bffa7f0f14610038578063c96be4cb1461007c575b5f5ffd5b61005f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61008f61008a3660046102af565b61009f565b6040519015158152602001610073565b5f337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381168214610102576040516344c1f74f60e01b81526001600160a01b0392831660048201529116602482015260440160405180910390fd5b50505f826001600160a01b031663504d080b6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610140573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610167919081019061033f565b90505f5b815181101561028e575f5f838381518110610188576101886104b8565b60200260200101515f01516001600160a01b03168484815181106101ae576101ae6104b8565b6020026020010151602001516040516101c791906104cc565b5f604051808303815f865af19150503d805f8114610200576040519150601f19603f3d011682016040523d82523d5f602084013e610205565b606091505b509150915081610284577f606461c3c22ef5d2f9fa14ff2480c0ec357ce58718c1b2d6f360f603b14cb3e5848481518110610242576102426104b8565b60200260200101515f015185858151811061025f5761025f6104b8565b6020026020010151602001518360405161027b93929190610510565b60405180910390a15b505060010161016b565b5060019392505050565b6001600160a01b03811681146102ac575f5ffd5b50565b5f602082840312156102bf575f5ffd5b81356102ca81610298565b9392505050565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610308576103086102d1565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610337576103376102d1565b604052919050565b5f6020828403121561034f575f5ffd5b815167ffffffffffffffff811115610365575f5ffd5b8201601f81018413610375575f5ffd5b805167ffffffffffffffff81111561038f5761038f6102d1565b8060051b61039f6020820161030e565b918252602081840181019290810190878411156103ba575f5ffd5b6020850192505b838310156104ad57825167ffffffffffffffff8111156103df575f5ffd5b85016040818a03601f190112156103f4575f5ffd5b6103fc6102e5565b602082015161040a81610298565b8152604082015167ffffffffffffffff811115610425575f5ffd5b60208184010192505089601f83011261043c575f5ffd5b815167ffffffffffffffff811115610456576104566102d1565b610469601f8201601f191660200161030e565b8181528b602083860101111561047d575f5ffd5b8160208501602083015e5f60208383010152806020840152505080845250506020820191506020830192506103c1565b979650505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f920191825250919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b6001600160a01b03841681526060602082018190525f90610533908301856104e2565b828103604084015261054581856104e2565b969550505050505056fea2646970667358221220e7ac080d4c119b6c89eb3820eae09d11136003fbf3f28900c93905416bd49f8e64736f6c634300081b00336101e0604052348015610010575f5ffd5b5060405161177938038061177983398101604081905261002f9161024d565b81816040518060400160405280600a815260200169456d706972654261736560b01b815250604051806040016040528060018152602001603160f81b8152506100815f836101c760201b90919060201c565b610120526100908160016101c7565b61014052815160208084019190912060e052815190820120610100524660a05261011c60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c05261016082905261018081905261013c600282610292565b610160516101805190918211610173576040516365424f5b60e11b8152600481019290925260248201526044015b60405180910390fd5b5050610180516101605190808211156101a85760405163103804ad60e11b81526004810192909252602482015260440161016a565b5050506001600160a01b039485166101a052505050166101c05261045b565b5f6020835110156101e2576101db836101f9565b90506101f3565b816101ed8482610349565b5060ff90505b92915050565b5f5f829050601f81511115610223578260405163305a27a960e01b815260040161016a9190610403565b805161022e82610438565b179392505050565b6001600160a01b038116811461024a575f5ffd5b50565b5f5f5f5f60808587031215610260575f5ffd5b845161026b81610236565b602086015190945061027c81610236565b6040860151606090960151949790965092505050565b5f826102ac57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806102d957607f821691505b6020821081036102f757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561034457805f5260205f20601f840160051c810160208510156103225750805b601f840160051c820191505b81811015610341575f815560010161032e565b50505b505050565b81516001600160401b03811115610362576103626102b1565b6103768161037084546102c5565b846102fd565b6020601f8211600181146103a8575f83156103915750848201515b5f19600385901b1c1916600184901b178455610341565b5f84815260208120601f198516915b828110156103d757878501518255602094850194600190920191016103b7565b50848210156103f457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156102f7575f1960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516112666105135f395f818161012c015281816101e2015261078f01525f81816103280152818161034c01528181610373015281816106af01526107fe01525f81816101be015261074901525f81816102ee0152818161053b0152610b6201525f610c0301525f610bd201525f610ea101525f610e7901525f610dd401525f610dfe01525f610e2801526112665ff3fe608060405234801561000f575f5ffd5b50600436106100fb575f3560e01c80638652297311610093578063c9e525df11610063578063c9e525df146102e9578063d11eb2b214610310578063d15db8b414610323578063de7b5d141461034a575f5ffd5b80638652297314610247578063a32bf5971461026e578063a97f36a814610276578063b59c46fb1461027e575f5ffd5b80636c1032af116100ce5780636c1032af146101e05780636c54023e146102065780636dd7d8ea1461021957806384b0196e1461022c575f5ffd5b80630d61b519146100ff5780635db93dfa1461012757806362c69d7214610166578063693f917e146101b9575b5f5ffd5b61011261010d366004610f55565b610370565b60405190151581526020015b60405180910390f35b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161011e565b6101ab610174366004610f83565b6001600160a01b038084165f9081526002602081815260408084208785528252808420948616845293909101905220549392505050565b60405190815260200161011e565b6101ab7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000061014e565b610112610214366004610fc2565b61062f565b610112610227366004611059565b610643565b610234610669565b60405161011e97969594939291906110a9565b6101ab7fcd3782d11dc5a73768b1e0eb46a9c478abd8e0f29d28656d790ad911a4619a7481565b6101ab6106ab565b6101ab600581565b6102c461028c36600461113f565b600260209081525f9283526040808420909152908252902080546001909101546001600160a01b03811690600160a01b900460ff1683565b604080519384526001600160a01b03909216602084015215159082015260600161011e565b6101ab7f000000000000000000000000000000000000000000000000000000000000000081565b6101ab61031e366004610f55565b610743565b61014e7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000061014e565b5f7f0000000000000000000000000000000000000000000000000000000000000000806001600160a01b0381163b6103cc57604051635fa9262560e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b505f8190505f816001600160a01b031663d8e3784c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561040e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104329190611169565b90505f61043e82610743565b90508086106104605760405163117e3a7760e31b815260040160405180910390fd5b8061046c600588611180565b1015868290916104985760405163c3d7aa4f60e01b8152600481019290925260248201526044016103c3565b50506001600160a01b0384165f908152600260209081526040808320898452909152902060018101548790600160a01b900460ff16156104ee5760405163058240ed60e31b81526004016103c391815260200190565b5060018101546001600160a01b031661051a57604051630b560ca160e11b815260040160405180910390fd5b60018101546001600160a01b03165f908152600282016020526040902054807f000000000000000000000000000000000000000000000000000000000000000080821015610584576040516357d5327960e11b8152600481019290925260248201526044016103c3565b505060018201805460ff60a01b198116600160a01b1790915560405189916001600160a01b0316907f7bfd03e44f31b1867e10c41d419cd8073b4719d321ccc5c3a3c79ac2babab3c3905f90a360018201546105e8906001600160a01b031661076e565b60018301546001600160a01b031690610620576040516323653eff60e21b81526001600160a01b0390911660048201526024016103c3565b50600198975050505050505050565b5f61063a83836107fb565b90505b92915050565b604080516060810182525f8082526020820181905291810182905261063d9083906107fb565b5f6060805f5f5f606061067a610bcb565b610682610bfc565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b5f807f000000000000000000000000000000000000000000000000000000000000000090505f816001600160a01b031663d8e3784c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561070d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190611169565b905061073c81610743565b9250505090565b5f61063d7f00000000000000000000000000000000000000000000000000000000000000008361119f565b60405163c96be4cb60e01b81526001600160a01b0382811660048301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063c96be4cb906024016020604051808303815f875af11580156107d7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063d91906111be565b5f7f0000000000000000000000000000000000000000000000000000000000000000806001600160a01b0381163b61085257604051635fa9262560e01b81526001600160a01b0390911660048201526024016103c3565b505f8190505f816001600160a01b031663d8e3784c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610894573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108b89190611169565b90505f6108c482610743565b6001600160a01b0385165f90815260026020908152604080832084845290915290208054919250908311839061091057604051631d30a86560e11b81526004016103c391815260200190565b505f846001600160a01b0316633b10244b6040518163ffffffff1660e01b81526004016020604051808303815f875af115801561094f573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097391906111dd565b9050610981885160ff161590565b156109cb5733816001600160a01b03811682146109c457604051633a8db46b60e21b81526001600160a01b039283166004820152911660248201526044016103c3565b5050610a74565b5f610a2f7fcd3782d11dc5a73768b1e0eb46a9c478abd8e0f29d28656d790ad911a4619a748b604051602001610a149291909182526001600160a01b0316602082015260400190565b60405160208183030381529060405280519060200120610c29565b9050610a3c898383610c55565b33839091610a7057604051633a8db46b60e21b81526001600160a01b039283166004820152911660248201526044016103c3565b5050505b6001600160a01b0389165f9081526002830160205260408120805460019290610a9e908490611180565b909155505083825560018201546001600160a01b038a8116911614801590610aec575060018201546001600160a01b039081165f90815260028401602052604080822054928c168252902054115b15610b0f576001820180546001600160a01b0319166001600160a01b038b161790555b604051339084906001600160a01b038c16907f75b35ca960bbb2cc550471a4098b1a96255dd657fe926e331754cd7c2e4489b3905f90a46001600160a01b0389165f9081526002830160205260409020547f000000000000000000000000000000000000000000000000000000000000000090036106205760405183906001600160a01b038b16907f0df61444d0227466513d76c78610d02f944a8c799f07f549ff6d3dd692cd6a6a905f90a350600198975050505050505050565b6060610bf77f00000000000000000000000000000000000000000000000000000000000000005f610d1f565b905090565b6060610bf77f00000000000000000000000000000000000000000000000000000000000000006001610d1f565b5f61063d610c35610dc8565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f600183865f0151876020015188604001516040515f8152602001604052604051610c9d949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa158015610cbd573d5f5f3e3d5ffd5b505050602060405103519050806001600160a01b0316846001600160a01b03161484829091610d1257604051633672eb9b60e21b81526001600160a01b039283166004820152911660248201526044016103c3565b5060019695505050505050565b606060ff8314610d3957610d3283610ef1565b905061063d565b818054610d45906111f8565b80601f0160208091040260200160405190810160405280929190818152602001828054610d71906111f8565b8015610dbc5780601f10610d9357610100808354040283529160200191610dbc565b820191905f5260205f20905b815481529060010190602001808311610d9f57829003601f168201915b5050505050905061063d565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610e2057507f000000000000000000000000000000000000000000000000000000000000000046145b15610e4a57507f000000000000000000000000000000000000000000000000000000000000000090565b610bf7604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60605f610efd83610f2e565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b5f60ff8216601f81111561063d57604051632cd44ac360e21b815260040160405180910390fd5b5f60208284031215610f65575f5ffd5b5035919050565b6001600160a01b0381168114610f80575f5ffd5b50565b5f5f5f60608486031215610f95575f5ffd5b8335610fa081610f6c565b9250602084013591506040840135610fb781610f6c565b809150509250925092565b5f5f8284036080811215610fd4575f5ffd5b8335610fdf81610f6c565b92506060601f1982011215610ff2575f5ffd5b506040516060810181811067ffffffffffffffff8211171561102257634e487b7160e01b5f52604160045260245ffd5b604052602084013560ff81168114611038575f5ffd5b81526040848101356020830152606090940135938101939093525092909150565b5f60208284031215611069575f5ffd5b813561107481610f6c565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60ff60f81b8816815260e060208201525f6110c760e083018961107b565b82810360408401526110d9818961107b565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561112e578351835260209384019390920191600101611110565b50909b9a5050505050505050505050565b5f5f60408385031215611150575f5ffd5b823561115b81610f6c565b946020939093013593505050565b5f60208284031215611179575f5ffd5b5051919050565b8082018082111561063d57634e487b7160e01b5f52601160045260245ffd5b5f826111b957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156111ce575f5ffd5b81518015158114611074575f5ffd5b5f602082840312156111ed575f5ffd5b815161107481610f6c565b600181811c9082168061120c57607f821691505b60208210810361122a57634e487b7160e01b5f52602260045260245ffd5b5091905056fea264697066735822122034a8c24cd29a67cf11e278ab183137ac221c426a698bb62ce1da659f7ea9bdef64736f6c634300081b0033610140604052348015610010575f5ffd5b50604051611c36380380611c3683398101604081905261002f91610470565b6001600160a01b03841660805260a082905260e08190526100518160026105ac565b61010052604080516060810182525f80825260208201529081016100766001806105be565b6001600160401b03908116909152815160028054602085015160409095015160809390931c6001600160c01b031990911617600160801b94841694909402939093176001600160c01b0316600160c01b91909216021790556100d85f82610184565b6101135f60e0516101005160015f6001806100f391906105be565b6001600160401b0316815260208101919091526040015f2092919061022d565b610120818152505083833060a05160405161012d9061044c565b6001600160a01b0394851681529284166020840152921660408201526060810191909152608001604051809103905ff08015801561016d573d5f5f3e3d5ffd5b506001600160a01b031660c0525061068592505050565b5f8080526020839052604081205560015b81811161022857610208835f6101ac6001856105dd565b81526020019081526020015f2054845f015f6001856101cb91906105dd565b81526020019081526020015f20546040516020016101f3929190918252602082015260400190565b60408051601f19818403018152919052610386565b5f8281526020859052604090205580610220816105f0565b915050610195565b505050565b83545f9080820361024d5750505f8281526020849052604090205461037e565b82810361026b5750505f82815260018501602052604090205461037e565b5f6102776001836105dd565b90505f61028382610421565b5f81815260018a01602052604090205490915082821c825b8881101561037557600180831614801561033a575f82815260018d0160205260409020548490036103075760405162461bcd60e51b81526020600482015260126024820152714d697374616b65732077657265206d61646560701b604482015260640160405180910390fd5b5f82815260018d01602090815260409182902054825191820152908101859052610333906060016101f3565b9350610368565b5f82815260208c8152604091829020549151610365926101f392889201918252602082015260400190565b93505b50600191821c910161029b565b50909450505050505b949350505050565b6040805160018082528183019092525f91602082018180368337019050506002836040516103b4919061061f565b602060405180830381855afa1580156103cf573d5f5f3e3d5ffd5b5050506040513d601f19601f820116820180604052508101906103f2919061062a565b604051602001610403929190610641565b60405160208183030381529060405261041b9061065f565b92915050565b5f80825b80600116600103610445578161043a816105f0565b92505060011c610425565b5092915050565b6107f88061143e83390190565b6001600160a01b038116811461046d575f5ffd5b50565b5f5f5f5f60808587031215610483575f5ffd5b845161048e81610459565b602086015190945061049f81610459565b6040860151606090960151949790965092505050565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115610504578085048111156104e8576104e86104b5565b60018416156104f657908102905b60019390931c9280026104cd565b935093915050565b5f8261051a5750600161041b565b8161052657505f61041b565b816001811461053c576002811461054657610562565b600191505061041b565b60ff841115610557576105576104b5565b50506001821b61041b565b5060208310610133831016604e8410600b8410161715610585575081810a61041b565b6105915f1984846104c9565b805f19048211156105a4576105a46104b5565b029392505050565b5f6105b7838361050c565b9392505050565b6001600160401b03818116838216019081111561041b5761041b6104b5565b8181038181111561041b5761041b6104b5565b5f60018201610601576106016104b5565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f6105b78284610608565b5f6020828403121561063a575f5ffd5b5051919050565b5f61064c8285610608565b60ff199390931683525050601f01919050565b8051602080830151919081101561067f575f198160200360031b1b821691505b50919050565b60805160a05160c05160e0516101005161012051610d3a6107045f395f61072301525f8181610455015281816104a70152818161077f015261082f01525f818161075e015261080e01525f81816101800152818161022801526104fc01525f81816102a3015261032001525f818161026901526106b00152610d3a5ff3fe608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c80637a5080221161006e5780637a508022146102075780638ccf6b95146102265780639500ac301461024c5780639611c5c2146102645780639b24b3b01461028b578063ffa1ad741461029e575f5ffd5b80631865c57d146100aa5780631f6d510b146101535780632fb131c81461017b578063483f31ab146101ba5780635fd3c809146101db575b5f5ffd5b610111604080516060810182525f808252602082018190529181019190915250604080516060810182526002546001600160801b0319608082901b1682526001600160401b03600160801b820481166020840152600160c01b909104169181019190915290565b6040805182516001600160801b03191681526020808401516001600160401b039081169183019190915292820151909216908201526060015b60405180910390f35b610166610161366004610b71565b6102c5565b6040805192835260208301919091520161014a565b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014a565b6101cd6101c8366004610be8565b6106a4565b60405190815260200161014a565b600254600160c01b90046001600160401b03165b6040516001600160401b03909116815260200161014a565b6101cd610215366004610be8565b60016020525f908152604090205481565b7f00000000000000000000000000000000000000000000000000000000000000006101a2565b600254600160801b90046001600160401b03166101ef565b6101a27f000000000000000000000000000000000000000000000000000000000000000081565b6101cd610299366004610be8565b6107fa565b6101cd7f000000000000000000000000000000000000000000000000000000000000000081565b82515f9081907f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000811115610318576040516353bb503760e11b815260040161030f91815260200190565b60405180910390fd5b5060208501517f000000000000000000000000000000000000000000000000000000000000000081811461036857604051632e26721160e21b81526004810192909252602482015260440161030f565b508490507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008111156103b0576040516311d1480560e21b815260040161030f91815260200190565b50827f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000008111156103f657604051633b379f8b60e21b815260040161030f91815260200190565b50604080516060810182526002546001600160801b0319608082901b168083526001600160401b03600160801b830481166020808601829052600160c01b9094049091168486018190525f8181526001909452949092208054939491937f0000000000000000000000000000000000000000000000000000000000000000036104a157610484600183610c13565b6001600160401b0381165f90815260016020526040902090925090505b80545f907f00000000000000000000000000000000000000000000000000000000000000006104da60016001600160401b038716610c32565b6104e49190610c45565b6104ee9190610c5c565b90505f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610527573361052a565b60055b6040805160e0810182526001600160a01b03831660a082019081524660c08301528152602081018f90529081018d9052606081018c9052608081018490529091505f61057582610859565b905061058185826108db565b506040516001600160801b031989166020820152603081018290525f9060500160408051601f198184030181528282528051602091820120606084019092526001600160801b03198216835290925081016105dd8a6001610c13565b6001600160401b0390811682528981166020928301819052835160028054948601516040968701518516600160c01b026001600160c01b0391909516600160801b026001600160c01b031990961660809390931c9290921794909417169190911790915590518391907fe3afb584bcff3adb9d452d2e1ccbcd4aee164ae2a8cdab637aecf866a53fbb779061068890899086909182526001600160801b031916602082015260400190565b60405180910390a3509d929c50919a5050505050505050505050565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106ee5760405163e5336a6b60e01b815260040160405180910390fd5b600254600160c01b90046001600160401b03168083106107215760405163c490199960e01b815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000060018411156107a6575f8481526001602052604081206107a3917f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061095c565b90505b6001600160401b0382166107bb856001610c5c565b036107f3576107cb826001610c13565b600280546001600160401b0392909216600160c01b026001600160c01b039092169190911790555b9392505050565b5f81815260016020526040812061085390827f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061095c565b92915050565b5f610853825f015183602001518460400151856060015186608001516040516020016108c795949392919085516001600160a01b03168152602095860151868201528451604082015293909401516060840152608083019190915260a082015260c081019190915260e00190565b604051602081830303815290604052610ab1565b81545f90816108e982610b46565b9050835f5b8281101561092c575f81815260018801602090815260409182902054825191820152908101839052610922906060016108c7565b91506001016108ee565b505f8281526001870160205260408120829055865490879061094d83610c6f565b90915550929695505050505050565b83545f9080820361097c5750505f82815260208490526040902054610aa9565b82810361099a5750505f828152600185016020526040902054610aa9565b5f6109a6600183610c32565b90505f6109b282610b46565b5f81815260018a01602052604090205490915082821c825b88811015610aa0576001808316148015610a65575f82815260018d016020526040902054849003610a325760405162461bcd60e51b81526020600482015260126024820152714d697374616b65732077657265206d61646560701b604482015260640161030f565b5f82815260018d01602090815260409182902054825191820152908101859052610a5e906060016108c7565b9350610a93565b5f82815260208c8152604091829020549151610a90926108c792889201918252602082015260400190565b93505b50600191821c91016109ca565b50909450505050505b949350505050565b6040805160018082528183019092525f9160208201818036833701905050600283604051610adf9190610c9e565b602060405180830381855afa158015610afa573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b1d9190610ca9565b604051602001610b2e929190610cc0565b60405160208183030381529060405261085390610cde565b5f80825b80600116600103610b6a5781610b5f81610c6f565b92505060011c610b4a565b5092915050565b5f5f5f8385036080811215610b84575f5ffd5b6040811215610b91575f5ffd5b50604051604081018181106001600160401b0382111715610bc057634e487b7160e01b5f52604160045260245ffd5b6040908152853582526020808701359083015290969085013595506060909401359392505050565b5f60208284031215610bf8575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03818116838216019081111561085357610853610bff565b8181038181111561085357610853610bff565b808202811582820484141761085357610853610bff565b8082018082111561085357610853610bff565b5f60018201610c8057610c80610bff565b5060010190565b5f81518060208401855e5f93019283525090919050565b5f6107f38284610c87565b5f60208284031215610cb9575f5ffd5b5051919050565b5f610ccb8285610c87565b60ff199390931683525050601f01919050565b80516020808301519190811015610cfe575f198160200360031b1b821691505b5091905056fea2646970667358221220680abed5fbbd6a833905e6be11bfceef8f82e9eefef92f84c0e5b35b117d572164736f6c634300081b0033610100604052348015610010575f5ffd5b506040516107f83803806107f883398101604081905261002f91610067565b6001600160a01b0393841660805290831660a052911660c05260e0526100b7565b6001600160a01b0381168114610064575f5ffd5b50565b5f5f5f5f6080858703121561007a575f5ffd5b845161008581610050565b602086015190945061009681610050565b60408601519093506100a781610050565b6060959095015193969295505050565b60805160a05160c05160e0516106ec61010c5f395f8181610168015261019901525f818161014101528181610218015261039601525f818161011a015261027a01525f818160db015261034b01526106ec5ff3fe608060405234801561000f575f5ffd5b506004361061007a575f3560e01c80639611c5c2116100585780639611c5c2146100d6578063b701069714610115578063c5d664c61461013c578063ffa1ad7414610163575f5ffd5b8063284b5dc61461007e5780632dc81c62146100ab57806348fef595146100c1575b5f5ffd5b61009161008c3660046105b2565b61018a565b604080519283526020830191909152015b60405180910390f35b6100b3600581565b6040519081526020016100a2565b6100d46100cf3660046105db565b610340565b005b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a2565b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b6100fd7f000000000000000000000000000000000000000000000000000000000000000081565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b604080518082018252600581527f00000000000000000000000000000000000000000000000000000000000000006020820152905160248101859052604481018490525f91829182906102099060640160408051601f198184030181529190526020810180516001600160e01b0316630c7e892d60e31b179052610404565b90506102406001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308961049f565b604051631f6d510b60e01b8152825160048201526020830151602482015260448101829052606481018690525f9081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631f6d510b9060840160408051808303815f875af11580156102bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e39190610610565b604080518b8152602081018b905290810183905260608101829052919350915089907fcb43dda0de11e57048e9d074ae7474446335afc906a0e5789d624fa5422629e39060800160405180910390a2909890975095505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610389576040516333f1b48f60e11b815260040160405180910390fd5b6103bd6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361050c565b816001600160a01b03167f63be20cc905d5ba0cf65db405c4999f99f2575e521875f13a8009d6eed7a09d9826040516103f891815260200190565b60405180910390a25050565b6040805160018082528183019092525f91602082018180368337019050506002836040516104329190610649565b602060405180830381855afa15801561044d573d5f5f3e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610470919061065b565b604051602001610481929190610672565b60405160208183030381529060405261049990610690565b92915050565b6040516001600160a01b0384811660248301528381166044830152606482018390526105069186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610542565b50505050565b6040516001600160a01b0383811660248301526044820183905261053d91859182169063a9059cbb906064016104d4565b505050565b5f5f60205f8451602086015f885af180610561576040513d5f823e3d81fd5b50505f513d91508115610578578060011415610585565b6001600160a01b0384163b155b1561050657604051635274afe760e01b81526001600160a01b038516600482015260240160405180910390fd5b5f5f5f606084860312156105c4575f5ffd5b505081359360208301359350604090920135919050565b5f5f604083850312156105ec575f5ffd5b82356001600160a01b0381168114610602575f5ffd5b946020939093013593505050565b5f5f60408385031215610621575f5ffd5b505080516020909101519092909150565b5f81518060208401855e5f93019283525090919050565b5f6106548284610632565b9392505050565b5f6020828403121561066b575f5ffd5b5051919050565b5f61067d8285610632565b60ff199390931683525050601f01919050565b805160208083015191908110156106b0575f198160200360031b1b821691505b5091905056fea264697066735822122006c5d9f61536d4b2d835447c3f5027786fd33e420b1e94e61305f83c7d804f2c64736f6c634300081b003360c060405234801561000f575f5ffd5b50604051610ae7380380610ae783398101604081905261002e91610044565b6001600160a01b0390911660805260a05261007b565b5f5f60408385031215610055575f5ffd5b82516001600160a01b038116811461006b575f5ffd5b6020939093015192949293505050565b60805160a051610a306100b75f395f818161013c015261036a01525f818160fd015281816101700152818161022501526102b60152610a305ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c80632249f653146100645780633d96c2c9146100915780637fb34967146100a657806384f15db2146100b95780639611c5c2146100f8578063ffa1ad7414610137575b5f5ffd5b610077610072366004610743565b61016c565b604080519283526020830191909152015b60405180910390f35b6100a461009f36600461075a565b61021a565b005b6100a46100b4366004610783565b6102b4565b6100e86100c736600461081c565b5f918252602082815260408084209284526002909201905290205460ff1690565b6040519015158152602001610088565b61011f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610088565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610088565b5f5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b67d057b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ee919061083c565b8311156101ff57505f928392509050565b50505f90815260208190526040902080546001909101549091565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146102635760405163164a486160e11b815260040160405180910390fd5b5f83815260208181526040918290208481556001018390559051828152839185917fd3fab397eb3e47fb43090430543ca9623e09aeddf27bfde1bf7bdca871ee9ebc910160405180910390a3505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663b67d057b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610310573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610334919061083c565b841115849061036257604051630e194a6d60e01b815260040161035991815260200190565b60405180910390fd5b5060208501357f00000000000000000000000000000000000000000000000000000000000000008181146103b25760405163deae896760e01b815260048101929092526024820152604401610359565b506103c59050606086016040870161086e565b6001600160a01b031633146103e0606087016040880161086e565b339091610413576040516357aad58160e01b81526001600160a01b03928316600482015291166024820152604401610359565b505046606086013514610439576040516315dfb1f160e21b815260040160405180910390fd5b5f8481526020819052604090208054858161046a57604051635228479160e11b815260040161035991815260200190565b505f8581526002830160205260409020548690869060ff16156104a957604051633f5c70b560e21b815260048101929092526024820152604401610359565b505060018201548084808211156104dc57604051631206f36760e21b815260048101929092526024820152604401610359565b505f90506104f76104f2368b90038b018b6108f2565b61056b565b90506105068686838a876105cd565b5f87815260028501602052604090819020805460ff1916600117905551819084908a907f34bc3301c4660a5642d2246e175e7fea498c94258d39dcaa555a52464dbb083d90610558908c815260200190565b60405180910390a4505050505050505050565b80516020808301516040808501518151855181860152948401519185019190915281516001600160a01b03166060850152910151608083015260a08201525f906105c79060c0015b6040516020818303038152906040526106ae565b92915050565b82825f5b8681101561066657600180831614806106205761061b848a8a858181106105fa576105fa610980565b905060200201356040516020016105b3929190918252602082015260400190565b610657565b61065789898481811061063557610635610980565b90506020020135856040516020016105b3929190918252602082015260400190565b935050600191821c91016105d1565b50828286868284146106a157604051635f216bf160e01b81526004810194909452602484019290925260448301526064820152608401610359565b5050505050505050505050565b6040805160018082528183019092525f91602082018180368337019050506002836040516106dc91906109ab565b602060405180830381855afa1580156106f7573d5f5f3e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061071a919061083c565b60405160200161072b9291906109b6565b6040516020818303038152906040526105c7906109d4565b5f60208284031215610753575f5ffd5b5035919050565b5f5f5f6060848603121561076c575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f5f5f858703610100811215610799575f5ffd5b60a08112156107a6575f5ffd5b5085945060a0850135935060c0850135925060e085013567ffffffffffffffff8111156107d1575f5ffd5b8601601f810188136107e1575f5ffd5b803567ffffffffffffffff8111156107f7575f5ffd5b8860208260051b840101111561080b575f5ffd5b959894975092955050506020019190565b5f5f6040838503121561082d575f5ffd5b50508035926020909101359150565b5f6020828403121561084c575f5ffd5b5051919050565b80356001600160a01b0381168114610869575f5ffd5b919050565b5f6020828403121561087e575f5ffd5b61088782610853565b9392505050565b6040516060810167ffffffffffffffff811182821017156108bd57634e487b7160e01b5f52604160045260245ffd5b60405290565b6040805190810167ffffffffffffffff811182821017156108bd57634e487b7160e01b5f52604160045260245ffd5b5f81830360a081128015610904575f5ffd5b5061090d61088e565b604082121561091a575f5ffd5b6109226108c3565b843581526020808601359082015281526040603f1983011215610943575f5ffd5b61094b6108c3565b915061095960408501610853565b82526060840135602080840191909152810191909152608090920135604083015250919050565b634e487b7160e01b5f52603260045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f6108878284610994565b5f6109c18285610994565b60ff199390931683525050601f01919050565b805160208083015191908110156109f4575f198160200360031b1b821691505b5091905056fea264697066735822122071487a32ac43313ad019293b440b3c97716bf4a5b1f03348ae2cda7d4217d77c64736f6c634300081b0033";
4
4
  /**
5
5
  * Rollup link references.
6
6
  */ export const RollupLinkReferences = {
7
7
  "src/core/libraries/rollup/ExtRollupLib.sol": {
8
8
  "ExtRollupLib": [
9
9
  {
10
- "start": 680,
10
+ "start": 681,
11
11
  "length": 20
12
12
  },
13
13
  {
14
- "start": 7510,
14
+ "start": 7403,
15
15
  "length": 20
16
16
  },
17
17
  {
18
- "start": 7838,
18
+ "start": 7731,
19
19
  "length": 20
20
20
  },
21
21
  {
22
- "start": 8049,
22
+ "start": 7942,
23
23
  "length": 20
24
24
  },
25
25
  {
26
- "start": 9915,
26
+ "start": 9757,
27
27
  "length": 20
28
28
  },
29
29
  {
30
- "start": 10083,
30
+ "start": 9925,
31
31
  "length": 20
32
32
  },
33
33
  {
34
- "start": 10370,
34
+ "start": 10212,
35
35
  "length": 20
36
36
  },
37
37
  {
38
- "start": 10500,
38
+ "start": 10342,
39
39
  "length": 20
40
40
  },
41
41
  {
42
- "start": 10612,
42
+ "start": 10454,
43
43
  "length": 20
44
44
  },
45
45
  {
46
- "start": 10826,
46
+ "start": 10668,
47
47
  "length": 20
48
48
  },
49
49
  {
50
- "start": 11100,
50
+ "start": 10942,
51
51
  "length": 20
52
52
  },
53
53
  {
54
- "start": 11316,
54
+ "start": 11220,
55
55
  "length": 20
56
56
  },
57
57
  {
58
- "start": 11423,
58
+ "start": 11327,
59
59
  "length": 20
60
60
  }
61
61
  ]
@@ -23,21 +23,21 @@ export declare const RollupStorage: readonly [{
23
23
  readonly slot: "2";
24
24
  readonly type: "t_address";
25
25
  }, {
26
- readonly astId: 14606;
26
+ readonly astId: 14607;
27
27
  readonly contract: "src/core/Rollup.sol:Rollup";
28
28
  readonly label: "gap";
29
29
  readonly offset: 0;
30
30
  readonly slot: "3";
31
31
  readonly type: "t_uint256";
32
32
  }, {
33
- readonly astId: 14609;
33
+ readonly astId: 14610;
34
34
  readonly contract: "src/core/Rollup.sol:Rollup";
35
35
  readonly label: "checkBlob";
36
36
  readonly offset: 0;
37
37
  readonly slot: "4";
38
38
  readonly type: "t_bool";
39
39
  }, {
40
- readonly astId: 14612;
40
+ readonly astId: 14613;
41
41
  readonly contract: "src/core/Rollup.sol:Rollup";
42
42
  readonly label: "isRewardsClaimable";
43
43
  readonly offset: 1;
@@ -26,7 +26,7 @@
26
26
  "type": "t_address"
27
27
  },
28
28
  {
29
- "astId": 14606,
29
+ "astId": 14607,
30
30
  "contract": "src/core/Rollup.sol:Rollup",
31
31
  "label": "gap",
32
32
  "offset": 0,
@@ -34,7 +34,7 @@
34
34
  "type": "t_uint256"
35
35
  },
36
36
  {
37
- "astId": 14609,
37
+ "astId": 14610,
38
38
  "contract": "src/core/Rollup.sol:Rollup",
39
39
  "label": "checkBlob",
40
40
  "offset": 0,
@@ -42,7 +42,7 @@
42
42
  "type": "t_bool"
43
43
  },
44
44
  {
45
- "astId": 14612,
45
+ "astId": 14613,
46
46
  "contract": "src/core/Rollup.sol:Rollup",
47
47
  "label": "isRewardsClaimable",
48
48
  "offset": 1,
@@ -741,6 +741,18 @@ export declare const SlashFactoryAbi: readonly [{
741
741
  readonly type: "uint256";
742
742
  readonly internalType: "uint256";
743
743
  }];
744
+ }, {
745
+ readonly type: "error";
746
+ readonly name: "Rollup__InvalidManaTarget";
747
+ readonly inputs: readonly [{
748
+ readonly name: "minimum";
749
+ readonly type: "uint256";
750
+ readonly internalType: "uint256";
751
+ }, {
752
+ readonly name: "provided";
753
+ readonly type: "uint256";
754
+ readonly internalType: "uint256";
755
+ }];
744
756
  }, {
745
757
  readonly type: "error";
746
758
  readonly name: "Rollup__InvalidPreviousArchive";
@@ -1046,6 +1058,14 @@ export declare const SlashFactoryAbi: readonly [{
1046
1058
  readonly type: "error";
1047
1059
  readonly name: "Staking__GovernanceAlreadySet";
1048
1060
  readonly inputs: readonly [];
1061
+ }, {
1062
+ readonly type: "error";
1063
+ readonly name: "Staking__IncorrectGovProposer";
1064
+ readonly inputs: readonly [{
1065
+ readonly name: "";
1066
+ readonly type: "uint256";
1067
+ readonly internalType: "uint256";
1068
+ }];
1049
1069
  }, {
1050
1070
  readonly type: "error";
1051
1071
  readonly name: "Staking__InstanceDoesNotExist";
@@ -1137,6 +1157,14 @@ export declare const SlashFactoryAbi: readonly [{
1137
1157
  readonly name: "";
1138
1158
  readonly type: "uint256";
1139
1159
  readonly internalType: "uint256";
1160
+ }, {
1161
+ readonly name: "";
1162
+ readonly type: "address";
1163
+ readonly internalType: "address";
1164
+ }, {
1165
+ readonly name: "";
1166
+ readonly type: "address";
1167
+ readonly internalType: "address";
1140
1168
  }];
1141
1169
  }, {
1142
1170
  readonly type: "error";
@@ -1 +1 @@
1
- {"version":3,"file":"SlashFactoryAbi.d.ts","sourceRoot":"","sources":["../src/SlashFactoryAbi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAivDlB,CAAC"}
1
+ {"version":3,"file":"SlashFactoryAbi.d.ts","sourceRoot":"","sources":["../src/SlashFactoryAbi.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsxDlB,CAAC"}