UNPKG

@allo-team/allo-v2-sdk

Version:
1,190 lines (1,189 loc) 71 kB
export const abi = [ { inputs: [ { internalType: "address", name: "_allo", type: "address", }, { internalType: "string", name: "_name", type: "string", }, ], stateMutability: "nonpayable", type: "constructor", }, { inputs: [], name: "ALLOCATION_ACTIVE", type: "error", }, { inputs: [], name: "ALLOCATION_NOT_ACTIVE", type: "error", }, { inputs: [], name: "ALLOCATION_NOT_ENDED", type: "error", }, { inputs: [], name: "ALREADY_INITIALIZED", type: "error", }, { inputs: [], name: "AMOUNT_MISMATCH", type: "error", }, { inputs: [], name: "ANCHOR_ERROR", type: "error", }, { inputs: [], name: "ARRAY_MISMATCH", type: "error", }, { inputs: [], name: "INVALID", type: "error", }, { inputs: [], name: "INVALID_ADDRESS", type: "error", }, { inputs: [], name: "INVALID_FEE", type: "error", }, { inputs: [], name: "INVALID_METADATA", type: "error", }, { inputs: [], name: "INVALID_REGISTRATION", type: "error", }, { inputs: [], name: "IS_APPROVED_STRATEGY", type: "error", }, { inputs: [], name: "MISMATCH", type: "error", }, { inputs: [], name: "NONCE_NOT_AVAILABLE", type: "error", }, { inputs: [], name: "NOT_APPROVED_STRATEGY", type: "error", }, { inputs: [], name: "NOT_ENOUGH_FUNDS", type: "error", }, { inputs: [], name: "NOT_IMPLEMENTED", type: "error", }, { inputs: [], name: "NOT_INITIALIZED", type: "error", }, { inputs: [], name: "NOT_PENDING_OWNER", type: "error", }, { inputs: [], name: "POOL_ACTIVE", type: "error", }, { inputs: [], name: "POOL_INACTIVE", type: "error", }, { inputs: [], name: "RECIPIENT_ALREADY_ACCEPTED", type: "error", }, { inputs: [ { internalType: "address", name: "recipientId", type: "address", }, ], name: "RECIPIENT_ERROR", type: "error", }, { inputs: [], name: "RECIPIENT_NOT_ACCEPTED", type: "error", }, { inputs: [], name: "REGISTRATION_ACTIVE", type: "error", }, { inputs: [], name: "REGISTRATION_NOT_ACTIVE", type: "error", }, { inputs: [], name: "UNAUTHORIZED", type: "error", }, { inputs: [], name: "ZERO_ADDRESS", type: "error", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipientId", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, { indexed: false, internalType: "address", name: "token", type: "address", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "Allocated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipientId", type: "address", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "Canceled", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "sender", type: "address", }, { indexed: false, internalType: "int96", name: "flowRate", type: "int96", }, ], name: "Distributed", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipientId", type: "address", }, { indexed: false, internalType: "address", name: "recipientAddress", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "Distributed", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "poolId", type: "uint256", }, { indexed: false, internalType: "bytes", name: "data", type: "bytes", }, ], name: "Initialized", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "minPassportScore", type: "uint256", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "MinPassportScoreUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "bool", name: "active", type: "bool", }, ], name: "PoolActive", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipientId", type: "address", }, { indexed: false, internalType: "bytes", name: "data", type: "bytes", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "Registered", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipientId", type: "address", }, { indexed: false, internalType: "enum IStrategy.Status", name: "status", type: "uint8", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "Reviewed", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint64", name: "registrationStartTime", type: "uint64", }, { indexed: false, internalType: "uint64", name: "registrationEndTime", type: "uint64", }, { indexed: false, internalType: "uint64", name: "allocationStartTime", type: "uint64", }, { indexed: false, internalType: "uint64", name: "allocationEndTime", type: "uint64", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "TimestampsUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipientId", type: "address", }, { indexed: false, internalType: "uint256", name: "totalUnits", type: "uint256", }, ], name: "TotalUnitsUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipientId", type: "address", }, { indexed: false, internalType: "bytes", name: "data", type: "bytes", }, { indexed: false, internalType: "address", name: "sender", type: "address", }, ], name: "UpdatedRegistration", type: "event", }, { inputs: [], name: "NATIVE", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_previousFlowrate", type: "uint256", }, { internalType: "uint256", name: "_newFlowRate", type: "uint256", }, ], name: "adjustWeightings", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes", name: "_data", type: "bytes", }, { internalType: "address", name: "_sender", type: "address", }, ], name: "allocate", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [], name: "allocationEndTime", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "allocationStartTime", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "allocationSuperToken", outputs: [ { internalType: "contract ISuperToken", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address[]", name: "_recipientIds", type: "address[]", }, ], name: "cancelRecipients", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "closeStream", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address[]", name: "_recipientIds", type: "address[]", }, { internalType: "bytes", name: "_data", type: "bytes", }, { internalType: "address", name: "_sender", type: "address", }, ], name: "distribute", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "gdaPool", outputs: [ { internalType: "contract ISuperfluidPool", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getAllo", outputs: [ { internalType: "contract IAllo", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address[]", name: "_recipientIds", type: "address[]", }, { internalType: "bytes[]", name: "_data", type: "bytes[]", }, ], name: "getPayouts", outputs: [ { components: [ { internalType: "address", name: "recipientAddress", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], internalType: "struct IStrategy.PayoutSummary[]", name: "", type: "tuple[]", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getPoolAmount", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getPoolId", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_recipientId", type: "address", }, ], name: "getRecipient", outputs: [ { components: [ { internalType: "bool", name: "useRegistryAnchor", type: "bool", }, { internalType: "address", name: "recipientAddress", type: "address", }, { internalType: "enum IStrategy.Status", name: "recipientStatus", type: "uint8", }, { components: [ { internalType: "uint256", name: "protocol", type: "uint256", }, { internalType: "string", name: "pointer", type: "string", }, ], internalType: "struct Metadata", name: "metadata", type: "tuple", }, { internalType: "contract RecipientSuperApp", name: "superApp", type: "address", }, ], internalType: "struct SQFSuperFluidStrategy.Recipient", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_superApp", type: "address", }, ], name: "getRecipientId", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_recipientId", type: "address", }, ], name: "getRecipientStatus", outputs: [ { internalType: "enum IStrategy.Status", name: "", type: "uint8", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getStrategyId", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_recipientId", type: "address", }, ], name: "getSuperApp", outputs: [ { internalType: "contract RecipientSuperApp", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_amount", type: "uint256", }, ], name: "increasePoolAmount", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "initialSuperAppBalance", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_poolId", type: "uint256", }, { internalType: "bytes", name: "_data", type: "bytes", }, ], name: "initialize", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "isPoolActive", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_allocator", type: "address", }, ], name: "isValidAllocator", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "metadataRequired", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "minPassportScore", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "passportDecoder", outputs: [ { internalType: "contract IGitcoinPassportDecoder", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "poolSuperToken", outputs: [ { internalType: "contract ISuperToken", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "recipientFlowRate", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "recipients", outputs: [ { internalType: "bool", name: "useRegistryAnchor", type: "bool", }, { internalType: "address", name: "recipientAddress", type: "address", }, { internalType: "enum IStrategy.Status", name: "recipientStatus", type: "uint8", }, { components: [ { internalType: "uint256", name: "protocol", type: "uint256", }, { internalType: "string", name: "pointer", type: "string", }, ], internalType: "struct Metadata", name: "metadata", type: "tuple", }, { internalType: "contract RecipientSuperApp", name: "superApp", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes", name: "_data", type: "bytes", }, { internalType: "address", name: "_sender", type: "address", }, ], name: "registerRecipient", outputs: [ { internalType: "address", name: "recipientId", type: "address", }, ], stateMutability: "payable", type: "function", }, { inputs: [], name: "registrationEndTime", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "registrationStartTime", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address[]", name: "_recipientIds", type: "address[]", }, { internalType: "enum IStrategy.Status[]", name: "_recipientStatuses", type: "uint8[]", }, ], name: "reviewRecipients", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "superApps", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "superfluidHost", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, ], name: "totalUnitsByRecipient", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_minPassportScore", type: "uint256", }, ], name: "updateMinPassportScore", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint64", name: "_registrationStartTime", type: "uint64", }, { internalType: "uint64", name: "_registrationEndTime", type: "uint64", }, { internalType: "uint64", name: "_allocationStartTime", type: "uint64", }, { internalType: "uint64", name: "_allocationEndTime", type: "uint64", }, ], name: "updatePoolTimestamps", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "useRegistryAnchor", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_token", type: "address", }, { internalType: "uint256", name: "_amount", type: "uint256", }, ], name: "withdraw", outputs: [], stateMutability: "nonpayable", type: "function", }, ] as const; export const bytecode = "0x60c06040523480156200001157600080fd5b5060405162006076380380620060768339810160408190526200003491620000bf565b6001600160a01b03821660805260405182908290620000589082906020016200019a565b60408051601f19818403018152919052805160209091012060a0525050600160035550620001cf9050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620000b65781810151838201526020016200009c565b50506000910152565b60008060408385031215620000d357600080fd5b82516001600160a01b0381168114620000eb57600080fd5b60208401519092506001600160401b03808211156200010957600080fd5b818501915085601f8301126200011e57600080fd5b81518181111562000133576200013362000083565b604051601f8201601f19908116603f011681019083821181831017156200015e576200015e62000083565b816040528281528860208487010111156200017857600080fd5b6200018b83602083016020880162000099565b80955050505050509250929050565b6020815260008251806020840152620001bb81604085016020870162000099565b601f01601f19169190910160400192915050565b60805160a051615e65620002116000396000610480015260008181610303015281816114d4015281816116400152818161187601526119a10152615e656000f3fe608060405260043610620002885760003560e01c80636ceed0ef1162000164578063d237884e11620000d6578063eb8203121162000095578063ef2920fc116200006c578063ef2920fc14620008b7578063f3fef3a314620008ce578063f5b0dfb714620008f357600080fd5b8063eb8203121462000835578063ed42489a146200086d578063edd146cc146200089257600080fd5b8063d237884e1462000775578063d2e17f591462000797578063df868ed314620007c0578063dff7d2c714620007d8578063eb11af93146200080157600080fd5b8063a0cf0aea1162000123578063a0cf0aea14620006a4578063b2b878d014620006ce578063b63b6fe41462000702578063c40c455d146200071a578063cb0e85a6146200075457600080fd5b80636ceed0ef14620006015780637f83598314620006235780639af5c09d14620006485780639c0b5f99146200066a5780639dad9382146200068c57600080fd5b80633c73567d11620001fe5780634d31d08711620001bd5780634d31d08714620004fe57806357089739146200053457806362812a39146200055057806363bbd79814620005845780636acd5bef14620005c157600080fd5b80633c73567d146200042657806340e270f3146200044b57806342fda9c714620004705780634533d67814620004a55780634ab4ba4214620004e757600080fd5b80632143e92f116200024b5780632143e92f146200038a5780632bbe0cae14620003af5780632c64ef3414620003c657806338fff2d014620003f75780633a1bce35146200040e57600080fd5b806302aed72e146200028d5780630a6f0ee914620002cc57806315cc481e14620002f35780631724c4ac146200032857806319ba46601462000368575b600080fd5b3480156200029a57600080fd5b50600754620002af906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620002d957600080fd5b50620002f1620002eb3660046200320a565b62000918565b005b3480156200030057600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000620002af565b3480156200033557600080fd5b5062000359620003473660046200328a565b600f6020526000908152604090205481565b604051908152602001620002c3565b3480156200037557600080fd5b50600854620002af906001600160a01b031681565b3480156200039757600080fd5b50620002f1620003a9366004620032c7565b6200093e565b620002af620003c03660046200332c565b6200095f565b348015620003d357600080fd5b5062000359620003e53660046200328a565b60106020526000908152604090205481565b3480156200040457600080fd5b5060015462000359565b3480156200041b57600080fd5b5062000359600a5481565b3480156200043357600080fd5b50620002f162000445366004620033d1565b6200098a565b3480156200045857600080fd5b50620002f16200046a36600462003416565b62000b2f565b3480156200047d57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000062000359565b348015620004b257600080fd5b50600b54620004ce90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001620002c3565b348015620004f457600080fd5b5060025462000359565b3480156200050b57600080fd5b50620005236200051d3660046200328a565b62000d28565b6040519015158152602001620002c3565b3480156200054157600080fd5b50600c54620005239060ff1681565b3480156200055d57600080fd5b50620005756200056f3660046200328a565b62000d35565b604051620002c39190620034e7565b3480156200059157600080fd5b50620002af620005a33660046200328a565b6001600160a01b039081166000908152600e60205260409020541690565b348015620005ce57600080fd5b50620002af620005e03660046200328a565b6001600160a01b039081166000908152600d60205260409020600301541690565b3480156200060e57600080fd5b50600654620002af906001600160a01b031681565b3480156200063057600080fd5b50620002f16200064236600462003557565b62000d4a565b3480156200065557600080fd5b50600b54620004ce906001600160401b031681565b3480156200067757600080fd5b50600554620002af906001600160a01b031681565b3480156200069957600080fd5b50620002f1620010c3565b348015620006b157600080fd5b50620002af73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b348015620006db57600080fd5b50620006f3620006ed366004620035c9565b6200118e565b604051620002c39190620036ac565b3480156200070f57600080fd5b506200035960045481565b3480156200072757600080fd5b50620002af620007393660046200328a565b600e602052600090815260409020546001600160a01b031681565b3480156200076157600080fd5b50600c546200052390610100900460ff1681565b3480156200078257600080fd5b50600954620002af906001600160a01b031681565b348015620007a457600080fd5b50600b54620004ce90600160801b90046001600160401b031681565b348015620007cd57600080fd5b5062000523620012e3565b348015620007e557600080fd5b50600b54620004ce90600160401b90046001600160401b031681565b3480156200080e57600080fd5b5062000826620008203660046200328a565b620012f4565b604051620002c3919062003706565b3480156200084257600080fd5b506200085a620008543660046200328a565b62001301565b604051620002c395949392919062003716565b3480156200087a57600080fd5b50620002f16200088c36600462003767565b620013fa565b3480156200089f57600080fd5b50620002f1620008b136600462003781565b62001447565b620002f1620008c83660046200332c565b620017d2565b348015620008db57600080fd5b50620002f1620008ed366004620037cb565b620017f6565b3480156200090057600080fd5b50620002f16200091236600462003767565b6200183f565b620009226200186b565b6200092c620018b7565b62000939838383620018db565b505050565b336200094a8162001977565b620009588585858562001a2d565b5050505050565b60006200096b6200186b565b62000975620018b7565b62000981838362001ba5565b90505b92915050565b33620009968162001977565b620009a062001ea9565b8160005b8181101562000958576000858583818110620009c457620009c4620037fa565b9050602002016020810190620009db91906200328a565b6001600160a01b0381166000908152600d602052604081209192508154600160a81b900460ff16600681111562000a165762000a1662003439565b148062000a42575060068154600160a81b900460ff16600681111562000a405762000a4062003439565b145b1562000a715760405163f4a513b960e01b81526001600160a01b03831660048201526024015b60405180910390fd5b805460ff60a81b1916600360a91b1781556003810180546001600160a01b03198082169092556001600160a01b039081166000818152600e6020908152604080832080549096169095558684168252601090529283208390558354909262000ae29286926101009004169062001edc565b6040513381526001600160a01b038416907fd08928d04a8f87ca2e3a2a6d3367f3272b6ceae11f45c1aa86bed323469263019060200160405180910390a2836001019350505050620009a4565b336000908152600e60205260409020546001600160a01b03168062000b675760405163075fd2b160e01b815260040160405180910390fd5b6001600160a01b0381166000908152600f602052604081205462000b8e906103e862003826565b90508360000362000bd157600262000ba68462001fbe565b62000bb18362001fbe565b62000bbd919062003840565b62000bc9919062003953565b905062000c48565b8260000362000bfe57600262000be78562001fbe565b62000bf28362001fbe565b62000bbd919062003964565b600262000c0b8562001fbe565b62000c168562001fbe565b62000c218462001fbe565b62000c2d919062003840565b62000c39919062003964565b62000c45919062003953565b90505b62000c566103e8826200397a565b6001600160a01b038084166000908152600d6020526040902080549293509162000c899185916101009004168462001edc565b6001600160a01b0383166000908152600f6020908152604080832085905560109091529020548562000cbc868362003840565b62000cc8919062003964565b6001600160a01b038516600081815260106020526040908190209290925590517f35822de50167c622cbe7675e33a2f5cd6f10d628dec698b6401d2792486cec299062000d189086815260200190565b60405180910390a2505050505050565b600062000984826200204a565b62000d3f62002fdd565b6200098482620020dd565b3362000d568162001977565b62000d6062001ea9565b8382811462000d8257604051637fcce2a960e01b815260040160405180910390fd5b60005b81811015620010ba57600085858381811062000da55762000da5620037fa565b905060200201602081019062000dbc91906200399d565b9050600088888481811062000dd55762000dd5620037fa565b905060200201602081019062000dec91906200328a565b6001600160a01b0381166000908152600d6020526040902090915060018154600160a81b900460ff16600681111562000e295762000e2962003439565b14158062000e6d5750600283600681111562000e495762000e4962003439565b1415801562000e6d5750600383600681111562000e6a5762000e6a62003439565b14155b1562000e985760405163f4a513b960e01b81526001600160a01b038316600482015260240162000a68565b80548390829060ff60a81b1916600160a81b83600681111562000ebf5762000ebf62003439565b0217905550816001600160a01b03167f094d003df6c0153ac428d1a45e5827aa8e2aa00c6dbbc96a2dbb9a682115d837843360405162000f01929190620039c0565b60405180910390a2600283600681111562000f205762000f2062003439565b03620010ab5780546005546006546040516000936001600160a01b036101009091048116933093908216929116906001908190819062000f609062003028565b6001600160a01b039788168152958716602087015293861660408601529490911660608401521515608083015291151560a082015290151560c082015261010060e0820181905260009082015261012001604051809103906000f08015801562000fce573d6000803e3d6000fd5b506006546004805460405163a9059cbb60e01b81526001600160a01b03808616938201939093526024810191909152929350169063a9059cbb906044016020604051808303816000875af11580156200102b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620010519190620039fc565b5081546200107190849061010090046001600160a01b0316600162001edc565b6001600160a01b039081166000818152600e6020526040902080549285166001600160a01b03199384161790556003830180549092161790555b83600101935050505062000d85565b50505050505050565b33620010cf8162001977565b600854604080518082019091526002815261060f60f31b60208201526007546200110e926001600160a01b039182169230929091169060009062002233565b506007546040516370a0823160e01b81523060048201526200118b916001600160a01b031690339082906370a0823190602401602060405180830381865afa1580156200115f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001185919062003a1a565b6200239b565b50565b81518151606091908114620011b657604051633da4c02b60e11b815260040160405180910390fd5b6000816001600160401b03811115620011d357620011d362003036565b6040519080825280602002602001820160405280156200121a57816020015b6040805180820190915260008082526020820152815260200190600190039081620011f25790505b50905060005b82811015620012da57620012b1868281518110620012425762001242620037fa565b60200260200101518683815181106200125f576200125f620037fa565b505060408051808201825260008082526020918201819052825180840184526001600160a01b03948516808352600d845284832054610100900490951681529381526010825291909120549082015290565b828281518110620012c657620012c6620037fa565b602090810291909101015260010162001220565b50949350505050565b6000620012ef620023da565b905090565b600062000984826200241f565b600d6020908152600091825260409182902080548351808501909452600182018054855260028301805460ff808516976001600160a01b0361010087041697600160a81b9096049091169594909392908401916200135f9062003a34565b80601f01602080910402602001604051908101604052809291908181526020018280546200138d9062003a34565b8015620013de5780601f10620013b257610100808354040283529160200191620013de565b820191906000526020600020905b815481529060010190602001808311620013c057829003601f168201915b505050919092525050506003909101546001600160a01b031685565b33620014068162001977565b600a829055604080518381523360208201527fdd18fbc43ebc7f26926b0335e04b16bf1a38cbd6eda46bf0e3cf4ef89b061628910160405180910390a15050565b6000818060200190518101906200145f919062003a8a565b90506200146c8362002436565b8051600c805460208085015161ffff1990921693151561ff00191693909317610100911515919091021790556060820151600580546001600160a01b0319166001600160a01b03928316179055610120830151600a5560408051635ab1bd5360e01b815290517f000000000000000000000000000000000000000000000000000000000000000090921692635ab1bd53926004808401938290030181865afa1580156200151d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001543919062003b6d565b600c805475ffffffffffffffffffffffffffffffffffffffff00001916620100006001600160a01b0393841602179055606082015116158062001591575060808101516001600160a01b0316155b80620015a8575060608101516001600160a01b0316155b80620015bf575060408101516001600160a01b0316155b15620015de5760405163538ba4f960e01b815260040160405180910390fd5b8061014001516000036200160557604051637fcce2a960e01b815260040160405180910390fd5b6080810151600680546001600160a01b0319166001600160a01b0392831617905560015460405163068bcd8d60e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000009091169063068bcd8d90602401600060405180830381865afa1580156200168a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620016b4919081019062003c5b565b604090810151600780546001600160a01b0319166001600160a01b039283161790556006548251631dce337960e31b8152925191169163ee719bc89160048083019260209291908290030181865afa15801562001715573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200173b919062003b6d565b50610140810151600455604080820151600980546001600160a01b0319166001600160a01b03928316179055600754825180840190935260008352600160208401526200178d92911690309062002489565b600860006101000a8154816001600160a01b0302191690836001600160a01b03160217905550620009398160a001518260c001518360e0015184610100015162001a2d565b620017dc6200186b565b620017e6620018b7565b620017f2828262002531565b5050565b33620018028162001977565b6007546001600160a01b03908116908416036200183257604051637fcce2a960e01b815260040160405180910390fd5b620009398333846200239b565b620018496200186b565b80600260008282546200185d919062003840565b909155506200118b90508181565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620018b55760405163075fd2b160e01b815260040160405180910390fd5b565b600154600003620018b557604051630f68fe6360e21b815260040160405180910390fd5b80620018e78162001977565b620018f1620026e0565b60008380602001905181019062001909919062003d2d565b6008546007549192506200192d916001600160a01b03908116913091168462002714565b50604051600b82900b81526001600160a01b038416907f9772934ae0adf1472a2378a77824461cb25bc02429d3b2403f4c492a4d1187eb9060200160405180910390a25050505050565b6001546040516329e40d4b60e01b815260048101919091526001600160a01b0382811660248301527f000000000000000000000000000000000000000000000000000000000000000016906329e40d4b90604401602060405180830381865afa158015620019e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001a0f9190620039fc565b6200118b5760405163075fd2b160e01b815260040160405180910390fd5b836001600160401b031642118062001a565750826001600160401b0316846001600160401b0316115b8062001a735750816001600160401b0316846001600160401b0316115b8062001a905750806001600160401b0316826001600160401b0316115b8062001aad5750806001600160401b0316836001600160401b0316115b1562001acc57604051637fcce2a960e01b815260040160405180910390fd5b600b80546001600160401b03838116600160c01b90810277ffffffffffffffffffffffffffffffffffffffffffffffff878416600160801b908102919091166001600160801b038a8616600160401b9081026fffffffffffffffffffffffffffffffff199098168d88161797909717161791909117948590556040805186851681529486048416602086015290850483169084015290920490911660608201523360808201527fcb0fb7a7b87db2f472ee8977444cfdbc51993ce660aca27a5969a724fae6dcf39060a00160405180910390a150505050565b600062001bb162002737565b600080600062001bd4604051806040016040528060008152602001606081525090565b600c5460ff161562001c2d578680602001905181019062001bf6919062003d4b565b9196509450905062001c09858762002783565b62001c275760405163075fd2b160e01b815260040160405180910390fd5b62001ca0565b8680602001905181019062001c43919062003d4b565b9095509093506001600160a01b0384161515925090508162001c66578562001c68565b825b945081801562001c81575062001c7f858762002783565b155b1562001ca05760405163075fd2b160e01b815260040160405180910390fd5b600c54610100900460ff16801562001cc55750602081015151158062001cc557508051155b1562001ce45760405163c19e07c560e01b815260040160405180910390fd5b6001600160a01b03841662001d185760405163f4a513b960e01b81526001600160a01b038616600482015260240162000a68565b6001600160a01b038086166000908152600d6020908152604090912080549287166101000274ffffffffffffffffffffffffffffffffffffffff001990931692909217825582516001830190815590830151839190600284019062001d7e908262003e08565b5050600c5460ff16905062001d94578262001d97565b60015b815460ff19169015151780825560ff600160a81b90910416600081600681111562001dc65762001dc662003439565b0362001e2a57815460ff60a81b1916600160a81b1782556040516001600160a01b038816907fa197306e3dd5494a61a695381aa809a53b8e377a685e84e404a85d5a8da6cc629062001e1c908c908c9062003ed4565b60405180910390a262001e9d565b600181600681111562001e415762001e4162003439565b0362001e8457866001600160a01b03167faf5977db3aa7e6fc7d05e21c791ebd214afa76da27c8d8ddc8e4a9f742d7b2368a8a60405162001e1c92919062003ed4565b604051637fcce2a960e01b815260040160405180910390fd5b50505050505092915050565b600b54600160c01b90046001600160401b0316421115620018b55760405162b828c960e81b815260040160405180910390fd5b600854604051631b16777760e01b81526001600160a01b0384811660048301526001600160801b038416602483015290911690631b167777906044016020604051808303816000875af115801562001f38573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f5e9190620039fc565b506001600160a01b0383166000818152600f60209081526040918290206001600160801b0385169081905591519182527f35822de50167c622cbe7675e33a2f5cd6f10d628dec698b6401d2792486cec29910160405180910390a2505050565b70ffffffffffffffffffffffffffffffffff811160071b81811c68ffffffffffffffffff1060061b1781811c64ffffffffff1060051b1781811c62ffffff1060041b1781811c620100000160b5600192831c1b0260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b600954604051630d47875d60e41b81526001600160a01b038381166004830152600092839291169063d47875d090602401602060405180830381865afa15801562002099573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020bf919062003a1a565b9050600a548110620020d45750600192915050565b50600092915050565b620020e762002fdd565b6001600160a01b038083166000908152600d6020908152604091829020825160a081018452815460ff80821615158352610100820490961693820193909352939092840191600160a81b900416600681111562002148576200214862003439565b60068111156200215c576200215c62003439565b815260200160018201604051806040016040529081600082015481526020016001820180546200218c9062003a34565b80601f0160208091040260200160405190810160405280929190818152602001828054620021ba9062003a34565b80156200220b5780601f10620021df576101008083540402835291602001916200220b565b820191906000526020600020905b815481529060010190602001808311620021ed57829003601f168201915b505050919092525050508152600391909101546001600160a01b031660209091015292915050565b6000806000620022438862002891565b91509150816001600160a01b03166339255d5b82836001600160a01b0316635a6c6dbc8c8c8c8c60006001600160401b0381111562002286576200228662003036565b6040519080825280601f01601f191660200182016040528015620022b1576020820181803683370190505b50604051602401620022c895949392919062003f01565b60408051808303601f1901815291815260208201805160e094851b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116179052519185901b7fffffffff000000000000000000000000000000000000000000000000000000001682526200234293925090899060040162003f4b565b6000604051808303816000875af115801562002362573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200238c919081019062003f8d565b50600198975050505050505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b03841601620023cd5762000939828262002a66565b6200093983838362002a83565b600b54600090426001600160401b03909116118015906200240d5750600b54600160401b90046001600160401b03164211155b15620024195750600190565b50600090565b60006200242c82620020dd565b6040015192915050565b620024406200186b565b60015415620024625760405163439a74c960e01b815260040160405180910390fd5b806000036200248457604051637fcce2a960e01b815260040160405180910390fd5b600155565b600080620024978562002891565b604051630779d36560e01b81526001600160a01b03888116600483015287811660248301528651151560448301526020870151151560648301529193509083169150630779d365906084016020604051808303816000875af115801562002502573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002528919062003b6d565b95945050505050565b6200253b62002ad3565b62002546816200204a565b620025645760405163075fd2b160e01b815260040160405180910390fd5b600080838060200190518101906200257d919062003fda565b6001600160a01b0382166000908152600d60205260409020919350915060028154600160a81b900460ff166006811115620025bc57620025bc62003439565b141580620025d5575060038101546001600160a01b0316155b15620026005760405163f4a513b960e01b81526001600160a01b038416600482015260240162000a68565b60038101546006546001600160a01b03918216916000918291620026279116888562002b24565b50509150915080600b0b600014806200263e575081155b1562002665576006546200265e906001600160a01b031688858862002bcb565b5062002681565b6006546200267f906001600160a01b031688858862002bee565b505b60065460408051600b88900b81526001600160a01b039283166020820152898316818301529051918816917f463ffc2cf8b1596445c417388ed30e53eb67cf6668cb2be7f0addf8a78c8441b9181900360600190a25050505050505050565b600b54600160401b90046001600160401b0316421015620018b5576040516317338e1560e31b815260040160405180910390fd5b604080516000808252602082019092526200252890869086908690869062002233565b600b54426001600160401b039091161180620027645750600b54600160401b90046001600160401b031642115b15620018b557604051635b04f6ad60e11b815260040160405180910390fd5b600c5460405163dd93da4360e01b81526001600160a01b0384811660048301526000928392620100009091049091169063dd93da4390602401600060405180830381865afa158015620027da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262002804919081019062004014565b600c548151604051635e8a791560e01b815260048101919091526001600160a01b0386811660248301529293506201000090910490911690635e8a791590604401602060405180830381865afa15801562002863573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620028899190620039fc565b949350505050565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fc36f6c05164a669ecb6da53e218d77ae44d51cfc99f91e5a125a18de0949bee4546001600160a01b03811662002a2f576001600160a01b0382166200295b57826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002932573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002958919062003b6d565b91505b604051635b69006f60e11b81527fdfd8ece9bfbcb8c5c540edb935641f63d67686490a1ab97f000288759f30a94660048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa158015620029c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029e6919062003b6d565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fc36f6c05164a669ecb6da53e218d77ae44d51cfc99f91e5a125a18de0949bee4555b6001600160a01b03821662002a485762002a48620040e9565b6001600160a01b03811662002a615762002a61620040e9565b915091565b60008060008084865af1620017f25763b12d13eb6000526004601cfd5b81601452806034526fa9059cbb00000000000000000000000060005260206000604460106000875af13d15600160005114171662002ac9576390b8ec186000526004601cfd5b6000603452505050565b600b5442600160801b9091046001600160401b0316118062002b065750600b54600160c01b90046001600160401b031642115b15620018b55760405162b828c960e81b815260040160405180910390fd5b600080600080600062002b378862002c11565b604051631cd43d1160e31b81526001600160a01b038b811660048301528a811660248301528981166044830152919350908316915063e6a1e88890606401608060405180830381865afa15801562002b93573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002bb99190620040ff565b929b919a509850909650945050505050565b604080516000808252602082019092526200252890869086908690869062002d81565b604080516000808252602082019092526200252890869086908690869062002dd4565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b03811662002a2f576001600160a01b03821662002cdb57826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002cb2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002cd8919062003b6d565b91505b604051635b69006f60e11b81527fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd360048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa15801562002d40573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002d66919062003b6d565b90506001600160a01b03821662002a485762002a48620040e9565b600080600062002d918862002e27565b91509150816001600160a01b03166339255d5b82836001600160a01b03166394229ecb8c8c8c8c60006001600160401b0381111562002286576200228662003036565b600080600062002de48862002e27565b91509150816001600160a01b03166339255d5b82836001600160a01b031663354b95908c8c8c8c60006001600160401b0381111562002286576200228662003036565b7f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea837547fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a546001600160a01b03811662002a2f576001600160a01b03821662002ef157826001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002ec8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002eee919062003b6d565b91505b604051635b69006f60e11b81527fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd360048201526001600160a01b0383169063b6d200de90602401602060405180830381865afa15801562002f56573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002f7c919062003b6d565b9050817f65599bf746e17a00ea62e3610586992d88101b78eec3cf380706621fb97ea83755807fb969d79d88acd02d04ed7ee7d43b949e7daf093d363abcfbbc43dfdfd1ce969a556001600160a01b03821662002a485762002a48620040e9565b6040805160a081018252600080825260208201819052909182019081526020016200301b604051806040016040528060008152602001606081525090565b8152600060209091015290565b611cf1806200413f83390190565b634e487b7160e01b600052604160045260246000fd5b60405161016081016001600160401b038111828210171562003072576200307262003036565b60405290565b60405160c081016001600160401b038111828210171562003072576200307262003036565b604051601f8201601f191681016001600160401b0381118282101715620030c857620030c862003036565b604052919050565b60006001600160401b03821115620030ec57620030ec62003036565b5060051b60200190565b6001600160a01b03811681146200118b57600080fd5b600082601f8301126200311e57600080fd5b81356020620031376200313183620030d0565b6200309d565b82815260059290921b840181019181810190868411156200315757600080fd5b8286015b848110156200317f5780356200317181620030f6565b83529183019183016200315b565b509695505050505050565b60006001600160401b03821115620031a657620031a662003036565b50601f01601f191660200190565b600082601f830112620031c657600080fd5b8135620031d762003131826200318a565b818152846020838601011115620031ed57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156200322057600080fd5b83356001600160401b03808211156200323857600080fd5b62003246878388016200310c565b945060208601359150808211156200325d57600080fd5b506200326c86828701620031b4565b92505060408401356200327f81620030f6565b809150509250925092565b6000602082840312156200329d57600080fd5b8135620032aa81620030f6565b9392505050565b6001600160401b03811681146200118b57600080fd5b60008060008060808587031215620032de57600080fd5b8435620032eb81620032b1565b93506020850135620032fd81620032b1565b925060408501356200330f81620032b1565b915060608501356200332181620032b1565b939692955090935050565b600080604083850312156200334057600080fd5b82356001600160401b038111156200335757600080fd5b6200336585828601620031b4565b92505060208301356200337881620030f6565b809150509250929050565b60008083601f8401126200339657600080fd5b5081356001600160401b03811115620033ae57600080fd5b6020830191508360208260051b8501011115620033ca57600080fd5b9250929050565b60008060208385031215620033e557600080fd5b82356001600160401b03811115620033fc57600080fd5b6200340a8582860162003383565b90969095509350505050565b600080604083850312156200342a57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b600781106200346e57634e487b7160e01b600052602160045260246000fd5b9052565b60005b838110156200348f57818101518382015260200162003475565b50506000910152565b60008151808452620034b281602086016020860162003472565b601f01601f19169290920160200192915050565b80518252600060208201516040602085015262002889604085018262003498565b60208152815115156020820152600060208301516001600160a01b038082166040850152604085015191506200352160608501836200344f565b6060850151915060a060808501526200353e60c0850183620034c6565b91508060808601511660a0850152508091505092915050565b600080600080604085870312156200356e57600080fd5b8435