@lightlink-network/ll-sdk
Version:
[LightLink] Tools for working with LightLink
825 lines • 136 kB
JSON
{
"abi": [
{
"type": "function",
"name": "UPGRADE_INTERFACE_VERSION",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "calculateHeaderHash",
"inputs": [
{
"name": "_header",
"type": "tuple",
"internalType": "struct CanonicalStateChain.Header",
"components": [
{
"name": "epoch",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "l2Height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "prevHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "celestiaPointers",
"type": "tuple[]",
"internalType": "struct CanonicalStateChain.CelestiaPointer[]",
"components": [
{
"name": "height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "shareStart",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "shareLen",
"type": "uint16",
"internalType": "uint16"
}
]
}
]
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "pure"
},
{
"type": "function",
"name": "chain",
"inputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "chainHead",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "challenge",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getHead",
"inputs": [],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct CanonicalStateChain.Header",
"components": [
{
"name": "epoch",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "l2Height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "prevHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "celestiaPointers",
"type": "tuple[]",
"internalType": "struct CanonicalStateChain.CelestiaPointer[]",
"components": [
{
"name": "height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "shareStart",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "shareLen",
"type": "uint16",
"internalType": "uint16"
}
]
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getHeaderByHash",
"inputs": [
{
"name": "_hash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct CanonicalStateChain.Header",
"components": [
{
"name": "epoch",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "l2Height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "prevHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "celestiaPointers",
"type": "tuple[]",
"internalType": "struct CanonicalStateChain.CelestiaPointer[]",
"components": [
{
"name": "height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "shareStart",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "shareLen",
"type": "uint16",
"internalType": "uint16"
}
]
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getHeaderByNum",
"inputs": [
{
"name": "_index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct CanonicalStateChain.Header",
"components": [
{
"name": "epoch",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "l2Height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "prevHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "celestiaPointers",
"type": "tuple[]",
"internalType": "struct CanonicalStateChain.CelestiaPointer[]",
"components": [
{
"name": "height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "shareStart",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "shareLen",
"type": "uint16",
"internalType": "uint16"
}
]
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getL2Output",
"inputs": [
{
"name": "_index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct CanonicalStateChain.Output",
"components": [
{
"name": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "timestamp",
"type": "uint64",
"internalType": "uint64"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "headerMetadata",
"inputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "timestamp",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "publisher",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "initialize",
"inputs": [
{
"name": "_publisher",
"type": "address",
"internalType": "address"
},
{
"name": "_header",
"type": "tuple",
"internalType": "struct CanonicalStateChain.Header",
"components": [
{
"name": "epoch",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "l2Height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "prevHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "celestiaPointers",
"type": "tuple[]",
"internalType": "struct CanonicalStateChain.CelestiaPointer[]",
"components": [
{
"name": "height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "shareStart",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "shareLen",
"type": "uint16",
"internalType": "uint16"
}
]
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "maxPointers",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "owner",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "proxiableUUID",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "publisher",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "pushBlock",
"inputs": [
{
"name": "_header",
"type": "tuple",
"internalType": "struct CanonicalStateChain.Header",
"components": [
{
"name": "epoch",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "l2Height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "prevHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "outputRoot",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "celestiaPointers",
"type": "tuple[]",
"internalType": "struct CanonicalStateChain.CelestiaPointer[]",
"components": [
{
"name": "height",
"type": "uint64",
"internalType": "uint64"
},
{
"name": "shareStart",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "shareLen",
"type": "uint16",
"internalType": "uint16"
}
]
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "renounceOwnership",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "rollback",
"inputs": [
{
"name": "_blockNumber",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "_blockHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setChallengeContract",
"inputs": [
{
"name": "_challenge",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setMaxPointers",
"inputs": [
{
"name": "_maxPointers",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setPublisher",
"inputs": [
{
"name": "_publisher",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "startingTimestamp",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint64",
"internalType": "uint64"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "transferOwnership",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "upgradeToAndCall",
"inputs": [
{
"name": "newImplementation",
"type": "address",
"internalType": "address"
},
{
"name": "data",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "payable"
},
{
"type": "event",
"name": "BlockAdded",
"inputs": [
{
"name": "blockNumber",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "ChallengeChanged",
"inputs": [
{
"name": "challenge",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Initialized",
"inputs": [
{
"name": "version",
"type": "uint64",
"indexed": false,
"internalType": "uint64"
}
],
"anonymous": false
},
{
"type": "event",
"name": "OwnershipTransferred",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "PublisherChanged",
"inputs": [
{
"name": "publisher",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "RolledBack",
"inputs": [
{
"name": "blockNumber",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Upgraded",
"inputs": [
{
"name": "implementation",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "error",
"name": "AddressEmptyCode",
"inputs": [
{
"name": "target",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC1967InvalidImplementation",
"inputs": [
{
"name": "implementation",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "ERC1967NonPayable",
"inputs": []
},
{
"type": "error",
"name": "FailedInnerCall",
"inputs": []
},
{
"type": "error",
"name": "InvalidInitialization",
"inputs": []
},
{
"type": "error",
"name": "NotInitializing",
"inputs": []
},
{
"type": "error",
"name": "OwnableInvalidOwner",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "OwnableUnauthorizedAccount",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
]
},
{
"type": "error",
"name": "UUPSUnauthorizedCallContext",
"inputs": []
},
{
"type": "error",
"name": "UUPSUnsupportedProxiableUUID",
"inputs": [
{
"name": "slot",
"type": "bytes32",
"internalType": "bytes32"
}
]
}
],
"bytecode": {
"object": "0x60a0806040523461002a57306080526119af90816100308239608051818181610c1f0152610cfe0152f35b600080fdfe608060409080825260048036101561001657600080fd5b600092833560e01c9283628f51c6146114705750826328a8d0e41461142f57826334c9bca5146111f557826341d3ecd814610f265782634411470314610ee95782634f1ef28614610c8357826352d1902d14610c0b5782635852cc0c14610be3578263691bc74a14610bc15782636d1005c514610b8c578263715018a614610b225782637255f37e14610a2e57826388786272146109f55782638c72c54e146109cd5782638da5cb5b146109975782638f74b7391461052d578263a25ae557146104bb578263ad3cb1cc14610441578263b37256b9146103d9578263b76971ce146102eb578263cab6366114610285578263d2ef739814610258578263dc281aff1461015c57505063f2fde38b1461012d57600080fd5b346101595760203660031901126101595761015661014961148c565b6101516118a5565b611831565b80f35b80fd5b9091503461025457826003193601126102545782906101796117ba565b5060025482526020926006845281832054835283528082209281519261019e846114d8565b8454916001600160401b0383818095168752851c168186015260036001966001810154868801526002810154606088015201908154926101dd84611543565b946101ea8751968761150e565b84865282860193825282822091935b85851061021857608089018790528751806102148b82611682565b0390f35b898481928a51610227816114f3565b61ffff8c62ffffff895480928a821686521c168584015260581c168c8201528152019301940193916101f9565b8280fd5b83903461028157816003193601126102815760015490516001600160a01b039091168152602090f35b5080fd5b83346101595760203660031901126101595761029f61148c565b6102a76118a5565b81546001600160a01b0319166001600160a01b039190911690811782557f55eb99d77b0e1ed261c0a8d11f026f811b8af01455a2b45189bcc87b93dfbbb78280a280f35b9091503461025457602091826003193601126103d55761030c9392936117ba565b5080358352835280822092815192610323846114d8565b8454916001600160401b0383818095168752851c1681860152600360019660018101548688015260028101546060880152019081549261036284611543565b9461036f8751968761150e565b84865282860193825282822091935b85851061039957608089018790528751806102148b82611682565b898481928a516103a8816114f3565b61ffff8c62ffffff895480928a821686521c168584015260581c168c82015281520193019401939161037e565b8380fd5b8334610159576020366003190112610159576103f361148c565b6103fb6118a5565b600180546001600160a01b0319166001600160a01b039290921691821790557fe06eac444661557e3ac16a5251a66b82c3f985c3e3b15eac7ea4b4fac6eeac2c8280a280f35b839034610281578160031936011261028157805161045e816114a7565b60058152602090640352e302e360dc1b6020820152825193849260208452825192836020860152825b8481106104a557505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610487565b838234610281576020908160031936011261025457828285516104dd816114a7565b828152015280358352600682528383205483528152826002818420015492600583526001600160401b03918291205416828551610519816114a7565b858152019081528451938452511690820152f35b90915034610254576020916003198381360112610993578135916001600160401b039182841161098f5760a084830191853603011261098f5786546001600160a01b0316330361094c57610580816117e8565b9360025494858952600688528689205489528388528480888b205416911611156108f757604481013592858952600688528689205484036108a35760848201906105ca82856117fc565b90501561084b576105db82856117fc565b905060ff60035416106107fc576105fa6105f5368661155a565b611791565b96878b52818a5286898c2054166107c2579061061c61069a9392959495611722565b600255878b5289526003888b20606488610635876117e8565b16966001600160401b03199788845416178355610684610657602483016117e8565b84546fffffffffffffffff0000000000000000191660409190911b67ffffffffffffffff60401b16178455565b60019860018401550135600282015501926117fc565b92906106a68484611747565b9189528789209089925b84841061073c57505050505050600254855260068452818386205560058351946106d9866114a7565b428316865233818701908152938752528285209351845492516001600160e01b0319909316911617911b600160401b600160e01b03161790556002547fa37f9fb2f8e66e6e5746e84c33d55fc62d920182d22358f2adc6855d3ac4d4378280a280f35b86610746826117e8565b16828454161783558981013562ffffff811681036107be5783546affffff0000000000000000191660409190911b62ffffff60401b16178355888101359061ffff821682036107be57835461ffff60581b191660589290921b61ffff60581b16919091178355859081906060019301930192916106b0565b8b80fd5b885162461bcd60e51b81528083018b90526014602482015273626c6f636b20616c72656164792065786973747360601b6044820152606490fd5b875162461bcd60e51b81529081018990526024808201527f626c6f636b2068617320746f6f206d616e792063656c657374696120706f696e6044820152637465727360e01b6064820152608490fd5b875162461bcd60e51b8152908101899052602c60248201527f626c6f636b206d75737420686176652061746c65617374206f6e652063656c6560448201526b39ba34b0903837b4b73a32b960a11b6064820152608490fd5b865162461bcd60e51b8152908101889052602860248201527f7072657648617368206d757374206265207468652070726576696f757320626c6044820152670dec6d640d0c2e6d60c31b6064820152608490fd5b855162461bcd60e51b8152808401889052602960248201527f65706f6368206d7573742062652067726561746572207468616e2070726576696044820152680deeae640cae0dec6d60bb1b6064820152608490fd5b845162461bcd60e51b8152808301879052601d60248201527f6f6e6c79207075626c69736865722063616e2061646420626c6f636b730000006044820152606490fd5b8680fd5b8480fd5b8390346102815781600319360112610281576000805160206119838339815191525490516001600160a01b039091168152602090f35b839034610281578160031936011261028157905490516001600160a01b039091168152602090f35b8390346102815781600319360112610281576001600160401b038183806020955260068552818120548152600585522054169051908152f35b9091503461025457602091826003193601126103d557610a4f9392936117ba565b508035835260068452818320548352835280822092815192610a70846114d8565b8454916001600160401b0383818095168752851c16818601526003600196600181015486880152600281015460608801520190815492610aaf84611543565b94610abc8751968761150e565b84865282860193825282822091935b858510610ae657608089018790528751806102148b82611682565b898481928a51610af5816114f3565b61ffff8c62ffffff895480928a821686521c168584015260581c168c820152815201930194019391610acb565b8334610159578060031936011261015957610b3b6118a5565b60008051602061198383398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b838234610281576020366003190112610281573560ff811680910361028157610bb36118a5565b60ff19600354161760035580f35b83903461028157816003193601126102815760209060ff600354169051908152f35b9150346102545760203660031901126102545760209282913581526006845220549051908152f35b8334610159578060031936011261015957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610c7657602090517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b5163703e46dd60e11b8152fd5b8091925060031936011261025457610c9961148c565b9060249384356001600160401b03811161028157366023820112156102815780850135610cc581611667565b94610cd28551968761150e565b81865260209182870193368a8383010111610ee5578186928b8693018737880101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115610eb7575b50610ea757610d376118a5565b81169585516352d1902d60e01b815283818a818b5afa869181610e78575b50610d71575050505050505191634c9c8ce360e01b8352820152fd5b9088888894938c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91828103610e635750853b15610e4f575080546001600160a01b031916821790558451889392917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2825115610e31575050610e239582915190845af4913d15610e27573d610e15610e0c82611667565b9251928361150e565b81528581943d92013e61191f565b5080f35b506060925061191f565b955095505050505034610e4357505080f35b63b398979f60e01b8152fd5b8651634c9c8ce360e01b8152808501849052fd5b8751632a87526960e21b815280860191909152fd5b9091508481813d8311610ea0575b610e90818361150e565b8101031261098f57519038610d55565b503d610e86565b855163703e46dd60e11b81528890fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538610d2a565b8580fd5b8334610159576020366003190112610159578235906001600160401b03821161015957506105f5602093610f1f9236910161155a565b9051908152f35b915034610254578160031936011261025457610f4061148c565b6001600160401b0392602435848111610ee557610f60903690850161155a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0094855460ff81851c161592828216958615806111ee575b600180981490816111e4575b1590816111db575b506111cb5767ffffffffffffffff1983811688178a5592856111ac575b50610fd59291926118de565b610fdd6118de565b610fe633611831565b89546001600160a01b0319166001600160a01b039190911617895561100a82611791565b91828a52602097885260806003878c208684511685825416178155611057878c86015116829067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b888401518a8201556060840151600282015501910151918883519361107c8585611747565b01918b52888b2090888c935b8b86861061114057505050505050508780526006865280848920558351916110af836114a7565b428116835233878401908152918952600587528489209251835492516001600160e01b031990931691161790841b600160401b600160e01b03161790556003805460ff19166015179055611101578480f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29368ff000000000000000019815416905551908152a1388080808480f35b8161119e61ffff8d8695518d815116898b5416178a5561118162ffffff87830151168b9062ffffff60401b82549160401b169062ffffff60401b1916179055565b0151885461ffff60581b1916911660581b61ffff60581b16178755565b019301930192918990611088565b68ffffffffffffffffff19166801000000000000000117895538610fc9565b855163f92ee8a960e01b81528890fd5b90501538610fac565b303b159150610fa4565b5084610f98565b83903461028157806003193601126102815760018054843592906001600160a01b031633036113da5760028054841015611385576001840195868511611372578686526006916020916006835260243585892054036113115785969798955b611286575b8888806002557fbd56a1ce5e71ef906a2c86c43372d012f8ab2422ff19bfdba9b686ac0936f86f8280a280f35b8154861161130c578587968a52848452858a20548a528184526003868b208b81558b898201558b85820155018054908b8155816112ef575b5050806112e9918b52858552868b20548b52600585528a87812055808b528585528a87812055611722565b95611254565b8b52848b20908101905b818110156112be578b81558998016112f9565b611259565b845162461bcd60e51b8152908101839052603560248201527f626c6f636b2068617368206d757374206d6174636820626c6f636b206e756d626044820152740cae4e640e0c2e4cadce840c4d8dec6d640d0c2e6d605b1b6064820152608490fd5b634e487b7160e01b865260119052602485fd5b815162461bcd60e51b8152602081880152602960248201527f626c6f636b206e756d626572206d757374206265206c657373207468616e20636044820152681a185a5b881a19585960ba1b6064820152608490fd5b5162461bcd60e51b8152602081860152602a60248201527f6f6e6c79206368616c6c656e676520636f6e74726163742063616e20726f6c6c6044820152693130b1b59031b430b4b760b11b6064820152608490fd5b91503461025457602036600319011261025457918192358152600560205220548151906001600160401b038116825260018060a01b0390831c166020820152f35b8490346102815781600319360112610281576020906002548152f35b600435906001600160a01b03821682036114a257565b600080fd5b604081019081106001600160401b038211176114c257604052565b634e487b7160e01b600052604160045260246000fd5b60a081019081106001600160401b038211176114c257604052565b606081019081106001600160401b038211176114c257604052565b90601f801991011681019081106001600160401b038211176114c257604052565b35906001600160401b03821682036114a257565b6001600160401b0381116114c25760051b60200190565b919060a0838203126114a257604092835190611575826114d8565b81946115808261152f565b8352602061158f81840161152f565b818501528183013582850152606092606081013560608601526080810135906001600160401b0382116114a257019185601f840112156114a2578235906115d582611543565b966115e28251988961150e565b828852836060818a019402860101948186116114a2578401925b858410611610575050505050505060800152565b86848303126114a257825190611625826114f3565b61162e8561152f565b82528585013562ffffff811681036114a25786830152838501359061ffff821682036114a257828792868b9501528152019301926115fc565b6001600160401b0381116114c257601f01601f191660200190565b90602080835260c08301906001600160401b0380845116828601528184015193816040951660408701528260e0608060408401519360609460608b01526060810151828b015201519760a0808201528851809752019601946000925b8584106116ef575050505050505090565b86518051821689528086015162ffffff168987015282015161ffff168883015296820196958401956001909301926116de565b60001981146117315760010190565b634e487b7160e01b600052601160045260246000fd5b6801000000000000000082116114c25780549180825582811061176957505050565b600091600052602060002092830192015b82811061178657505050565b81815560010161177a565b6040516117b4816117a6602082019485611682565b03601f19810183528261150e565b51902090565b604051906117c7826114d8565b60606080836000815260006020820152600060408201526000838201520152565b356001600160401b03811681036114a25790565b903590601e19813603018212156114a257018035906001600160401b0382116114a2576020019160608202360383136114a257565b6001600160a01b0390811690811561188c5760008051602061198383398151915280546001600160a01b031981168417909155167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b604051631e4fbdf760e01b815260006004820152602490fd5b600080516020611983833981519152546001600160a01b031633036118c657565b60405163118cdaa760e01b8152336004820152602490fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c161561190d57565b604051631afcd79f60e31b8152600490fd5b90611946575080511561193457805190602001fd5b604051630a12f52160e11b8152600490fd5b81511580611979575b611957575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b1561194f56fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300a164736f6c6343000816000a",
"sourceMap": "939:9493:0:-:0;;;;;;;1171:4:83;1163:13;;939:9493:0;;;;;;1163:13:83;939:9493:0;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x608060409080825260048036101561001657600080fd5b600092833560e01c9283628f51c6146114705750826328a8d0e41461142f57826334c9bca5146111f557826341d3ecd814610f265782634411470314610ee95782634f1ef28614610c8357826352d1902d14610c0b5782635852cc0c14610be3578263691bc74a14610bc15782636d1005c514610b8c578263715018a614610b225782637255f37e14610a2e57826388786272146109f55782638c72c54e146109cd5782638da5cb5b146109975782638f74b7391461052d578263a25ae557146104bb578263ad3cb1cc14610441578263b37256b9146103d9578263b76971ce146102eb578263cab6366114610285578263d2ef739814610258578263dc281aff1461015c57505063f2fde38b1461012d57600080fd5b346101595760203660031901126101595761015661014961148c565b6101516118a5565b611831565b80f35b80fd5b9091503461025457826003193601126102545782906101796117ba565b5060025482526020926006845281832054835283528082209281519261019e846114d8565b8454916001600160401b0383818095168752851c168186015260036001966001810154868801526002810154606088015201908154926101dd84611543565b946101ea8751968761150e565b84865282860193825282822091935b85851061021857608089018790528751806102148b82611682565b0390f35b898481928a51610227816114f3565b61ffff8c62ffffff895480928a821686521c168584015260581c168c8201528152019301940193916101f9565b8280fd5b83903461028157816003193601126102815760015490516001600160a01b039091168152602090f35b5080fd5b83346101595760203660031901126101595761029f61148c565b6102a76118a5565b81546001600160a01b0319166001600160a01b039190911690811782557f55eb99d77b0e1ed261c0a8d11f026f811b8af01455a2b45189bcc87b93dfbbb78280a280f35b9091503461025457602091826003193601126103d55761030c9392936117ba565b5080358352835280822092815192610323846114d8565b8454916001600160401b0383818095168752851c1681860152600360019660018101548688015260028101546060880152019081549261036284611543565b9461036f8751968761150e565b84865282860193825282822091935b85851061039957608089018790528751806102148b82611682565b898481928a516103a8816114f3565b61ffff8c62ffffff895480928a821686521c168584015260581c168c82015281520193019401939161037e565b8380fd5b8334610159576020366003190112610159576103f361148c565b6103fb6118a5565b600180546001600160a01b0319166001600160a01b039290921691821790557fe06eac444661557e3ac16a5251a66b82c3f985c3e3b15eac7ea4b4fac6eeac2c8280a280f35b839034610281578160031936011261028157805161045e816114a7565b60058152602090640352e302e360dc1b6020820152825193849260208452825192836020860152825b8481106104a557505050828201840152601f01601f19168101030190f35b8181018301518882018801528795508201610487565b838234610281576020908160031936011261025457828285516104dd816114a7565b828152015280358352600682528383205483528152826002818420015492600583526001600160401b03918291205416828551610519816114a7565b858152019081528451938452511690820152f35b90915034610254576020916003198381360112610993578135916001600160401b039182841161098f5760a084830191853603011261098f5786546001600160a01b0316330361094c57610580816117e8565b9360025494858952600688528689205489528388528480888b205416911611156108f757604481013592858952600688528689205484036108a35760848201906105ca82856117fc565b90501561084b576105db82856117fc565b905060ff60035416106107fc576105fa6105f5368661155a565b611791565b96878b52818a5286898c2054166107c2579061061c61069a9392959495611722565b600255878b5289526003888b20606488610635876117e8565b16966001600160401b03199788845416178355610684610657602483016117e8565b84546fffffffffffffffff0000000000000000191660409190911b67ffffffffffffffff60401b16178455565b60019860018401550135600282015501926117fc565b92906106a68484611747565b9189528789209089925b84841061073c57505050505050600254855260068452818386205560058351946106d9866114a7565b428316865233818701908152938752528285209351845492516001600160e01b0319909316911617911b600160401b600160e01b03161790556002547fa37f9fb2f8e66e6e5746e84c33d55fc62d920182d22358f2adc6855d3ac4d4378280a280f35b86610746826117e8565b16828454161783558981013562ffffff811681036107be5783546affffff0000000000000000191660409190911b62ffffff60401b16178355888101359061ffff821682036107be57835461ffff60581b191660589290921b61ffff60581b16919091178355859081906060019301930192916106b0565b8b80fd5b885162461bcd60e51b81528083018b90526014602482015273626c6f636b20616c72656164792065786973747360601b6044820152606490fd5b875162461bcd60e51b81529081018990526024808201527f626c6f636b2068617320746f6f206d616e792063656c657374696120706f696e6044820152637465727360e01b6064820152608490fd5b875162461bcd60e51b8152908101899052602c60248201527f626c6f636b206d75737420686176652061746c65617374206f6e652063656c6560448201526b39ba34b0903837b4b73a32b960a11b6064820152608490fd5b865162461bcd60e51b8152908101889052602860248201527f7072657648617368206d757374206265207468652070726576696f757320626c6044820152670dec6d640d0c2e6d60c31b6064820152608490fd5b855162461bcd60e51b8152808401889052602960248201527f65706f6368206d7573742062652067726561746572207468616e2070726576696044820152680deeae640cae0dec6d60bb1b6064820152608490fd5b845162461bcd60e51b8152808301879052601d60248201527f6f6e6c79207075626c69736865722063616e2061646420626c6f636b730000006044820152606490fd5b8680fd5b8480fd5b8390346102815781600319360112610281576000805160206119838339815191525490516001600160a01b039091168152602090f35b839034610281578160031936011261028157905490516001600160a01b039091168152602090f35b8390346102815781600319360112610281576001600160401b038183806020955260068552818120548152600585522054169051908152f35b9091503461025457602091826003193601126103d557610a4f9392936117ba565b508035835260068452818320548352835280822092815192610a70846114d8565b8454916001600160401b0383818095168752851c16818601526003600196600181015486880152600281015460608801520190815492610aaf84611543565b94610abc8751968761150e565b84865282860193825282822091935b858510610ae657608089018790528751806102148b82611682565b898481928a51610af5816114f3565b61ffff8c62ffffff895480928a821686521c168584015260581c168c820152815201930194019391610acb565b8334610159578060031936011261015957610b3b6118a5565b60008051602061198383398151915280546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b838234610281576020366003190112610281573560ff811680910361028157610bb36118a5565b60ff19600354161760035580f35b83903461028157816003193601126102815760209060ff600354169051908152f35b9150346102545760203660031901126102545760209282913581526006845220549051908152f35b8334610159578060031936011261015957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003610c7657602090517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b5163703e46dd60e11b8152fd5b8091925060031936011261025457610c9961148c565b9060249384356001600160401b03811161028157366023820112156102815780850135610cc581611667565b94610cd28551968761150e565b81865260209182870193368a8383010111610ee5578186928b8693018737880101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116308114908115610eb7575b50610ea757610d376118a5565b81169585516352d1902d60e01b815283818a818b5afa869181610e78575b50610d71575050505050505191634c9c8ce360e01b8352820152fd5b9088888894938c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc91828103610e635750853b15610e4f575080546001600160a01b031916821790558451889392917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2825115610e31575050610e239582915190845af4913d15610e27573d610e15610e0c82611667565b9251928361150e565b81528581943d92013e61191f565b5080f35b506060925061191f565b955095505050505034610e4357505080f35b63b398979f60e01b8152fd5b8651634c9c8ce360e01b8152808501849052fd5b8751632a87526960e21b815280860191909152fd5b9091508481813d8311610ea0575b610e90818361150e565b8101031261098f57519038610d55565b503d610e86565b855163703e46dd60e11b81528890fd5b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416141538610d2a565b8580fd5b8334610159576020366003190112610159578235906001600160401b03821161015957506105f5602093610f1f9236910161155a565b9051908152f35b915034610254578160031936011261025457610f4061148c565b6001600160401b0392602435848111610ee557610f60903690850161155a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0094855460ff81851c161592828216958615806111ee575b600180981490816111e4575b1590816111db575b506111cb5767ffffffffffffffff1983811688178a5592856111ac575b50610fd59291926118de565b610fdd6118de565b610fe633611831565b89546001600160a01b0319166001600160a01b039190911617895561100a82611791565b91828a52602097885260806003878c208684511685825416178155611057878c86015116829067ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b1916179055565b888401518a8201556060840151600282015501910151918883519361107c8585611747565b01918b52888b2090888c935b8b86861061114057505050505050508780526006865280848920558351916110af836114a7565b428116835233878401908152918952600587528489209251835492516001600160e01b031990931691161790841b600160401b600160e01b03161790556003805460ff19166015179055611101578480f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29368ff000000000000000019815416905551908152a1388080808480f35b8161119e61ffff8d8695518d815116898b5416178a5561118162ffffff87830151168b9062ffffff60401b82549160401b169062ffffff60401b1916179055565b0151885461ffff60581b1916911660581b61ffff60581b16178755565b019301930192918990611088565b68ffffffffffffffffff19166801000000000000000117895538610fc9565b855163f92ee8a960e01b81528890fd5b90501538610fac565b303b159150610fa4565b5084610f98565b83903461028157806003193601126102815760018054843592906001600160a01b031633036113da5760028054841015611385576001840195868511611372578686526006916020916006835260243585892054036113115785969798955b611286575b8888806002557fbd56a1ce5e71ef906a2c86c43372d012f8ab2422ff19bfdba9b686ac0936f86f8280a280f35b8154861161130c578587968a52848452858a20548a528184526003868b208b81558b898201558b85820155018054908b8155816112ef575b5050806112e9918b52858552868b20548b52600585528a87812055808b528585528a87812055611722565b95611254565b8b52848b20908101905b818110156112be