| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 35401928 | 268 days ago | Contract Creation | 0 ETH |
Cross-Chain Transactions
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IJBDirectory","name":"directory","type":"address"},{"internalType":"contract IJBPermissions","name":"permissions","type":"address"},{"internalType":"contract IJBPrices","name":"prices","type":"address"},{"internalType":"contract IJBProjects","name":"projects","type":"address"},{"internalType":"contract IJBTokens","name":"tokens","type":"address"},{"internalType":"contract IWETH9","name":"weth","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"trustedForwarder","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"JBBuybackHook_CallerNotPool","type":"error"},{"inputs":[{"internalType":"uint256","name":"swapAmount","type":"uint256"},{"internalType":"uint256","name":"totalPaid","type":"uint256"}],"name":"JBBuybackHook_InsufficientPayAmount","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"JBBuybackHook_InvalidTwapWindow","type":"error"},{"inputs":[{"internalType":"contract IUniswapV3Pool","name":"pool","type":"address"}],"name":"JBBuybackHook_PoolAlreadySet","type":"error"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minimum","type":"uint256"}],"name":"JBBuybackHook_SpecifiedSlippageExceeded","type":"error"},{"inputs":[{"internalType":"address","name":"terminalToken","type":"address"},{"internalType":"address","name":"projectToken","type":"address"}],"name":"JBBuybackHook_TerminalTokenIsProjectToken","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"JBBuybackHook_Unauthorized","type":"error"},{"inputs":[],"name":"JBBuybackHook_ZeroProjectToken","type":"error"},{"inputs":[],"name":"JBBuybackHook_ZeroTerminalToken","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"uint256","name":"permissionId","type":"uint256"}],"name":"JBPermissioned_Unauthorized","type":"error"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"},{"internalType":"uint256","name":"y","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"PRBMath_MulDiv_Overflow","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"inputs":[],"name":"T","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"projectId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"leftoverAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenCount","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"projectId","type":"uint256"},{"indexed":true,"internalType":"address","name":"terminalToken","type":"address"},{"indexed":false,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"PoolAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"projectId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountToSwapWith","type":"uint256"},{"indexed":false,"internalType":"contract IUniswapV3Pool","name":"pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceived","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"projectId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"oldWindow","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newWindow","type":"uint256"},{"indexed":false,"internalType":"address","name":"caller","type":"address"}],"name":"TwapWindowChanged","type":"event"},{"inputs":[],"name":"DIRECTORY","outputs":[{"internalType":"contract IJBDirectory","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_TWAP_WINDOW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TWAP_WINDOW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMISSIONS","outputs":[{"internalType":"contract IJBPermissions","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICES","outputs":[{"internalType":"contract IJBPrices","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROJECTS","outputs":[{"internalType":"contract IJBProjects","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKENS","outputs":[{"internalType":"contract IJBTokens","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TWAP_SLIPPAGE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNCERTAIN_TWAP_SLIPPAGE_TOLERANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UNISWAP_V3_FACTORY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IWETH9","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"payer","type":"address"},{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"uint256","name":"rulesetId","type":"uint256"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint32","name":"currency","type":"uint32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct JBTokenAmount","name":"amount","type":"tuple"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint32","name":"currency","type":"uint32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct JBTokenAmount","name":"forwardedAmount","type":"tuple"},{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"uint256","name":"newlyIssuedTokenCount","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"bytes","name":"hookMetadata","type":"bytes"},{"internalType":"bytes","name":"payerMetadata","type":"bytes"}],"internalType":"struct JBAfterPayRecordedContext","name":"context","type":"tuple"}],"name":"afterPayRecordedWith","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"terminal","type":"address"},{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"uint256","name":"rulesetId","type":"uint256"},{"internalType":"uint256","name":"cashOutCount","type":"uint256"},{"internalType":"uint256","name":"totalSupply","type":"uint256"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint32","name":"currency","type":"uint32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct JBTokenAmount","name":"surplus","type":"tuple"},{"internalType":"bool","name":"useTotalSurplus","type":"bool"},{"internalType":"uint256","name":"cashOutTaxRate","type":"uint256"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"internalType":"struct JBBeforeCashOutRecordedContext","name":"context","type":"tuple"}],"name":"beforeCashOutRecordedWith","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"contract IJBCashOutHook","name":"hook","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"internalType":"struct JBCashOutHookSpecification[]","name":"hookSpecifications","type":"tuple[]"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"terminal","type":"address"},{"internalType":"address","name":"payer","type":"address"},{"components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint32","name":"currency","type":"uint32"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct JBTokenAmount","name":"amount","type":"tuple"},{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"uint256","name":"rulesetId","type":"uint256"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"weight","type":"uint256"},{"internalType":"uint256","name":"reservedPercent","type":"uint256"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"internalType":"struct JBBeforePayRecordedContext","name":"context","type":"tuple"}],"name":"beforePayRecordedWith","outputs":[{"internalType":"uint256","name":"weight","type":"uint256"},{"components":[{"internalType":"contract IJBPayHook","name":"hook","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"internalType":"struct JBPayHookSpecification[]","name":"hookSpecifications","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"components":[{"internalType":"uint48","name":"cycleNumber","type":"uint48"},{"internalType":"uint48","name":"id","type":"uint48"},{"internalType":"uint48","name":"basedOnId","type":"uint48"},{"internalType":"uint48","name":"start","type":"uint48"},{"internalType":"uint32","name":"duration","type":"uint32"},{"internalType":"uint112","name":"weight","type":"uint112"},{"internalType":"uint32","name":"weightCutPercent","type":"uint32"},{"internalType":"contract IJBRulesetApprovalHook","name":"approvalHook","type":"address"},{"internalType":"uint256","name":"metadata","type":"uint256"}],"internalType":"struct JBRuleset","name":"","type":"tuple"},{"internalType":"address","name":"","type":"address"}],"name":"hasMintPermissionFor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"address","name":"terminalToken","type":"address"}],"name":"poolOf","outputs":[{"internalType":"contract IUniswapV3Pool","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"projectId","type":"uint256"}],"name":"projectTokenOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint256","name":"twapWindow","type":"uint256"},{"internalType":"address","name":"terminalToken","type":"address"}],"name":"setPoolFor","outputs":[{"internalType":"contract IUniswapV3Pool","name":"newPool","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"projectId","type":"uint256"},{"internalType":"uint256","name":"newWindow","type":"uint256"}],"name":"setTwapWindowOf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"trustedForwarder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"projectId","type":"uint256"}],"name":"twapWindowOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
61018060405234801562000011575f80fd5b5060405162004e0a38038062004e0a83398101604081905262000034916200008b565b6001600160a01b03968716608052861660a05295851660c052908416610120529083166101005290821660e05291811661014052166101605262000147565b6001600160a01b038116811462000088575f80fd5b50565b5f805f805f805f80610100898b031215620000a4575f80fd5b8851620000b18162000073565b60208a0151909850620000c48162000073565b60408a0151909750620000d78162000073565b60608a0151909650620000ea8162000073565b60808a0151909550620000fd8162000073565b60a08a0151909450620001108162000073565b60c08a0151909350620001238162000073565b60e08a0151909250620001368162000073565b809150509295985092959890939650565b60805160a05160c05160e05161010051610120516101405161016051614bf7620002135f395f81816104be0152818161146a0152818161197e01528181611cc701528181611da40152611f2901525f818161054f01526119be01525f818161020301526117ed01525f81816102cf01528181610ed9015261160c01525f818161025b01528181610af001526112db01525f81816104200152818161079a015261117c01525f8181610357015281816103a20152612b5401525f818161051c01526124510152614bf75ff3fe608060405260043610610183575f3560e01c806388bc2ef3116100d1578063db312fae1161007c578063fa3baadc11610057578063fa3baadc14610571578063fa461e3314610586578063fb82b1b0146105a5575f80fd5b8063db312fae146104f6578063f434c9141461050b578063f73e5aab1461053e575f80fd5b806399f6d77f116100ac57806399f6d77f1461048e578063ad5c4648146104ad578063b88a92b4146104e0575f80fd5b806388bc2ef31461040f5780638cc35846146104425780639098afeb1461046f575f80fd5b8063293c499911610131578063572b6c051161010c578063572b6c051461033b5780637da0a87714610394578063889eedb4146103c6575f80fd5b8063293c4999146102be57806335d32898146102f15780633717fba714610310575f80fd5b80631d831d5c116101615780631d831d5c146101f25780631eabcd341461024a57806327e514111461027d575f80fd5b806301ffc9a7146101875780631337f986146101bb5780631a65893b146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004613925565b6105e6565b60405190151581526020015b60405180910390f35b6101ce6101c9366004613964565b610762565b005b3480156101db575f80fd5b506101e4607881565b6040519081526020016101b2565b3480156101fd575f80fd5b506102257f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b348015610255575f80fd5b506102257f000000000000000000000000000000000000000000000000000000000000000081565b348015610288575f80fd5b5061022561029736600461399c565b60016020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102c9575f80fd5b506102257f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fc575f80fd5b506101ce61030b3660046139b3565b610ea6565b34801561031b575f80fd5b506101e461032a36600461399c565b60026020525f908152604090205481565b348015610346575f80fd5b506101a6610355366004613a07565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811691161490565b34801561039f575f80fd5b507f0000000000000000000000000000000000000000000000000000000000000000610225565b3480156103d1575f80fd5b506102256103e0366004613a22565b5f60208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041a575f80fd5b506102257f000000000000000000000000000000000000000000000000000000000000000081565b34801561044d575f80fd5b5061046161045c366004613a50565b611032565b6040516101b2929190613ae9565b34801561047a575f80fd5b50610225610489366004613ba3565b6115c2565b348015610499575f80fd5b506101a66104a8366004613d1b565b611c83565b3480156104b8575f80fd5b506102257f000000000000000000000000000000000000000000000000000000000000000081565b3480156104eb575f80fd5b506101e46202a30081565b348015610501575f80fd5b506101e461271081565b348015610516575f80fd5b506102257f000000000000000000000000000000000000000000000000000000000000000081565b348015610549575f80fd5b506102257f000000000000000000000000000000000000000000000000000000000000000081565b34801561057c575f80fd5b506101e461041a81565b348015610591575f80fd5b506101ce6105a0366004613e15565b611c8c565b3480156105b0575f80fd5b506105d66105bf366004613e8e565b6101608101359160808201359160a0013590606090565b6040516101b29493929190613ec6565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167feeb73e8900000000000000000000000000000000000000000000000000000000148061067857507fffffffff0000000000000000000000000000000000000000000000000000000082167f1337f98600000000000000000000000000000000000000000000000000000000145b806106c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f4608b06d00000000000000000000000000000000000000000000000000000000145b8061071057507fffffffff0000000000000000000000000000000000000000000000000000000082167ff434c91400000000000000000000000000000000000000000000000000000000145b8061075c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6040517f6e49181f000000000000000000000000000000000000000000000000000000008152602082013560048201523360248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636e49181f90604401602060405180830381865afa1580156107f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108189190613fa7565b610855576040517f4758af1b0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b5f8080806108676101c0860186613fc2565b8101906108749190614023565b9296509094509250905061eeee610892610100870160e08801613a07565b73ffffffffffffffffffffffffffffffffffffffff16146108e7576108e733306101408801356108c96101008a0160e08b01613a07565b73ffffffffffffffffffffffffffffffffffffffff16929190611e4b565b5f6108f3868684611eda565b905082811015610939576040517fe2d708a9000000000000000000000000000000000000000000000000000000008152600481018290526024810184905260440161084c565b5f61eeee61094e610100890160e08a01613a07565b73ffffffffffffffffffffffffffffffffffffffff1614610a0d5761097a610100880160e08901613a07565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156109e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a08919061405f565b610a0f565b475b6040517f41929626000000000000000000000000000000000000000000000000000000008152602089013560048201529091505f9073ffffffffffffffffffffffffffffffffffffffff85169063419296269060240161038060405180830381865afa158015610a81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa5919061421c565b5090505f610ab882610100015160241c90565b63ffffffff16610ace60c08b0160a08c016142f0565b63ffffffff1614610be05773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016633be273fa60208b0135610b2a60c08d0160a08e016142f0565b61010086015160241c8d6060016020016020810190610b499190614319565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015610bb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdb919061405f565b610bfb565b610bf060a08a0160808b01614319565b610bfb90600a61447f565b90505f8315610d9057610c14848b6101600135846121c8565b905061eeee610c2a6101008c0160e08d01613a07565b73ffffffffffffffffffffffffffffffffffffffff1614610c7857610c783385610c5b6101008e0160e08f01613a07565b73ffffffffffffffffffffffffffffffffffffffff1691906122cf565b5f61eeee610c8d6101008d0160e08e01613a07565b73ffffffffffffffffffffffffffffffffffffffff1614610cae575f610cb0565b845b60408051878152602080820186905233828401529151929350908d0135917faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e5169181900360600190a23373ffffffffffffffffffffffffffffffffffffffff16639e6eec05828d602001358e60e0015f016020810190610d2f9190613a07565b895f60405180602001604052805f8152506040518763ffffffff1660e01b8152600401610d6095949392919061448d565b5f604051808303818588803b158015610d77575f80fd5b505af1158015610d89573d5f803e3d5ffd5b5050505050505b610da0888b6101600135846121c8565b610daa90826144e7565b905073ffffffffffffffffffffffffffffffffffffffff861663c7fb92de60208c0135610dd784896144e7565b8d6101a0016020810190610deb9190613a07565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915273ffffffffffffffffffffffffffffffffffffffff16604482015260a060648201525f60a48201526001608482015260c4016020604051808303815f875af1158015610e75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e99919061405f565b5050505050505050505050565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101839052610f5f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610f33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5791906144fa565b8360186123a6565b6078811080610f7057506202a30081115b15610fba576040517f904c370000000000000000000000000000000000000000000000000000000000815260048101829052607860248201526202a300604482015260640161084c565b5f828152600260205260409020805490829055827fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce8284610ff9612521565b60408051938452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600160405180910390a2505050565b60408051808201909152600581527f71756f746500000000000000000000000000000000000000000000000000000060208201526101208201359060609060a0840135905f90819081906110859061252f565b90505f806110d48361109b6101608c018c613fc2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061254292505050565b9150915081156110f757808060200190518101906110f29190614515565b955093505b5050508281111561113e576040517fcc8704dd000000000000000000000000000000000000000000000000000000008152600481018290526024810184905260440161084c565b805f036111485750815b6040517f5dd8f6aa00000000000000000000000000000000000000000000000000000000815260c087013560048201525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690635dd8f6aa90602401602060405180830381865afa1580156111d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111fa91906144fa565b6040517f4192962600000000000000000000000000000000000000000000000000000000815260c089013560048201529091505f9073ffffffffffffffffffffffffffffffffffffffff83169063419296269060240161038060405180830381865afa15801561126c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611290919061421c565b5090505f6112a382610100015160241c90565b63ffffffff166112b960a08b0160808c016142f0565b63ffffffff16146113cb5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016633be273fa60c08b013561131560a08d0160808e016142f0565b61010086015160241c8d60400160200160208101906113349190614319565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa1580156113a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c6919061405f565b6113e6565b6113db60808a0160608b01614319565b6113e690600a61447f565b90505f6113f4858a846121c8565b60c08b01355f908152600160205260408082205492935073ffffffffffffffffffffffffffffffffffffffff9092169161eeee906114389060608f01908f01613a07565b73ffffffffffffffffffffffffffffffffffffffff16146114685761146360608d0160408e01613a07565b61148a565b7f00000000000000000000000000000000000000000000000000000000000000005b9050875f036114a6576114a38c60c0013583898461272a565b97505b878310156115b45760408051600180825281830190925273ffffffffffffffffffffffffffffffffffffffff8381169085161091816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816114df57505060408051606081018252308152602081018b9052919c508101828c8b1461153c576115378b8e614537565b61153e565b5f5b604080519215156020840152820152606081018c905273ffffffffffffffffffffffffffffffffffffffff8a16608082015260a0016040516020818303038152906040528152508b5f815181106115975761159761454a565b60200260200101819052505f9b5050505050505050505050915091565b505050505050505050915091565b6040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018590525f9061167d9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611651573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167591906144fa565b8660196123a6565b5f8581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86811685529252909120541615611714575f8581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86811685529252918290205491517f14f04e470000000000000000000000000000000000000000000000000000000081529116600482015260240161084c565b607883108061172557506202a30083115b1561176f576040517f904c370000000000000000000000000000000000000000000000000000000000815260048101849052607860248201526202a300604482015260640161084c565b73ffffffffffffffffffffffffffffffffffffffff82166117bc576040517fd8bba7f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fea78803f000000000000000000000000000000000000000000000000000000008152600481018690525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ea78803f90602401602060405180830381865afa158015611847573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186b91906144fa565b905073ffffffffffffffffffffffffffffffffffffffff81166118ba576040517f8637f5b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361193f576040517f2ec7c58700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528216602482015260440161084c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff8416016119a0577f000000000000000000000000000000000000000000000000000000000000000092505b73ffffffffffffffffffffffffffffffffffffffff808416908216107f0000000000000000000000000000000000000000000000000000000000000000816119e857846119ea565b825b826119f557836119f7565b855b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015262ffffff88166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290528051602091820120611af2939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301205f8a815280845282812073ffffffffffffffffffffffffffffffffffffffff898116835290855283822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116838616179091558c8352600286528483208b9055600190955292812080549094169286169290921790925590935087907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce9087611bd3612521565b60408051938452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600160405180910390a28373ffffffffffffffffffffffffffffffffffffffff16877fe694de883385e30d535f625d68df4b2b5e866e8e86fe9d15554480c8d1812e6085611c49612521565b6040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301520160405180910390a35050949350505050565b5f5b9392505050565b5f80611c9a83850185613a22565b90925090505f73ffffffffffffffffffffffffffffffffffffffff821661eeee14611cc55781611ce7565b7f00000000000000000000000000000000000000000000000000000000000000005b5f8481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8581168552925290912054919250163314611d53576040517f7da0526e00000000000000000000000000000000000000000000000000000000815233600482015260240161084c565b5f808812611d615787611d63565b865b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601611e20577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611e08575f80fd5b505af1158015611e1a573d5f803e3d5ffd5b50505050505b611e4173ffffffffffffffffffffffffffffffffffffffff83163383612a00565b5050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611ed49186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a43565b50505050565b5f6101408401358161eeee611ef6610100880160e08901613a07565b73ffffffffffffffffffffffffffffffffffffffff1614611f2757611f22610100870160e08801613a07565b611f49565b7f00000000000000000000000000000000000000000000000000000000000000005b6020808801355f908152808252604080822073ffffffffffffffffffffffffffffffffffffffff80861684529352902054919250168063128acb08308815868a611fa257611f9d6401000276a36001614577565b611fc1565b611fc1600173fffd8963efd1fc6a506488495d951d5263988d266145ab565b8c602001358d60e0015f016020810190611fdb9190613a07565b60405160200161200b92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161203a9594939291906145d8565b60408051808303815f875af1925050508015612091575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261208e91810190614515565b60015b6120a0575f9350505050611c85565b876120ab57806120ad565b815b6120b69061461e565b6040805187815273ffffffffffffffffffffffffffffffffffffffff86166020828101919091529181018390523360608201529197508a013592507f6a212efdcd471836edcfe424121fc9048d3a7cd0458b1218a71aa915300e0e57915060800160405180910390a283156121be576040517fa2d532e60000000000000000000000000000000000000000000000000000000081523060048201526020880135602482015260448101859052608060648201525f608482015273ffffffffffffffffffffffffffffffffffffffff86169063a2d532e69060a4015f604051808303815f87803b1580156121a7575f80fd5b505af11580156121b9573d5f803e3d5ffd5b505050505b5050509392505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f0361221e5783828161221457612214614654565b0492505050611c85565b838110612268576040517f63a0577800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044810185905260640161084c565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261235b8482612ae2565b611ed45760405173ffffffffffffffffffffffffffffffffffffffff84811660248301525f604483015261239c91869182169063095ea7b390606401611e8d565b611ed48482612a43565b5f6123af612521565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156124bc57506040517f348b684e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015612496573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ba9190613fa7565b155b15611ed4576040517f264deeaa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015282166024820152604481018490526064810183905260840161084c565b5f61252a612b38565b905090565b805160208201205f903060601b1861075c565b5f6060602583511161256557505060408051602081019091525f80825290612723565b5f83612573600460206144e7565b815181106125835761258361454a565b0160209081015160f81c91505b5f8561259d6004846144e7565b815181106125ad576125ad61454a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016148015906125eb57506125e8602083614681565b81105b15612720575f856125fd6004846144e7565b8151811061260d5761260d61454a565b016020908101518784019091015160f89190911c91507fffffffff0000000000000000000000000000000000000000000000000000000080891690821603612716575f61265b602086614681565b6126666009866144e7565b1015806126b357508761267a6009866144e7565b8151811061268a5761268a61454a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b6126ec576020886126c56009876144e7565b815181106126d5576126d561454a565b01602001516126e7919060f81c614681565b6126ef565b87515b9050600161270889612702602087614681565b84612bb8565b965096505050505050612723565b5050600501612590565b50505b9250929050565b5f8481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8086168552925282205416803b8203612769575f9150506129f8565b8073ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa9250505080156127ee575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127eb91810190614698565b60015b6127fb575f9150506129f8565b80612810575f985050505050505050506129f8565b505050505050505f868152600260205260408120549061282f83612bf3565b9050818163ffffffff161015612849578063ffffffff1691505b5f808263ffffffff165f03612963578473ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156128a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c59190614698565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff8b169550631a686502946004808301955060209450909250908290030181865afa158015612938573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295c919061472b565b9050612973565b61296d8585612e2f565b90925090505b806fffffffffffffffffffffffffffffffff165f03612999575f955050505050506129f8565b5f6129a789838c8b876130e3565b905061271081036129c0575f96505050505050506129f8565b6129cc838a8a8d613325565b96506127106129db8289614681565b6129e5919061475a565b6129ef9088614537565b96505050505050505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052612a3e91859182169063a9059cbb90606401611e8d565b505050565b5f8060205f8451602086015f885af180612a62576040513d5f823e3d81fd5b50505f513d91508115612a79578060011415612a93565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15611ed4576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161084c565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612b2e57508115612b135780600114612b2e565b5f8673ffffffffffffffffffffffffffffffffffffffff163b115b9695505050505050565b5f3660143373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016148015612b815750808210155b15612bb0575f36612b928385614537565b612b9d92829061476d565b612ba691614794565b60601c9250505090565b339250505090565b6060828203604051915060208183010160405280825250826020850101602082015f5b848110156121be578281015182820152602001612bdb565b5f805f8373ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612c3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c639190614698565b5050509350935050505f8161ffff1611612cd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4e49000000000000000000000000000000000000000000000000000000000000604482015260640161084c565b5f8073ffffffffffffffffffffffffffffffffffffffff861663252c09d784612d038760016147dc565b612d0d91906147f7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815261ffff9091166004820152602401608060405180830381865afa158015612d62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d869190614828565b93505050915080612e24576040517f252c09d70000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff87169063252c09d790602401608060405180830381865afa158015612df9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e1d9190614828565b5091935050505b504203949350505050565b5f808263ffffffff165f03612ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015260640161084c565b6040805160028082526060820183525f9260208301908036833701905050905083815f81518110612ed357612ed361454a565b602002602001019063ffffffff16908163ffffffff16815250505f81600181518110612f0157612f0161454a565b602002602001019063ffffffff16908163ffffffff16815250505f808673ffffffffffffffffffffffffffffffffffffffff1663883bdbfd846040518263ffffffff1660e01b8152600401612f569190614875565b5f60405180830381865afa158015612f70573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612fb59190810190614956565b915091505f825f81518110612fcc57612fcc61454a565b602002602001015183600181518110612fe757612fe761454a565b6020026020010151612ff99190614a13565b90505f825f8151811061300e5761300e61454a565b6020026020010151836001815181106130295761302961454a565b602002602001015161303b91906145ab565b905061304d63ffffffff891683614a58565b96505f8260060b128015613072575061306c63ffffffff891683614acb565b60060b15155b15613085578661308181614aec565b9750505b5f6130aa73ffffffffffffffffffffffffffffffffffffffff63ffffffff8b16614b48565b90506130d477ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682614b8b565b96505050505050509250929050565b5f808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061311f578385613122565b84845b50905073ffffffffffffffffffffffffffffffffffffffff848116908216145f61314b856134fc565b90508073ffffffffffffffffffffffffffffffffffffffff165f0361317757612710935050505061331c565b5f6131a18a613189612710600a614681565b8b6fffffffffffffffffffffffffffffffff166121c8565b90505f836131dc576131d7826c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff86166121c8565b61320a565b61320a8273ffffffffffffffffffffffffffffffffffffffff85166c010000000000000000000000006121c8565b9050613219612710600f614681565b81111561324557606461322f6127106058614681565b613239919061475a565b9550505050505061331c565b613252612710600a614681565b81111561326857606461322f6127106043614681565b61753081111561327d57613239600c8261475a565b613a9881111561329257613239600a8261475a565b6127108111156132a957600f61322f826002614681565b6113888111156132c057601461322f826003614681565b6105dc8111156132d55761323960058261475a565b6101f48111156132f5576132ea60058261475a565b6132399060c86144e7565b80156133115761330660058261475a565b6132399060646144e7565b61041a955050505050505b95945050505050565b5f80613330866134fc565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff82161161342e575f61338073ffffffffffffffffffffffffffffffffffffffff831680614681565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106133f0576133eb7801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff168361385c565b613426565b61342681876fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000061385c565b9250506134f3565b5f61345973ffffffffffffffffffffffffffffffffffffffff8316806801000000000000000061385c565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106134c1576134bc700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff168361385c565b6134ef565b6134ef81876fffffffffffffffffffffffffffffffff1670010000000000000000000000000000000061385c565b9250505b50949350505050565b5f805f8360020b12613511578260020b613518565b8260020b5f035b9050620d89e8811115613557576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f036135795770010000000000000000000000000000000061358b565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156135bf576ffff97272373d413259a46990580e213a0260801c5b60048216156135de576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156135fd576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561361c576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561363b576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561365a576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613679576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613699576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156136b9576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156136d9576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156136f9576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613719576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613739576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613759576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613779576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561379a576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156137ba576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156137d9576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156137f6576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561383457807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161383057613830614654565b0490505b64010000000081061561384857600161384a565b5f5b60ff16602082901c0192505050919050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f036138af575f84116138a4575f80fd5b508290049050611c85565b8084116138ba575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60208284031215613935575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c85575f80fd5b5f60208284031215613974575f80fd5b813567ffffffffffffffff81111561398a575f80fd5b82016102008185031215611c85575f80fd5b5f602082840312156139ac575f80fd5b5035919050565b5f80604083850312156139c4575f80fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff811681146139f4575f80fd5b50565b8035613a02816139d3565b919050565b5f60208284031215613a17575f80fd5b8135611c85816139d3565b5f8060408385031215613a33575f80fd5b823591506020830135613a45816139d3565b809150509250929050565b5f60208284031215613a60575f80fd5b813567ffffffffffffffff811115613a76575f80fd5b82016101808185031215611c85575f80fd5b5f81518084525f5b81811015613aac57602081850181015186830182015201613a90565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f604080830185845260206040818601528186518084526060935060608701915060608160051b8801018389015f5b83811015613b93578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528681015187850152880151888401889052613b8088850182613a88565b9587019593505090850190600101613b18565b50909a9950505050505050505050565b5f805f8060808587031215613bb6575f80fd5b84359350602085013562ffffff81168114613bcf575f80fd5b9250604085013591506060850135613be6816139d3565b939692955090935050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff81118282101715613c4257613c42613bf1565b60405290565b604051610260810167ffffffffffffffff81118282101715613c4257613c42613bf1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cb357613cb3613bf1565b604052919050565b65ffffffffffff811681146139f4575f80fd5b8035613a0281613cbb565b63ffffffff811681146139f4575f80fd5b8035613a0281613cd9565b6dffffffffffffffffffffffffffff811681146139f4575f80fd5b8035613a0281613cf5565b5f805f838503610160811215613d2f575f80fd5b84359350610120807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083011215613d64575f80fd5b613d6c613c1e565b9150613d7a60208701613cce565b8252613d8860408701613cce565b6020830152613d9960608701613cce565b6040830152613daa60808701613cce565b6060830152613dbb60a08701613cea565b6080830152613dcc60c08701613d10565b60a0830152613ddd60e08701613cea565b60c0830152610100613df08188016139f7565b60e084015290860135908201529150613e0c61014085016139f7565b90509250925092565b5f805f8060608587031215613e28575f80fd5b8435935060208501359250604085013567ffffffffffffffff80821115613e4d575f80fd5b818701915087601f830112613e60575f80fd5b813581811115613e6e575f80fd5b886020828501011115613e7f575f80fd5b95989497505060200194505050565b5f60208284031215613e9e575f80fd5b813567ffffffffffffffff811115613eb4575f80fd5b82016101a08185031215611c85575f80fd5b5f6080820186835260208681850152604086604086015260606080606087015283875180865260a08801915060a08160051b89010195508489015f5b82811015613f7d578988037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600184528151805173ffffffffffffffffffffffffffffffffffffffff16895287810151888a0152860151868901869052613f6a868a0182613a88565b9850509286019290860190600101613f02565b50959c9b505050505050505050505050565b80151581146139f4575f80fd5b8051613a0281613f8f565b5f60208284031215613fb7575f80fd5b8151611c8581613f8f565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ff5575f80fd5b83018035915067ffffffffffffffff82111561400f575f80fd5b602001915036819003821315612723575f80fd5b5f805f8060808587031215614036575f80fd5b843561404181613f8f565b935060208501359250604085013591506060850135613be6816139d3565b5f6020828403121561406f575f80fd5b5051919050565b8051613a0281613cbb565b8051613a0281613cd9565b8051613a0281613cf5565b8051613a02816139d3565b805161ffff81168114613a02575f80fd5b5f61026082840312156140c4575f80fd5b6140cc613c48565b90506140d7826140a2565b81526140e5602083016140a2565b60208201526140f660408301614081565b604082015261410760608301613f9c565b606082015261411860808301613f9c565b608082015261412960a08301613f9c565b60a082015261413a60c08301613f9c565b60c082015261414b60e08301613f9c565b60e082015261010061415e818401613f9c565b90820152610120614170838201613f9c565b90820152610140614182838201613f9c565b90820152610160614194838201613f9c565b908201526101806141a6838201613f9c565b908201526101a06141b8838201613f9c565b908201526101c06141ca838201613f9c565b908201526101e06141dc838201613f9c565b908201526102006141ee838201613f9c565b90820152610220614200838201614097565b908201526102406142128382016140a2565b9082015292915050565b5f8082840361038081121561422f575f80fd5b6101208082121561423e575f80fd5b614246613c1e565b915061425185614076565b825261425f60208601614076565b602083015261427060408601614076565b604083015261428160608601614076565b606083015261429260808601614081565b60808301526142a360a0860161408c565b60a08301526142b460c08601614081565b60c08301526142c560e08601614097565b60e08301526101008086015181840152508193506142e5868287016140b3565b925050509250929050565b5f60208284031215614300575f80fd5b8135611c8581613cd9565b60ff811681146139f4575f80fd5b5f60208284031215614329575f80fd5b8135611c858161430b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b808511156143ba57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156143a0576143a0614334565b808516156143ad57918102915b93841c9390800290614366565b509250929050565b5f826143d05750600161075c565b816143dc57505f61075c565b81600181146143f257600281146143fc57614418565b600191505061075c565b60ff84111561440d5761440d614334565b50506001821b61075c565b5060208310610133831016604e8410600b841016171561443b575081810a61075c565b6144458383614361565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561447757614477614334565b029392505050565b5f611c8560ff8416836143c2565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152821515606082015260c060808201525f60c082015260e060a08201525f6144dc60e0830184613a88565b979650505050505050565b8082018082111561075c5761075c614334565b5f6020828403121561450a575f80fd5b8151611c85816139d3565b5f8060408385031215614526575f80fd5b505080516020909101519092909150565b8181038181111561075c5761075c614334565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff8181168382160190808211156145a4576145a4614334565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390808211156145a4576145a4614334565b5f73ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526144dc60a0830184613a88565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361464e5761464e614334565b505f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b808202811582820484141761075c5761075c614334565b5f805f805f805f60e0888a0312156146ae575f80fd5b87516146b9816139d3565b8097505060208801518060020b81146146d0575f80fd5b95506146de604089016140a2565b94506146ec606089016140a2565b93506146fa608089016140a2565b925060a088015161470a8161430b565b60c089015190925061471b81613f8f565b8091505092959891949750929550565b5f6020828403121561473b575f80fd5b81516fffffffffffffffffffffffffffffffff81168114611c85575f80fd5b5f8261476857614768614654565b500490565b5f808585111561477b575f80fd5b83861115614787575f80fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156147d45780818660140360031b1b83161692505b505092915050565b61ffff8181168382160190808211156145a4576145a4614334565b5f61ffff8084168061480b5761480b614654565b92169190910692915050565b8051600681900b8114613a02575f80fd5b5f805f806080858703121561483b575f80fd5b845161484681613cd9565b935061485460208601614817565b92506040850151614864816139d3565b6060860151909250613be681613f8f565b602080825282518282018190525f9190848201906040850190845b818110156148b257835163ffffffff1683529284019291840191600101614890565b50909695505050505050565b5f67ffffffffffffffff8211156148d7576148d7613bf1565b5060051b60200190565b5f82601f8301126148f0575f80fd5b81516020614905614900836148be565b613c6c565b8083825260208201915060208460051b870101935086841115614926575f80fd5b602086015b8481101561494b57805161493e816139d3565b835291830191830161492b565b509695505050505050565b5f8060408385031215614967575f80fd5b825167ffffffffffffffff8082111561497e575f80fd5b818501915085601f830112614991575f80fd5b815160206149a1614900836148be565b82815260059290921b840181019181810190898411156149bf575f80fd5b948201945b838610156149e4576149d586614817565b825294820194908201906149c4565b918801519196509093505050808211156149fc575f80fd5b50614a09858286016148e1565b9150509250929050565b600682810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffff800000000000008112667fffffffffffff8213171561075c5761075c614334565b5f8160060b8360060b80614a6e57614a6e614654565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000083141615614ac257614ac2614334565b90059392505050565b5f8260060b80614add57614add614654565b808360060b0791505092915050565b5f8160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103614b2057614b20614334565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417614b8257614b82614334565b50505092915050565b5f77ffffffffffffffffffffffffffffffffffffffffffffffff80841680614bb557614bb5614654565b9216919091049291505056fea26469706673582212203333cfba9f7e641ab36d5960f3bde320d58819facd665e7d383b5e179ed54a9064736f6c634300081700330000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c4000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d40000000000000000000000004d0edd347fb1fa21589c1e109b3474924be87636000000000000000000000000420000000000000000000000000000000000000600000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb566
Deployed Bytecode
0x608060405260043610610183575f3560e01c806388bc2ef3116100d1578063db312fae1161007c578063fa3baadc11610057578063fa3baadc14610571578063fa461e3314610586578063fb82b1b0146105a5575f80fd5b8063db312fae146104f6578063f434c9141461050b578063f73e5aab1461053e575f80fd5b806399f6d77f116100ac57806399f6d77f1461048e578063ad5c4648146104ad578063b88a92b4146104e0575f80fd5b806388bc2ef31461040f5780638cc35846146104425780639098afeb1461046f575f80fd5b8063293c499911610131578063572b6c051161010c578063572b6c051461033b5780637da0a87714610394578063889eedb4146103c6575f80fd5b8063293c4999146102be57806335d32898146102f15780633717fba714610310575f80fd5b80631d831d5c116101615780631d831d5c146101f25780631eabcd341461024a57806327e514111461027d575f80fd5b806301ffc9a7146101875780631337f986146101bb5780631a65893b146101d0575b5f80fd5b348015610192575f80fd5b506101a66101a1366004613925565b6105e6565b60405190151581526020015b60405180910390f35b6101ce6101c9366004613964565b610762565b005b3480156101db575f80fd5b506101e4607881565b6040519081526020016101b2565b3480156101fd575f80fd5b506102257f0000000000000000000000004d0edd347fb1fa21589c1e109b3474924be8763681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b2565b348015610255575f80fd5b506102257f0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c481565b348015610288575f80fd5b5061022561029736600461399c565b60016020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102c9575f80fd5b506102257f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d481565b3480156102fc575f80fd5b506101ce61030b3660046139b3565b610ea6565b34801561031b575f80fd5b506101e461032a36600461399c565b60026020525f908152604090205481565b348015610346575f80fd5b506101a6610355366004613a07565b7f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb56673ffffffffffffffffffffffffffffffffffffffff90811691161490565b34801561039f575f80fd5b507f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb566610225565b3480156103d1575f80fd5b506102256103e0366004613a22565b5f60208181529281526040808220909352908152205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561041a575f80fd5b506102257f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf81565b34801561044d575f80fd5b5061046161045c366004613a50565b611032565b6040516101b2929190613ae9565b34801561047a575f80fd5b50610225610489366004613ba3565b6115c2565b348015610499575f80fd5b506101a66104a8366004613d1b565b611c83565b3480156104b8575f80fd5b506102257f000000000000000000000000420000000000000000000000000000000000000681565b3480156104eb575f80fd5b506101e46202a30081565b348015610501575f80fd5b506101e461271081565b348015610516575f80fd5b506102257f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d81565b348015610549575f80fd5b506102257f00000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd81565b34801561057c575f80fd5b506101e461041a81565b348015610591575f80fd5b506101ce6105a0366004613e15565b611c8c565b3480156105b0575f80fd5b506105d66105bf366004613e8e565b6101608101359160808201359160a0013590606090565b6040516101b29493929190613ec6565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167feeb73e8900000000000000000000000000000000000000000000000000000000148061067857507fffffffff0000000000000000000000000000000000000000000000000000000082167f1337f98600000000000000000000000000000000000000000000000000000000145b806106c457507fffffffff0000000000000000000000000000000000000000000000000000000082167f4608b06d00000000000000000000000000000000000000000000000000000000145b8061071057507fffffffff0000000000000000000000000000000000000000000000000000000082167ff434c91400000000000000000000000000000000000000000000000000000000145b8061075c57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6040517f6e49181f000000000000000000000000000000000000000000000000000000008152602082013560048201523360248201527f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf73ffffffffffffffffffffffffffffffffffffffff1690636e49181f90604401602060405180830381865afa1580156107f4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108189190613fa7565b610855576040517f4758af1b0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b5f8080806108676101c0860186613fc2565b8101906108749190614023565b9296509094509250905061eeee610892610100870160e08801613a07565b73ffffffffffffffffffffffffffffffffffffffff16146108e7576108e733306101408801356108c96101008a0160e08b01613a07565b73ffffffffffffffffffffffffffffffffffffffff16929190611e4b565b5f6108f3868684611eda565b905082811015610939576040517fe2d708a9000000000000000000000000000000000000000000000000000000008152600481018290526024810184905260440161084c565b5f61eeee61094e610100890160e08a01613a07565b73ffffffffffffffffffffffffffffffffffffffff1614610a0d5761097a610100880160e08901613a07565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa1580156109e4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a08919061405f565b610a0f565b475b6040517f41929626000000000000000000000000000000000000000000000000000000008152602089013560048201529091505f9073ffffffffffffffffffffffffffffffffffffffff85169063419296269060240161038060405180830381865afa158015610a81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa5919061421c565b5090505f610ab882610100015160241c90565b63ffffffff16610ace60c08b0160a08c016142f0565b63ffffffff1614610be05773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c416633be273fa60208b0135610b2a60c08d0160a08e016142f0565b61010086015160241c8d6060016020016020810190610b499190614319565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015610bb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bdb919061405f565b610bfb565b610bf060a08a0160808b01614319565b610bfb90600a61447f565b90505f8315610d9057610c14848b6101600135846121c8565b905061eeee610c2a6101008c0160e08d01613a07565b73ffffffffffffffffffffffffffffffffffffffff1614610c7857610c783385610c5b6101008e0160e08f01613a07565b73ffffffffffffffffffffffffffffffffffffffff1691906122cf565b5f61eeee610c8d6101008d0160e08e01613a07565b73ffffffffffffffffffffffffffffffffffffffff1614610cae575f610cb0565b845b60408051878152602080820186905233828401529151929350908d0135917faacef1bbb194eac329f8f247fbe8cce3eca2ed1f2e0a45a0488c2dd8afe6e5169181900360600190a23373ffffffffffffffffffffffffffffffffffffffff16639e6eec05828d602001358e60e0015f016020810190610d2f9190613a07565b895f60405180602001604052805f8152506040518763ffffffff1660e01b8152600401610d6095949392919061448d565b5f604051808303818588803b158015610d77575f80fd5b505af1158015610d89573d5f803e3d5ffd5b5050505050505b610da0888b6101600135846121c8565b610daa90826144e7565b905073ffffffffffffffffffffffffffffffffffffffff861663c7fb92de60208c0135610dd784896144e7565b8d6101a0016020810190610deb9190613a07565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526004810193909352602483019190915273ffffffffffffffffffffffffffffffffffffffff16604482015260a060648201525f60a48201526001608482015260c4016020604051808303815f875af1158015610e75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e99919061405f565b5050505050505050505050565b6040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101839052610f5f907f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d473ffffffffffffffffffffffffffffffffffffffff1690636352211e90602401602060405180830381865afa158015610f33573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5791906144fa565b8360186123a6565b6078811080610f7057506202a30081115b15610fba576040517f904c370000000000000000000000000000000000000000000000000000000000815260048101829052607860248201526202a300604482015260640161084c565b5f828152600260205260409020805490829055827fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce8284610ff9612521565b60408051938452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600160405180910390a2505050565b60408051808201909152600581527f71756f746500000000000000000000000000000000000000000000000000000060208201526101208201359060609060a0840135905f90819081906110859061252f565b90505f806110d48361109b6101608c018c613fc2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061254292505050565b9150915081156110f757808060200190518101906110f29190614515565b955093505b5050508281111561113e576040517fcc8704dd000000000000000000000000000000000000000000000000000000008152600481018290526024810184905260440161084c565b805f036111485750815b6040517f5dd8f6aa00000000000000000000000000000000000000000000000000000000815260c087013560048201525f907f0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf73ffffffffffffffffffffffffffffffffffffffff1690635dd8f6aa90602401602060405180830381865afa1580156111d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111fa91906144fa565b6040517f4192962600000000000000000000000000000000000000000000000000000000815260c089013560048201529091505f9073ffffffffffffffffffffffffffffffffffffffff83169063419296269060240161038060405180830381865afa15801561126c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611290919061421c565b5090505f6112a382610100015160241c90565b63ffffffff166112b960a08b0160808c016142f0565b63ffffffff16146113cb5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c416633be273fa60c08b013561131560a08d0160808e016142f0565b61010086015160241c8d60400160200160208101906113349190614319565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa1580156113a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c6919061405f565b6113e6565b6113db60808a0160608b01614319565b6113e690600a61447f565b90505f6113f4858a846121c8565b60c08b01355f908152600160205260408082205492935073ffffffffffffffffffffffffffffffffffffffff9092169161eeee906114389060608f01908f01613a07565b73ffffffffffffffffffffffffffffffffffffffff16146114685761146360608d0160408e01613a07565b61148a565b7f00000000000000000000000042000000000000000000000000000000000000065b9050875f036114a6576114a38c60c0013583898461272a565b97505b878310156115b45760408051600180825281830190925273ffffffffffffffffffffffffffffffffffffffff8381169085161091816020015b60408051606080820183525f8083526020830152918101919091528152602001906001900390816114df57505060408051606081018252308152602081018b9052919c508101828c8b1461153c576115378b8e614537565b61153e565b5f5b604080519215156020840152820152606081018c905273ffffffffffffffffffffffffffffffffffffffff8a16608082015260a0016040516020818303038152906040528152508b5f815181106115975761159761454a565b60200260200101819052505f9b5050505050505050505050915091565b505050505050505050915091565b6040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018590525f9061167d9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d41690636352211e90602401602060405180830381865afa158015611651573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167591906144fa565b8660196123a6565b5f8581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86811685529252909120541615611714575f8581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86811685529252918290205491517f14f04e470000000000000000000000000000000000000000000000000000000081529116600482015260240161084c565b607883108061172557506202a30083115b1561176f576040517f904c370000000000000000000000000000000000000000000000000000000000815260048101849052607860248201526202a300604482015260640161084c565b73ffffffffffffffffffffffffffffffffffffffff82166117bc576040517fd8bba7f600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fea78803f000000000000000000000000000000000000000000000000000000008152600481018690525f907f0000000000000000000000004d0edd347fb1fa21589c1e109b3474924be8763673ffffffffffffffffffffffffffffffffffffffff169063ea78803f90602401602060405180830381865afa158015611847573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186b91906144fa565b905073ffffffffffffffffffffffffffffffffffffffff81166118ba576040517f8637f5b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361193f576040517f2ec7c58700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528216602482015260440161084c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff8416016119a0577f000000000000000000000000420000000000000000000000000000000000000692505b73ffffffffffffffffffffffffffffffffffffffff808416908216107f00000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd816119e857846119ea565b825b826119f557836119f7565b855b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015262ffffff88166060820152608001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290528051602091820120611af2939290917fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5491017fff00000000000000000000000000000000000000000000000000000000000000815260609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830191909152603582015260550190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815281516020928301205f8a815280845282812073ffffffffffffffffffffffffffffffffffffffff898116835290855283822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116838616179091558c8352600286528483208b9055600190955292812080549094169286169290921790925590935087907fa8d6b20cd05f07d50e9855ce0fc6de3517f3df2e890a5ec6357892b3808a53ce9087611bd3612521565b60408051938452602084019290925273ffffffffffffffffffffffffffffffffffffffff169082015260600160405180910390a28373ffffffffffffffffffffffffffffffffffffffff16877fe694de883385e30d535f625d68df4b2b5e866e8e86fe9d15554480c8d1812e6085611c49612521565b6040805173ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301520160405180910390a35050949350505050565b5f5b9392505050565b5f80611c9a83850185613a22565b90925090505f73ffffffffffffffffffffffffffffffffffffffff821661eeee14611cc55781611ce7565b7f00000000000000000000000042000000000000000000000000000000000000065b5f8481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8581168552925290912054919250163314611d53576040517f7da0526e00000000000000000000000000000000000000000000000000000000815233600482015260240161084c565b5f808812611d615787611d63565b865b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff111273ffffffffffffffffffffffffffffffffffffffff841601611e20577f000000000000000000000000420000000000000000000000000000000000000673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004015f604051808303818588803b158015611e08575f80fd5b505af1158015611e1a573d5f803e3d5ffd5b50505050505b611e4173ffffffffffffffffffffffffffffffffffffffff83163383612a00565b5050505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052611ed49186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a43565b50505050565b5f6101408401358161eeee611ef6610100880160e08901613a07565b73ffffffffffffffffffffffffffffffffffffffff1614611f2757611f22610100870160e08801613a07565b611f49565b7f00000000000000000000000042000000000000000000000000000000000000065b6020808801355f908152808252604080822073ffffffffffffffffffffffffffffffffffffffff80861684529352902054919250168063128acb08308815868a611fa257611f9d6401000276a36001614577565b611fc1565b611fc1600173fffd8963efd1fc6a506488495d951d5263988d266145ab565b8c602001358d60e0015f016020810190611fdb9190613a07565b60405160200161200b92919091825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161203a9594939291906145d8565b60408051808303815f875af1925050508015612091575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261208e91810190614515565b60015b6120a0575f9350505050611c85565b876120ab57806120ad565b815b6120b69061461e565b6040805187815273ffffffffffffffffffffffffffffffffffffffff86166020828101919091529181018390523360608201529197508a013592507f6a212efdcd471836edcfe424121fc9048d3a7cd0458b1218a71aa915300e0e57915060800160405180910390a283156121be576040517fa2d532e60000000000000000000000000000000000000000000000000000000081523060048201526020880135602482015260448101859052608060648201525f608482015273ffffffffffffffffffffffffffffffffffffffff86169063a2d532e69060a4015f604051808303815f87803b1580156121a7575f80fd5b505af11580156121b9573d5f803e3d5ffd5b505050505b5050509392505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f0361221e5783828161221457612214614654565b0492505050611c85565b838110612268576040517f63a0577800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044810185905260640161084c565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261235b8482612ae2565b611ed45760405173ffffffffffffffffffffffffffffffffffffffff84811660248301525f604483015261239c91869182169063095ea7b390606401611e8d565b611ed48482612a43565b5f6123af612521565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156124bc57506040517f348b684e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d169063348b684e9060c401602060405180830381865afa158015612496573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ba9190613fa7565b155b15611ed4576040517f264deeaa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808616600483015282166024820152604481018490526064810183905260840161084c565b5f61252a612b38565b905090565b805160208201205f903060601b1861075c565b5f6060602583511161256557505060408051602081019091525f80825290612723565b5f83612573600460206144e7565b815181106125835761258361454a565b0160209081015160f81c91505b5f8561259d6004846144e7565b815181106125ad576125ad61454a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016148015906125eb57506125e8602083614681565b81105b15612720575f856125fd6004846144e7565b8151811061260d5761260d61454a565b016020908101518784019091015160f89190911c91507fffffffff0000000000000000000000000000000000000000000000000000000080891690821603612716575f61265b602086614681565b6126666009866144e7565b1015806126b357508761267a6009866144e7565b8151811061268a5761268a61454a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b6126ec576020886126c56009876144e7565b815181106126d5576126d561454a565b01602001516126e7919060f81c614681565b6126ef565b87515b9050600161270889612702602087614681565b84612bb8565b965096505050505050612723565b5050600501612590565b50505b9250929050565b5f8481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8086168552925282205416803b8203612769575f9150506129f8565b8073ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa9250505080156127ee575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526127eb91810190614698565b60015b6127fb575f9150506129f8565b80612810575f985050505050505050506129f8565b505050505050505f868152600260205260408120549061282f83612bf3565b9050818163ffffffff161015612849578063ffffffff1691505b5f808263ffffffff165f03612963578473ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156128a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c59190614698565b5050604080517f1a686502000000000000000000000000000000000000000000000000000000008152905194975073ffffffffffffffffffffffffffffffffffffffff8b169550631a686502946004808301955060209450909250908290030181865afa158015612938573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061295c919061472b565b9050612973565b61296d8585612e2f565b90925090505b806fffffffffffffffffffffffffffffffff165f03612999575f955050505050506129f8565b5f6129a789838c8b876130e3565b905061271081036129c0575f96505050505050506129f8565b6129cc838a8a8d613325565b96506127106129db8289614681565b6129e5919061475a565b6129ef9088614537565b96505050505050505b949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052612a3e91859182169063a9059cbb90606401611e8d565b505050565b5f8060205f8451602086015f885af180612a62576040513d5f823e3d81fd5b50505f513d91508115612a79578060011415612a93565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15611ed4576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161084c565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612b2e57508115612b135780600114612b2e565b5f8673ffffffffffffffffffffffffffffffffffffffff163b115b9695505050505050565b5f3660143373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb56616148015612b815750808210155b15612bb0575f36612b928385614537565b612b9d92829061476d565b612ba691614794565b60601c9250505090565b339250505090565b6060828203604051915060208183010160405280825250826020850101602082015f5b848110156121be578281015182820152602001612bdb565b5f805f8373ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015612c3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c639190614698565b5050509350935050505f8161ffff1611612cd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4e49000000000000000000000000000000000000000000000000000000000000604482015260640161084c565b5f8073ffffffffffffffffffffffffffffffffffffffff861663252c09d784612d038760016147dc565b612d0d91906147f7565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815261ffff9091166004820152602401608060405180830381865afa158015612d62573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612d869190614828565b93505050915080612e24576040517f252c09d70000000000000000000000000000000000000000000000000000000081525f600482015273ffffffffffffffffffffffffffffffffffffffff87169063252c09d790602401608060405180830381865afa158015612df9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e1d9190614828565b5091935050505b504203949350505050565b5f808263ffffffff165f03612ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015260640161084c565b6040805160028082526060820183525f9260208301908036833701905050905083815f81518110612ed357612ed361454a565b602002602001019063ffffffff16908163ffffffff16815250505f81600181518110612f0157612f0161454a565b602002602001019063ffffffff16908163ffffffff16815250505f808673ffffffffffffffffffffffffffffffffffffffff1663883bdbfd846040518263ffffffff1660e01b8152600401612f569190614875565b5f60405180830381865afa158015612f70573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612fb59190810190614956565b915091505f825f81518110612fcc57612fcc61454a565b602002602001015183600181518110612fe757612fe761454a565b6020026020010151612ff99190614a13565b90505f825f8151811061300e5761300e61454a565b6020026020010151836001815181106130295761302961454a565b602002602001015161303b91906145ab565b905061304d63ffffffff891683614a58565b96505f8260060b128015613072575061306c63ffffffff891683614acb565b60060b15155b15613085578661308181614aec565b9750505b5f6130aa73ffffffffffffffffffffffffffffffffffffffff63ffffffff8b16614b48565b90506130d477ffffffffffffffffffffffffffffffffffffffff00000000602084901b1682614b8b565b96505050505050509250929050565b5f808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061311f578385613122565b84845b50905073ffffffffffffffffffffffffffffffffffffffff848116908216145f61314b856134fc565b90508073ffffffffffffffffffffffffffffffffffffffff165f0361317757612710935050505061331c565b5f6131a18a613189612710600a614681565b8b6fffffffffffffffffffffffffffffffff166121c8565b90505f836131dc576131d7826c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff86166121c8565b61320a565b61320a8273ffffffffffffffffffffffffffffffffffffffff85166c010000000000000000000000006121c8565b9050613219612710600f614681565b81111561324557606461322f6127106058614681565b613239919061475a565b9550505050505061331c565b613252612710600a614681565b81111561326857606461322f6127106043614681565b61753081111561327d57613239600c8261475a565b613a9881111561329257613239600a8261475a565b6127108111156132a957600f61322f826002614681565b6113888111156132c057601461322f826003614681565b6105dc8111156132d55761323960058261475a565b6101f48111156132f5576132ea60058261475a565b6132399060c86144e7565b80156133115761330660058261475a565b6132399060646144e7565b61041a955050505050505b95945050505050565b5f80613330866134fc565b90506fffffffffffffffffffffffffffffffff73ffffffffffffffffffffffffffffffffffffffff82161161342e575f61338073ffffffffffffffffffffffffffffffffffffffff831680614681565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106133f0576133eb7801000000000000000000000000000000000000000000000000876fffffffffffffffffffffffffffffffff168361385c565b613426565b61342681876fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000061385c565b9250506134f3565b5f61345973ffffffffffffffffffffffffffffffffffffffff8316806801000000000000000061385c565b90508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106134c1576134bc700100000000000000000000000000000000876fffffffffffffffffffffffffffffffff168361385c565b6134ef565b6134ef81876fffffffffffffffffffffffffffffffff1670010000000000000000000000000000000061385c565b9250505b50949350505050565b5f805f8360020b12613511578260020b613518565b8260020b5f035b9050620d89e8811115613557576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f036135795770010000000000000000000000000000000061358b565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156135bf576ffff97272373d413259a46990580e213a0260801c5b60048216156135de576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156135fd576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561361c576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561363b576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561365a576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613679576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613699576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156136b9576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156136d9576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156136f9576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613719576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613739576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613759576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613779576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561379a576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156137ba576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156137d9576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156137f6576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561383457807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161383057613830614654565b0490505b64010000000081061561384857600161384a565b5f5b60ff16602082901c0192505050919050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f036138af575f84116138a4575f80fd5b508290049050611c85565b8084116138ba575f80fd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f60208284031215613935575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c85575f80fd5b5f60208284031215613974575f80fd5b813567ffffffffffffffff81111561398a575f80fd5b82016102008185031215611c85575f80fd5b5f602082840312156139ac575f80fd5b5035919050565b5f80604083850312156139c4575f80fd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff811681146139f4575f80fd5b50565b8035613a02816139d3565b919050565b5f60208284031215613a17575f80fd5b8135611c85816139d3565b5f8060408385031215613a33575f80fd5b823591506020830135613a45816139d3565b809150509250929050565b5f60208284031215613a60575f80fd5b813567ffffffffffffffff811115613a76575f80fd5b82016101808185031215611c85575f80fd5b5f81518084525f5b81811015613aac57602081850181015186830182015201613a90565b505f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f604080830185845260206040818601528186518084526060935060608701915060608160051b8801018389015f5b83811015613b93578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00185528151805173ffffffffffffffffffffffffffffffffffffffff1684528681015187850152880151888401889052613b8088850182613a88565b9587019593505090850190600101613b18565b50909a9950505050505050505050565b5f805f8060808587031215613bb6575f80fd5b84359350602085013562ffffff81168114613bcf575f80fd5b9250604085013591506060850135613be6816139d3565b939692955090935050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff81118282101715613c4257613c42613bf1565b60405290565b604051610260810167ffffffffffffffff81118282101715613c4257613c42613bf1565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cb357613cb3613bf1565b604052919050565b65ffffffffffff811681146139f4575f80fd5b8035613a0281613cbb565b63ffffffff811681146139f4575f80fd5b8035613a0281613cd9565b6dffffffffffffffffffffffffffff811681146139f4575f80fd5b8035613a0281613cf5565b5f805f838503610160811215613d2f575f80fd5b84359350610120807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083011215613d64575f80fd5b613d6c613c1e565b9150613d7a60208701613cce565b8252613d8860408701613cce565b6020830152613d9960608701613cce565b6040830152613daa60808701613cce565b6060830152613dbb60a08701613cea565b6080830152613dcc60c08701613d10565b60a0830152613ddd60e08701613cea565b60c0830152610100613df08188016139f7565b60e084015290860135908201529150613e0c61014085016139f7565b90509250925092565b5f805f8060608587031215613e28575f80fd5b8435935060208501359250604085013567ffffffffffffffff80821115613e4d575f80fd5b818701915087601f830112613e60575f80fd5b813581811115613e6e575f80fd5b886020828501011115613e7f575f80fd5b95989497505060200194505050565b5f60208284031215613e9e575f80fd5b813567ffffffffffffffff811115613eb4575f80fd5b82016101a08185031215611c85575f80fd5b5f6080820186835260208681850152604086604086015260606080606087015283875180865260a08801915060a08160051b89010195508489015f5b82811015613f7d578988037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600184528151805173ffffffffffffffffffffffffffffffffffffffff16895287810151888a0152860151868901869052613f6a868a0182613a88565b9850509286019290860190600101613f02565b50959c9b505050505050505050505050565b80151581146139f4575f80fd5b8051613a0281613f8f565b5f60208284031215613fb7575f80fd5b8151611c8581613f8f565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ff5575f80fd5b83018035915067ffffffffffffffff82111561400f575f80fd5b602001915036819003821315612723575f80fd5b5f805f8060808587031215614036575f80fd5b843561404181613f8f565b935060208501359250604085013591506060850135613be6816139d3565b5f6020828403121561406f575f80fd5b5051919050565b8051613a0281613cbb565b8051613a0281613cd9565b8051613a0281613cf5565b8051613a02816139d3565b805161ffff81168114613a02575f80fd5b5f61026082840312156140c4575f80fd5b6140cc613c48565b90506140d7826140a2565b81526140e5602083016140a2565b60208201526140f660408301614081565b604082015261410760608301613f9c565b606082015261411860808301613f9c565b608082015261412960a08301613f9c565b60a082015261413a60c08301613f9c565b60c082015261414b60e08301613f9c565b60e082015261010061415e818401613f9c565b90820152610120614170838201613f9c565b90820152610140614182838201613f9c565b90820152610160614194838201613f9c565b908201526101806141a6838201613f9c565b908201526101a06141b8838201613f9c565b908201526101c06141ca838201613f9c565b908201526101e06141dc838201613f9c565b908201526102006141ee838201613f9c565b90820152610220614200838201614097565b908201526102406142128382016140a2565b9082015292915050565b5f8082840361038081121561422f575f80fd5b6101208082121561423e575f80fd5b614246613c1e565b915061425185614076565b825261425f60208601614076565b602083015261427060408601614076565b604083015261428160608601614076565b606083015261429260808601614081565b60808301526142a360a0860161408c565b60a08301526142b460c08601614081565b60c08301526142c560e08601614097565b60e08301526101008086015181840152508193506142e5868287016140b3565b925050509250929050565b5f60208284031215614300575f80fd5b8135611c8581613cd9565b60ff811681146139f4575f80fd5b5f60208284031215614329575f80fd5b8135611c858161430b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b600181815b808511156143ba57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156143a0576143a0614334565b808516156143ad57918102915b93841c9390800290614366565b509250929050565b5f826143d05750600161075c565b816143dc57505f61075c565b81600181146143f257600281146143fc57614418565b600191505061075c565b60ff84111561440d5761440d614334565b50506001821b61075c565b5060208310610133831016604e8410600b841016171561443b575081810a61075c565b6144458383614361565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561447757614477614334565b029392505050565b5f611c8560ff8416836143c2565b85815273ffffffffffffffffffffffffffffffffffffffff85166020820152836040820152821515606082015260c060808201525f60c082015260e060a08201525f6144dc60e0830184613a88565b979650505050505050565b8082018082111561075c5761075c614334565b5f6020828403121561450a575f80fd5b8151611c85816139d3565b5f8060408385031215614526575f80fd5b505080516020909101519092909150565b8181038181111561075c5761075c614334565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b73ffffffffffffffffffffffffffffffffffffffff8181168382160190808211156145a4576145a4614334565b5092915050565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390808211156145a4576145a4614334565b5f73ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526144dc60a0830184613a88565b5f7f8000000000000000000000000000000000000000000000000000000000000000820361464e5761464e614334565b505f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b808202811582820484141761075c5761075c614334565b5f805f805f805f60e0888a0312156146ae575f80fd5b87516146b9816139d3565b8097505060208801518060020b81146146d0575f80fd5b95506146de604089016140a2565b94506146ec606089016140a2565b93506146fa608089016140a2565b925060a088015161470a8161430b565b60c089015190925061471b81613f8f565b8091505092959891949750929550565b5f6020828403121561473b575f80fd5b81516fffffffffffffffffffffffffffffffff81168114611c85575f80fd5b5f8261476857614768614654565b500490565b5f808585111561477b575f80fd5b83861115614787575f80fd5b5050820193919092039150565b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000081358181169160148510156147d45780818660140360031b1b83161692505b505092915050565b61ffff8181168382160190808211156145a4576145a4614334565b5f61ffff8084168061480b5761480b614654565b92169190910692915050565b8051600681900b8114613a02575f80fd5b5f805f806080858703121561483b575f80fd5b845161484681613cd9565b935061485460208601614817565b92506040850151614864816139d3565b6060860151909250613be681613f8f565b602080825282518282018190525f9190848201906040850190845b818110156148b257835163ffffffff1683529284019291840191600101614890565b50909695505050505050565b5f67ffffffffffffffff8211156148d7576148d7613bf1565b5060051b60200190565b5f82601f8301126148f0575f80fd5b81516020614905614900836148be565b613c6c565b8083825260208201915060208460051b870101935086841115614926575f80fd5b602086015b8481101561494b57805161493e816139d3565b835291830191830161492b565b509695505050505050565b5f8060408385031215614967575f80fd5b825167ffffffffffffffff8082111561497e575f80fd5b818501915085601f830112614991575f80fd5b815160206149a1614900836148be565b82815260059290921b840181019181810190898411156149bf575f80fd5b948201945b838610156149e4576149d586614817565b825294820194908201906149c4565b918801519196509093505050808211156149fc575f80fd5b50614a09858286016148e1565b9150509250929050565b600682810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffff800000000000008112667fffffffffffff8213171561075c5761075c614334565b5f8160060b8360060b80614a6e57614a6e614654565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffff8000000000000083141615614ac257614ac2614334565b90059392505050565b5f8260060b80614add57614add614654565b808360060b0791505092915050565b5f8160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008103614b2057614b20614334565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b77ffffffffffffffffffffffffffffffffffffffffffffffff828116828216818102831692918115828504821417614b8257614b82614334565b50505092915050565b5f77ffffffffffffffffffffffffffffffffffffffffffffffff80841680614bb557614bb5614654565b9216919091049291505056fea26469706673582212203333cfba9f7e641ab36d5960f3bde320d58819facd665e7d383b5e179ed54a9064736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c4000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d40000000000000000000000004d0edd347fb1fa21589c1e109b3474924be87636000000000000000000000000420000000000000000000000000000000000000600000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb566
-----Decoded View---------------
Arg [0] : directory (address): 0x0061E516886A0540F63157f112C0588eE0651dCF
Arg [1] : permissions (address): 0x04fD6913d6c32D8C216e153a43C04b1857a7793d
Arg [2] : prices (address): 0x9b90E507cF6B7eB681A506b111f6f50245e614c4
Arg [3] : projects (address): 0x885f707EFA18D2cb12f05a3a8eBA6B4B26c8c1D4
Arg [4] : tokens (address): 0x4d0Edd347FB1fA21589C1E109B3474924BE87636
Arg [5] : weth (address): 0x4200000000000000000000000000000000000006
Arg [6] : factory (address): 0x33128a8fC17869897dcE68Ed026d694621f6FDfD
Arg [7] : trustedForwarder (address): 0xc29d6995AB3b0Df4650aD643adeAc55e7acBb566
-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000061e516886a0540f63157f112c0588ee0651dcf
Arg [1] : 00000000000000000000000004fd6913d6c32d8c216e153a43c04b1857a7793d
Arg [2] : 0000000000000000000000009b90e507cf6b7eb681a506b111f6f50245e614c4
Arg [3] : 000000000000000000000000885f707efa18d2cb12f05a3a8eba6b4b26c8c1d4
Arg [4] : 0000000000000000000000004d0edd347fb1fa21589c1e109b3474924be87636
Arg [5] : 0000000000000000000000004200000000000000000000000000000000000006
Arg [6] : 00000000000000000000000033128a8fc17869897dce68ed026d694621f6fdfd
Arg [7] : 000000000000000000000000c29d6995ab3b0df4650ad643adeac55e7acbb566
🤖 Code Reader
Generate instant answers for your smart contract questions using Al Models. Read more.
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

