UNPKG

@layerzerolabs/oapp-alt-evm

Version:

LayerZero Labs reference EVM OmniChain Application (OAppAlt) for EndpointV2Alt implementation

1 lines 143 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_verifyHelper","type":"address","internalType":"address payable"},{"name":"_endpoint","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"PACKET_VERSION","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"defaultOption","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"endpoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"isSupportedEid","inputs":[{"name":"","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"localEid","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"lzTokenFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"messageLibType","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"enum MessageLibType"}],"stateMutability":"pure"},{"type":"function","name":"nativeFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"quote","inputs":[{"name":"","type":"tuple","internalType":"struct Packet","components":[{"name":"nonce","type":"uint64","internalType":"uint64"},{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"address","internalType":"address"},{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"receiver","type":"bytes32","internalType":"bytes32"},{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"message","type":"bytes","internalType":"bytes"}]},{"name":"","type":"bytes","internalType":"bytes"},{"name":"_payInLzToken","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"tuple","internalType":"struct MessagingFee","components":[{"name":"nativeFee","type":"uint256","internalType":"uint256"},{"name":"lzTokenFee","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"send","inputs":[{"name":"_packet","type":"tuple","internalType":"struct Packet","components":[{"name":"nonce","type":"uint64","internalType":"uint64"},{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"address","internalType":"address"},{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"receiver","type":"bytes32","internalType":"bytes32"},{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"message","type":"bytes","internalType":"bytes"}]},{"name":"_options","type":"bytes","internalType":"bytes"},{"name":"_payInLzToken","type":"bool","internalType":"bool"}],"outputs":[{"name":"fee","type":"tuple","internalType":"struct MessagingFee","components":[{"name":"nativeFee","type":"uint256","internalType":"uint256"},{"name":"lzTokenFee","type":"uint256","internalType":"uint256"}]},{"name":"encodedPacket","type":"bytes","internalType":"bytes"},{"name":"options","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultOption","inputs":[{"name":"_defaultOption","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMessagingFee","inputs":[{"name":"_nativeFee","type":"uint256","internalType":"uint256"},{"name":"_lzTokenFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWhitelistCaller","inputs":[{"name":"_whitelistCaller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"testHelper","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract TestHelperOz5"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"validatePacket","inputs":[{"name":"packetBytes","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"major","type":"uint64","internalType":"uint64"},{"name":"minor","type":"uint8","internalType":"uint8"},{"name":"endpointVersion","type":"uint8","internalType":"uint8"}],"stateMutability":"pure"},{"type":"function","name":"whitelistCaller","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"withdrawFee","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawLzTokenFee","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"InvalidEndpoint","inputs":[{"name":"expected","type":"address","internalType":"address"},{"name":"actual","type":"address","internalType":"address"}]},{"type":"error","name":"LZ_NotImplemented","inputs":[]},{"type":"error","name":"LzTokenIsAddressZero","inputs":[]},{"type":"error","name":"OnlyEndpoint","inputs":[]},{"type":"error","name":"OnlyWhitelistCaller","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":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"ToIsAddressZero","inputs":[]},{"type":"error","name":"TransferFailed","inputs":[]},{"type":"error","name":"Transfer_NativeFailed","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Transfer_ToAddressIsZero","inputs":[]}],"bytecode":{"object":"0x60e060405234801562000010575f80fd5b506040516200188438038062001884833981016040819052620000339162000172565b33806200005957604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b62000064816200010b565b50600180546001600160a01b0319166001600160a01b0384811691909117909155811660808190525f60a0526040805163416ecebf60e01b8152905163416ecebf916004808201926020929091908290030181865afa158015620000ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000f09190620001af565b63ffffffff1660c052505060636003556064600455620001db565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200016f575f80fd5b50565b5f806040838503121562000184575f80fd5b825162000191816200015a565b6020840151909250620001a4816200015a565b809150509250929050565b5f60208284031215620001c0575f80fd5b815163ffffffff81168114620001d4575f80fd5b9392505050565b60805160a05160c051611662620002225f395f61037c01525f6102ef01525f81816102bc015281816105b9015281816106bc015281816108ba0152610a7001526116625ff3fe60806040526004361061014e575f3560e01c8063715018a6116100b5578063996f79c01161006e578063996f79c014610432578063aec336e614610447578063d80e9bd914610466578063dabca06314610492578063f2fde38b146104b1578063fd9be522146104d057610155565b8063715018a614610357578063726075371461036b57806372d71322146103b35780638da5cb5b146103d45780638f58aa7a146103f0578063909532381461040f57610155565b80634389e58f116101075780634389e58f1461025357806354fd4d50146102815780635e280f11146102ab57806361d027b3146102de5780636251b637146103115780636750cd4c1461033757610155565b806301ffc9a71461016e5780630e97289b146101a257806312cc947f146101d95780631881d94d146101fa5780631c7c294e14610215578063334993ff1461023457610155565b3661015557005b604051632657b6c360e01b815260040160405180910390fd5b348015610179575f80fd5b5061018d610188366004610e9a565b6104ef565b60405190151581526020015b60405180910390f35b3480156101ad575f80fd5b506001546101c1906001600160a01b031681565b6040516001600160a01b039091168152602001610199565b3480156101e4575f80fd5b506101f86101f3366004610efe565b610525565b005b348015610205575f80fd5b5060026040516101999190610f3c565b348015610220575f80fd5b506002546101c1906001600160a01b031681565b34801561023f575f80fd5b506101f861024e366004610f62565b610691565b34801561025e575f80fd5b5061027261026d366004611070565b6106a4565b6040516101999392919061112b565b34801561028c575f80fd5b50604080515f8082526020820152600291810191909152606001610199565b3480156102b6575f80fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e9575f80fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561031c575f80fd5b50610325600181565b60405160ff9091168152602001610199565b348015610342575f80fd5b5061018d61035136600461117d565b50600190565b348015610362575f80fd5b506101f86107e9565b348015610376575f80fd5b5061039e7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610199565b3480156103be575f80fd5b506103c76107fc565b6040516101999190611196565b3480156103df575f80fd5b505f546001600160a01b03166101c1565b3480156103fb575f80fd5b506101f861040a3660046111c7565b610888565b34801561041a575f80fd5b5061042460035481565b604051908152602001610199565b34801561043d575f80fd5b5061042460045481565b348015610452575f80fd5b506101f86104613660046111f1565b61097a565b348015610471575f80fd5b5061048561048036600461120c565b6109a4565b6040516101999190611281565b34801561049d575f80fd5b506101f86104ac366004611298565b6109e4565b3480156104bc575f80fd5b506101f86104cb3660046111f1565b6109fc565b3480156104db575f80fd5b506101f86104ea3660046111c7565b610a3e565b5f6001600160e01b031982166325fc096160e21b148061051f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546001600160a01b03161580159061054a57506002546001600160a01b03163314155b1561056857604051631c2c85bb60e21b815260040160405180910390fd5b5f604051806060016040528061057e8585610afb565b63ffffffff1681526020016105938585610b1d565b81526020016105a28585610b3c565b6001600160401b0316905290506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a825d747826105e98686610b5e565b6105f38787610b6f565b6040516106019291906112d1565b6040805191829003822060e086901b6001600160e01b0319168352845163ffffffff166004840152602085015160248401529301516001600160401b031660448201526001600160a01b039091166064820152608481019190915260a4015f604051808303815f87803b158015610676575f80fd5b505af1158015610688573d5f803e3d5ffd5b50505050505050565b610699610b8a565b600491909155600355565b604080518082019091525f80825260208201526060807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461070357604051630fd72cd960e31b815260040160405180910390fd5b61071461070f876112f6565b610bb6565b915084515f1461072457846107ae565b6005805461073190611390565b80601f016020809104026020016040519081016040528092919081815260200182805461075d90611390565b80156107a85780601f1061077f576101008083540402835291602001916107a8565b820191905f5260205f20905b81548152906001019060200180831161078b57829003601f168201915b50505050505b90506107ba8282610c0e565b60405180604001604052806004548152602001856107d8575f6107dc565b6003545b9052969195509350915050565b6107f1610b8a565b6107fa5f610c71565b565b6005805461080990611390565b80601f016020809104026020016040519081016040528092919081815260200182805461083590611390565b80156108805780601f1061085757610100808354040283529160200191610880565b820191905f5260205f20905b81548152906001019060200180831161086357829003601f168201915b505050505081565b610890610b8a565b6001600160a01b0382166108b757604051633d3496e160e01b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610914573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093891906113c2565b90506001600160a01b038116610961576040516354c1781b60e01b815260040160405180910390fd5b6109756001600160a01b0382168484610cc0565b505050565b610982610b8a565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091525f808252602082015260405180604001604052806004548152602001836109d5575f6109d9565b6003545b905295945050505050565b6109ec610b8a565b60056109f88282611428565b5050565b610a04610b8a565b6001600160a01b038116610a3257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a3b81610c71565b50565b610a46610b8a565b6001600160a01b038216610a6d57604051633d3496e160e01b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee91906113c2565b9050610975818484610d12565b5f610b0a600d600984866114e3565b610b139161150a565b60e01c9392505050565b5f610b2c602d600d84866114e3565b610b359161153a565b9392505050565b5f610b4b6009600184866114e3565b610b5491611557565b60c01c9392505050565b5f610b35610b6c8484610d35565b90565b365f610b7e83605181876114e3565b915091505b9250929050565b5f546001600160a01b031633146107fa5760405163118cdaa760e01b8152336004820152602401610a29565b8051602080830151604080850151606080870151608088015160a089015160c08a015195519398610bf898600198919791966001600160a01b03169501611585565b6040516020818303038152906040529050919050565b600154604051631f5dad8b60e31b81526001600160a01b039091169063faed6c5890610c4090859085906004016115ff565b5f604051808303815f87803b158015610c57575f80fd5b505af1158015610c69573d5f803e3d5ffd5b505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610975908490610d44565b6001600160a01b038316610d2a576109758282610db6565b610975838383610e5f565b5f610b2c6051603184866114e3565b5f8060205f8451602086015f885af180610d63576040513d5f823e3d81fd5b50505f513d91508115610d7a578060011415610d87565b6001600160a01b0384163b155b15610db057604051635274afe760e01b81526001600160a01b0385166004820152602401610a29565b50505050565b6001600160a01b038216610ddd576040516306b7a93160e41b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610e26576040519150601f19603f3d011682016040523d82523d5f602084013e610e2b565b606091505b505090508061097557604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610a29565b6001600160a01b038216610e86576040516306b7a93160e41b815260040160405180910390fd5b6109756001600160a01b0384168383610cc0565b5f60208284031215610eaa575f80fd5b81356001600160e01b031981168114610b35575f80fd5b5f8083601f840112610ed1575f80fd5b5081356001600160401b03811115610ee7575f80fd5b602083019150836020828501011115610b83575f80fd5b5f8060208385031215610f0f575f80fd5b82356001600160401b03811115610f24575f80fd5b610f3085828601610ec1565b90969095509350505050565b6020810160038310610f5c57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8060408385031215610f73575f80fd5b50508035926020909101359150565b5f60e08284031215610f92575f80fd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715610fce57610fce610f98565b60405290565b5f82601f830112610fe3575f80fd5b81356001600160401b0380821115610ffd57610ffd610f98565b604051601f8301601f19908116603f0116810190828211818310171561102557611025610f98565b8160405283815286602085880101111561103d575f80fd5b836020870160208301375f602085830101528094505050505092915050565b8035801515811461106b575f80fd5b919050565b5f805f60608486031215611082575f80fd5b83356001600160401b0380821115611098575f80fd5b6110a487838801610f82565b945060208601359150808211156110b9575f80fd5b506110c686828701610fd4565b9250506110d56040850161105c565b90509250925092565b5f5b838110156110f85781810151838201526020016110e0565b50505f910152565b5f81518084526111178160208601602086016110de565b601f01601f19169290920160200192915050565b8351815260208085015190820152608060408201525f61114e6080830185611100565b82810360608401526111608185611100565b9695505050505050565b803563ffffffff8116811461106b575f80fd5b5f6020828403121561118d575f80fd5b610b358261116a565b602081525f610b356020830184611100565b6001600160a01b0381168114610a3b575f80fd5b803561106b816111a8565b5f80604083850312156111d8575f80fd5b82356111e3816111a8565b946020939093013593505050565b5f60208284031215611201575f80fd5b8135610b35816111a8565b5f805f806060858703121561121f575f80fd5b84356001600160401b0380821115611235575f80fd5b61124188838901610f82565b95506020870135915080821115611256575f80fd5b5061126387828801610ec1565b909450925061127690506040860161105c565b905092959194509250565b81518152602080830151908201526040810161051f565b5f602082840312156112a8575f80fd5b81356001600160401b038111156112bd575f80fd5b6112c984828501610fd4565b949350505050565b818382375f9101908152919050565b80356001600160401b038116811461106b575f80fd5b5f60e08236031215611306575f80fd5b61130e610fac565b611317836112e0565b81526113256020840161116a565b6020820152611336604084016111bc565b60408201526113476060840161116a565b60608201526080830135608082015260a083013560a082015260c08301356001600160401b03811115611378575f80fd5b61138436828601610fd4565b60c08301525092915050565b600181811c908216806113a457607f821691505b602082108103610f9257634e487b7160e01b5f52602260045260245ffd5b5f602082840312156113d2575f80fd5b8151610b35816111a8565b601f82111561097557805f5260205f20601f840160051c810160208510156114025750805b601f840160051c820191505b81811015611421575f815560010161140e565b5050505050565b81516001600160401b0381111561144157611441610f98565b6114558161144f8454611390565b846113dd565b602080601f831160018114611488575f84156114715750858301515b5f19600386901b1c1916600185901b178555610c69565b5f85815260208120601f198616915b828110156114b657888601518255948401946001909101908401611497565b50858210156114d357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f80858511156114f1575f80fd5b838611156114fd575f80fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156115325780818660040360031b1b83161692505b505092915050565b8035602083101561051f575f19602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156115325760089490940360031b84901b1690921692915050565b60ff60f81b8960f81b1681526001600160401b0360c01b8860c01b1660018201525f63ffffffff60e01b808960e01b16600984015287600d840152808760e01b16602d8401525084603183015283605183015282516115eb8160718501602087016110de565b919091016071019998505050505050505050565b604081525f6116116040830185611100565b82810360208401526116238185611100565b9594505050505056fea26469706673582212202af13c2eb135ee30d90705293549ebc6edf8011ce9d6e0f076e9e549723e1e9664736f6c63430008160033","sourceMap":"1070:4885:72:-:0;;;2016:387;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2086:10;;1269:95:100;;1322:31;;-1:-1:-1;;;1322:31:100;;1350:1;1322:31;;;718:51:122;691:18;;1322:31:100;;;;;;;1269:95;1373:32;1392:12;1373:18;:32::i;:::-;-1:-1:-1;2108:10:72::1;:41:::0;;-1:-1:-1;;;;;;2108:41:72::1;-1:-1:-1::0;;;;;2108:41:72;;::::1;::::0;;;::::1;::::0;;;2159:20;::::1;;::::0;;;-1:-1:-1;2189:23:72::1;::::0;2233:37:::1;::::0;;-1:-1:-1;;;2233:37:72;;;;:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;2159:20;2233:37:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2222:48;;;::::0;-1:-1:-1;;2293:2:72::1;2280:10;:15:::0;2317:3:::1;2305:9;:15:::0;1070:4885;;2912:187:100;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:100;;;-1:-1:-1;;;;;;3020:17:100;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;14:139:122:-;-1:-1:-1;;;;;97:31:122;;87:42;;77:70;;143:1;140;133:12;77:70;14:139;:::o;158:409::-;245:6;253;306:2;294:9;285:7;281:23;277:32;274:52;;;322:1;319;312:12;274:52;354:9;348:16;373:39;406:5;373:39;:::i;:::-;481:2;466:18;;460:25;431:5;;-1:-1:-1;494:41:122;460:25;494:41;:::i;:::-;554:7;544:17;;;158:409;;;;;:::o;780:280::-;849:6;902:2;890:9;881:7;877:23;873:32;870:52;;;918:1;915;908:12;870:52;950:9;944:16;1000:10;993:5;989:22;982:5;979:33;969:61;;1026:1;1023;1016:12;969:61;1049:5;780:280;-1:-1:-1;;;780:280:122:o;:::-;1070:4885:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061014e575f3560e01c8063715018a6116100b5578063996f79c01161006e578063996f79c014610432578063aec336e614610447578063d80e9bd914610466578063dabca06314610492578063f2fde38b146104b1578063fd9be522146104d057610155565b8063715018a614610357578063726075371461036b57806372d71322146103b35780638da5cb5b146103d45780638f58aa7a146103f0578063909532381461040f57610155565b80634389e58f116101075780634389e58f1461025357806354fd4d50146102815780635e280f11146102ab57806361d027b3146102de5780636251b637146103115780636750cd4c1461033757610155565b806301ffc9a71461016e5780630e97289b146101a257806312cc947f146101d95780631881d94d146101fa5780631c7c294e14610215578063334993ff1461023457610155565b3661015557005b604051632657b6c360e01b815260040160405180910390fd5b348015610179575f80fd5b5061018d610188366004610e9a565b6104ef565b60405190151581526020015b60405180910390f35b3480156101ad575f80fd5b506001546101c1906001600160a01b031681565b6040516001600160a01b039091168152602001610199565b3480156101e4575f80fd5b506101f86101f3366004610efe565b610525565b005b348015610205575f80fd5b5060026040516101999190610f3c565b348015610220575f80fd5b506002546101c1906001600160a01b031681565b34801561023f575f80fd5b506101f861024e366004610f62565b610691565b34801561025e575f80fd5b5061027261026d366004611070565b6106a4565b6040516101999392919061112b565b34801561028c575f80fd5b50604080515f8082526020820152600291810191909152606001610199565b3480156102b6575f80fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e9575f80fd5b506101c17f000000000000000000000000000000000000000000000000000000000000000081565b34801561031c575f80fd5b50610325600181565b60405160ff9091168152602001610199565b348015610342575f80fd5b5061018d61035136600461117d565b50600190565b348015610362575f80fd5b506101f86107e9565b348015610376575f80fd5b5061039e7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610199565b3480156103be575f80fd5b506103c76107fc565b6040516101999190611196565b3480156103df575f80fd5b505f546001600160a01b03166101c1565b3480156103fb575f80fd5b506101f861040a3660046111c7565b610888565b34801561041a575f80fd5b5061042460035481565b604051908152602001610199565b34801561043d575f80fd5b5061042460045481565b348015610452575f80fd5b506101f86104613660046111f1565b61097a565b348015610471575f80fd5b5061048561048036600461120c565b6109a4565b6040516101999190611281565b34801561049d575f80fd5b506101f86104ac366004611298565b6109e4565b3480156104bc575f80fd5b506101f86104cb3660046111f1565b6109fc565b3480156104db575f80fd5b506101f86104ea3660046111c7565b610a3e565b5f6001600160e01b031982166325fc096160e21b148061051f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546001600160a01b03161580159061054a57506002546001600160a01b03163314155b1561056857604051631c2c85bb60e21b815260040160405180910390fd5b5f604051806060016040528061057e8585610afb565b63ffffffff1681526020016105938585610b1d565b81526020016105a28585610b3c565b6001600160401b0316905290506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663a825d747826105e98686610b5e565b6105f38787610b6f565b6040516106019291906112d1565b6040805191829003822060e086901b6001600160e01b0319168352845163ffffffff166004840152602085015160248401529301516001600160401b031660448201526001600160a01b039091166064820152608481019190915260a4015f604051808303815f87803b158015610676575f80fd5b505af1158015610688573d5f803e3d5ffd5b50505050505050565b610699610b8a565b600491909155600355565b604080518082019091525f80825260208201526060807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316331461070357604051630fd72cd960e31b815260040160405180910390fd5b61071461070f876112f6565b610bb6565b915084515f1461072457846107ae565b6005805461073190611390565b80601f016020809104026020016040519081016040528092919081815260200182805461075d90611390565b80156107a85780601f1061077f576101008083540402835291602001916107a8565b820191905f5260205f20905b81548152906001019060200180831161078b57829003601f168201915b50505050505b90506107ba8282610c0e565b60405180604001604052806004548152602001856107d8575f6107dc565b6003545b9052969195509350915050565b6107f1610b8a565b6107fa5f610c71565b565b6005805461080990611390565b80601f016020809104026020016040519081016040528092919081815260200182805461083590611390565b80156108805780601f1061085757610100808354040283529160200191610880565b820191905f5260205f20905b81548152906001019060200180831161086357829003601f168201915b505050505081565b610890610b8a565b6001600160a01b0382166108b757604051633d3496e160e01b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015610914573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061093891906113c2565b90506001600160a01b038116610961576040516354c1781b60e01b815260040160405180910390fd5b6109756001600160a01b0382168484610cc0565b505050565b610982610b8a565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091525f808252602082015260405180604001604052806004548152602001836109d5575f6109d9565b6003545b905295945050505050565b6109ec610b8a565b60056109f88282611428565b5050565b610a04610b8a565b6001600160a01b038116610a3257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a3b81610c71565b50565b610a46610b8a565b6001600160a01b038216610a6d57604051633d3496e160e01b815260040160405180910390fd5b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aee91906113c2565b9050610975818484610d12565b5f610b0a600d600984866114e3565b610b139161150a565b60e01c9392505050565b5f610b2c602d600d84866114e3565b610b359161153a565b9392505050565b5f610b4b6009600184866114e3565b610b5491611557565b60c01c9392505050565b5f610b35610b6c8484610d35565b90565b365f610b7e83605181876114e3565b915091505b9250929050565b5f546001600160a01b031633146107fa5760405163118cdaa760e01b8152336004820152602401610a29565b8051602080830151604080850151606080870151608088015160a089015160c08a015195519398610bf898600198919791966001600160a01b03169501611585565b6040516020818303038152906040529050919050565b600154604051631f5dad8b60e31b81526001600160a01b039091169063faed6c5890610c4090859085906004016115ff565b5f604051808303815f87803b158015610c57575f80fd5b505af1158015610c69573d5f803e3d5ffd5b505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610975908490610d44565b6001600160a01b038316610d2a576109758282610db6565b610975838383610e5f565b5f610b2c6051603184866114e3565b5f8060205f8451602086015f885af180610d63576040513d5f823e3d81fd5b50505f513d91508115610d7a578060011415610d87565b6001600160a01b0384163b155b15610db057604051635274afe760e01b81526001600160a01b0385166004820152602401610a29565b50505050565b6001600160a01b038216610ddd576040516306b7a93160e41b815260040160405180910390fd5b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610e26576040519150601f19603f3d011682016040523d82523d5f602084013e610e2b565b606091505b505090508061097557604051631196f20d60e21b81526001600160a01b038416600482015260248101839052604401610a29565b6001600160a01b038216610e86576040516306b7a93160e41b815260040160405180910390fd5b6109756001600160a01b0384168383610cc0565b5f60208284031215610eaa575f80fd5b81356001600160e01b031981168114610b35575f80fd5b5f8083601f840112610ed1575f80fd5b5081356001600160401b03811115610ee7575f80fd5b602083019150836020828501011115610b83575f80fd5b5f8060208385031215610f0f575f80fd5b82356001600160401b03811115610f24575f80fd5b610f3085828601610ec1565b90969095509350505050565b6020810160038310610f5c57634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8060408385031215610f73575f80fd5b50508035926020909101359150565b5f60e08284031215610f92575f80fd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b60405160e081016001600160401b0381118282101715610fce57610fce610f98565b60405290565b5f82601f830112610fe3575f80fd5b81356001600160401b0380821115610ffd57610ffd610f98565b604051601f8301601f19908116603f0116810190828211818310171561102557611025610f98565b8160405283815286602085880101111561103d575f80fd5b836020870160208301375f602085830101528094505050505092915050565b8035801515811461106b575f80fd5b919050565b5f805f60608486031215611082575f80fd5b83356001600160401b0380821115611098575f80fd5b6110a487838801610f82565b945060208601359150808211156110b9575f80fd5b506110c686828701610fd4565b9250506110d56040850161105c565b90509250925092565b5f5b838110156110f85781810151838201526020016110e0565b50505f910152565b5f81518084526111178160208601602086016110de565b601f01601f19169290920160200192915050565b8351815260208085015190820152608060408201525f61114e6080830185611100565b82810360608401526111608185611100565b9695505050505050565b803563ffffffff8116811461106b575f80fd5b5f6020828403121561118d575f80fd5b610b358261116a565b602081525f610b356020830184611100565b6001600160a01b0381168114610a3b575f80fd5b803561106b816111a8565b5f80604083850312156111d8575f80fd5b82356111e3816111a8565b946020939093013593505050565b5f60208284031215611201575f80fd5b8135610b35816111a8565b5f805f806060858703121561121f575f80fd5b84356001600160401b0380821115611235575f80fd5b61124188838901610f82565b95506020870135915080821115611256575f80fd5b5061126387828801610ec1565b909450925061127690506040860161105c565b905092959194509250565b81518152602080830151908201526040810161051f565b5f602082840312156112a8575f80fd5b81356001600160401b038111156112bd575f80fd5b6112c984828501610fd4565b949350505050565b818382375f9101908152919050565b80356001600160401b038116811461106b575f80fd5b5f60e08236031215611306575f80fd5b61130e610fac565b611317836112e0565b81526113256020840161116a565b6020820152611336604084016111bc565b60408201526113476060840161116a565b60608201526080830135608082015260a083013560a082015260c08301356001600160401b03811115611378575f80fd5b61138436828601610fd4565b60c08301525092915050565b600181811c908216806113a457607f821691505b602082108103610f9257634e487b7160e01b5f52602260045260245ffd5b5f602082840312156113d2575f80fd5b8151610b35816111a8565b601f82111561097557805f5260205f20601f840160051c810160208510156114025750805b601f840160051c820191505b81811015611421575f815560010161140e565b5050505050565b81516001600160401b0381111561144157611441610f98565b6114558161144f8454611390565b846113dd565b602080601f831160018114611488575f84156114715750858301515b5f19600386901b1c1916600185901b178555610c69565b5f85815260208120601f198616915b828110156114b657888601518255948401946001909101908401611497565b50858210156114d357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f80858511156114f1575f80fd5b838611156114fd575f80fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156115325780818660040360031b1b83161692505b505092915050565b8035602083101561051f575f19602084900360031b1b1692915050565b6001600160c01b031981358181169160088510156115325760089490940360031b84901b1690921692915050565b60ff60f81b8960f81b1681526001600160401b0360c01b8860c01b1660018201525f63ffffffff60e01b808960e01b16600984015287600d840152808760e01b16602d8401525084603183015283605183015282516115eb8160718501602087016110de565b919091016071019998505050505050505050565b604081525f6116116040830185611100565b82810360208401526116238185611100565b9594505050505056fea26469706673582212202af13c2eb135ee30d90705293549ebc6edf8011ce9d6e0f076e9e549723e1e9664736f6c63430008160033","sourceMap":"1070:4885:72:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5885:26;;-1:-1:-1;;;5885:26:72;;;;;;;;;;;2409:191;;;;;;;;;;-1:-1:-1;2409:191:72;;;;;:::i;:::-;;:::i;:::-;;;470:14:122;;463:22;445:41;;433:2;418:18;2409:191:72;;;;;;;;1158:31;;;;;;;;;;-1:-1:-1;1158:31:72;;;;-1:-1:-1;;;;;1158:31:72;;;;;;-1:-1:-1;;;;;692:32:122;;;674:51;;662:2;647:18;1158:31:72;497:234:122;2640:420:72;;;;;;;;;;-1:-1:-1;2640:420:72;;;;;:::i;:::-;;:::i;:::-;;5364:118;;;;;;;;;;-1:-1:-1;5446:29:72;5364:118;;;;;;:::i;1427:30::-;;;;;;;;;;-1:-1:-1;1427:30:72;;;;-1:-1:-1;;;;;1427:30:72;;;3792:158;;;;;;;;;;-1:-1:-1;3792:158:72;;;;;:::i;:::-;;:::i;3124:480::-;;;;;;;;;;-1:-1:-1;3124:480:72;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;5233:125::-;;;;;;;;;;-1:-1:-1;5233:125:72;;;5275:12;5813:50:122;;;5894:2;5879:18;;5872:45;5349:1:72;5933:18:122;;;5926:45;;;;5801:2;5786:18;5233:125:72;5621:356:122;1264:33:72;;;;;;;;;;;;;;;1303;;;;;;;;;;;;;;;1380:40;;;;;;;;;;;;1419:1;1380:40;;;;;6154:4:122;6142:17;;;6124:36;;6112:2;6097:18;1380:40:72;5982:184:122;5138:89:72;;;;;;;;;;-1:-1:-1;5138:89:72;;;;;:::i;:::-;-1:-1:-1;5216:4:72;;5138:89;2293:101:100;;;;;;;;;;;;;:::i;1342:32:72:-;;;;;;;;;;;;;;;;;;6702:10:122;6690:23;;;6672:42;;6660:2;6645:18;1342:32:72;6528:192:122;1526:26:72;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1638:85:100:-;;;;;;;;;;-1:-1:-1;1684:7:100;1710:6;-1:-1:-1;;;;;1710:6:100;1638:85;;4451:379:72;;;;;;;;;;-1:-1:-1;4451:379:72;;;;;:::i;:::-;;:::i;1464:25::-;;;;;;;;;;;;;;;;;;;7688::122;;;7676:2;7661:18;1464:25:72;7542:177:122;1495:24:72;;;;;;;;;;;;;;;;3956:124;;;;;;;;;;-1:-1:-1;3956:124:72;;;;;:::i;:::-;;:::i;4886:246::-;;;;;;;;;;-1:-1:-1;4886:246:72;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3665:121::-;;;;;;;;;;-1:-1:-1;3665:121:72;;;;;:::i;:::-;;:::i;2543:215:100:-;;;;;;;;;;-1:-1:-1;2543:215:100;;;;;:::i;:::-;;:::i;4086:359:72:-;;;;;;;;;;-1:-1:-1;4086:359:72;;;;;:::i;:::-;;:::i;2409:191::-;2486:4;-1:-1:-1;;;;;;2509:44:72;;-1:-1:-1;;;2509:44:72;;:84;;-1:-1:-1;;;;;;;;;;862:40:116;;;2557:36:72;2502:91;2409:191;-1:-1:-1;;2409:191:72:o;2640:420::-;2715:15;;-1:-1:-1;;;;;2715:15:72;:31;;;;:64;;-1:-1:-1;2764:15:72;;-1:-1:-1;;;;;2764:15:72;2750:10;:29;;2715:64;2711:123;;;2802:21;;-1:-1:-1;;;2802:21:72;;;;;;;;;;;2711:123;2843:20;2866:71;;;;;;;;2873:20;:11;;:18;:20::i;:::-;2866:71;;;;;;2895:20;:11;;:18;:20::i;:::-;2866:71;;;;2917:19;:11;;:17;:19::i;:::-;-1:-1:-1;;;;;2866:71:72;;;2843:94;-1:-1:-1;;;;;;2968:8:72;2947:37;;2843:94;2993:25;:11;;:23;:25::i;:::-;3030:21;:11;;:19;:21::i;:::-;3020:32;;;;;;;:::i;:::-;;;;;;;;;;2947:106;;;;-1:-1:-1;;;;;;2947:106:72;;;9851:13:122;;9866:10;9847:30;2947:106:72;;;9829:49:122;9934:4;9922:17;;9916:24;9894:20;;;9887:54;9989:17;;9983:24;-1:-1:-1;;;;;9979:49:122;9957:20;;;9950:79;-1:-1:-1;;;;;10065:32:122;;;10045:18;;;10038:60;10114:19;;;10107:35;;;;9801:19;;2947:106:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2701:359;2640:420;;:::o;3792:158::-;1531:13:100;:11;:13::i;:::-;3887:9:72::1;:22:::0;;;;3919:10:::1;:24:::0;3792:158::o;3124:480::-;-1:-1:-1;;;;;;;;;;;;;;;;;3292:26:72;;1866:8;-1:-1:-1;;;;;1866:22:72;1878:10;1866:22;1862:74;;1911:14;;-1:-1:-1;;;1911:14:72;;;;;;;;;;;1862:74;3368:29:::1;;3389:7:::0;3368:29:::1;:::i;:::-;:20;:29::i;:::-;3352:45;;3418:8;:15;3437:1;3418:20;:47;;3457:8;3418:47;;;3441:13;3418:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3408:57;;3475:50;3502:13;3517:7;3475:26;:50::i;:::-;3542:55;;;;;;;;3555:9;;3542:55;;;;3566:13;:30;;3595:1;3566:30;;;3582:10;;3566:30;3542:55:::0;;3536:61;3124:480;;-1:-1:-1;3124:480:72;-1:-1:-1;3124:480:72;-1:-1:-1;;3124:480:72:o;2293:101:100:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;1526:26:72:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4451:379::-;1531:13:100;:11;:13::i;:::-;-1:-1:-1;;;;;4542:19:72;::::1;4538:74;;4584:17;;-1:-1:-1::0;;;4584:17:72::1;;;;;;;;;;;4538:74;4621:15;4660:8;-1:-1:-1::0;;;;;4639:38:72::1;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4621:58:::0;-1:-1:-1;;;;;;4693:23:72;::::1;4689:83;;4739:22;;-1:-1:-1::0;;;4739:22:72::1;;;;;;;;;;;4689:83;4781:42;-1:-1:-1::0;;;;;4781:28:72;::::1;4810:3:::0;4815:7;4781:28:::1;:42::i;:::-;4528:302;4451:379:::0;;:::o;3956:124::-;1531:13:100;:11;:13::i;:::-;4039:15:72::1;:34:::0;;-1:-1:-1;;;;;;4039:34:72::1;-1:-1:-1::0;;;;;4039:34:72;;;::::1;::::0;;;::::1;::::0;;3956:124::o;4886:246::-;-1:-1:-1;;;;;;;;;;;;;;;;;5070:55:72;;;;;;;;5083:9;;5070:55;;;;5094:13;:30;;5123:1;5094:30;;;5110:10;;5094:30;5070:55;;5063:62;4886:246;-1:-1:-1;;;;;4886:246:72:o;3665:121::-;1531:13:100;:11;:13::i;:::-;3749::72::1;:30;3765:14:::0;3749:13;:30:::1;:::i;:::-;;3665:121:::0;:::o;2543:215:100:-;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:100;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:100;;2700:1:::1;2672:31;::::0;::::1;674:51:122::0;647:18;;2672:31:100::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;4086:359:72:-;1531:13:100;:11;:13::i;:::-;-1:-1:-1;;;;;4170:19:72;::::1;4166:74;;4212:17;;-1:-1:-1::0;;;4212:17:72::1;;;;;;;;;;;4166:74;4250:20;4294:8;-1:-1:-1::0;;;;;4273:42:72::1;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4250:67;;4388:50;4411:12;4425:3;4430:7;4388:22;:50::i;2230:148:50:-:0;2293:6;2332:37;605:2;557:1;2332:7;;:37;:::i;:::-;2325:45;;;:::i;:::-;2318:53;;;2230:148;-1:-1:-1;;;2230:148:50:o;2384:142::-;2447:7;2481:37;655:2;605;2481:7;;:37;:::i;:::-;2473:46;;;:::i;:::-;2466:53;2384:142;-1:-1:-1;;;2384:142:50:o;2078:146::-;2140:6;2179:36;557:1;493;2179:7;;:36;:::i;:::-;2172:44;;;:::i;:::-;2165:52;;;2078:146;-1:-1:-1;;;2078:146:50:o;2976:130::-;3044:7;3070:29;:17;3079:7;;3070:8;:17::i;:::-;1210:15:42;1084:151;3397:132:50;3461:14;;3500:21;:7;785:2;3500:7;;:21;:::i;:::-;3487:35;;;;3397:132;;;;;;:::o;1796:162:100:-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:100;735:10:110;1855:23:100;1851:101;;1901:40;;-1:-1:-1;;;1901:40:100;;735:10:110;1901:40:100;;;674:51:122;647:18;;1901:40:100;497:234:122;872:385:50;1046:13;;1073:14;;;;;1101;;;;;934:26;1141:14;;;;1169:16;;;;1199:12;;;;1225:15;;;;988:262;;934:26;;988:262;;319:1;;1046:13;;1073:14;;-1:-1:-1;;;;;1101:24:50;;988:262;;:::i;:::-;;;;;;;;;;;;;972:278;;872:385;;;:::o;5661:173:72:-;5776:10;;:51;;-1:-1:-1;;;5776:51:72;;-1:-1:-1;;;;;5776:10:72;;;;:25;;:51;;5802:14;;5818:8;;5776:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5661:173;;:::o;2912:187:100:-;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:100;;;-1:-1:-1;;;;;;3020:17:100;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;1271:160:108:-;1380:43;;;-1:-1:-1;;;;;16712:32:122;;1380:43:108;;;16694:51:122;16761:18;;;;16754:34;;;1380:43:108;;;;;;;;;;16667:18:122;;;;1380:43:108;;;;;;;;-1:-1:-1;;;;;1380:43:108;-1:-1:-1;;;1380:43:108;;;1353:71;;1373:5;;1353:19;:71::i;896:222:46:-;-1:-1:-1;;;;;987:22:46;;983:129;;1025:19;1032:3;1037:6;1025;:19::i;983:129::-;1075:26;1081:6;1089:3;1094:6;1075:5;:26::i;2827:143:50:-;2892:7;2926:36;785:2;706;2926:7;;:36;:::i;7738:720:108:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:108;8278:8;8234:16;;-1:-1:-1;8310:15:108;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:108;;;:31;8310:68;8306:146;;;8401:40;;-1:-1:-1;;;8401:40:108;;-1:-1:-1;;;;;692:32:122;;8401:40:108;;;674:51:122;647:18;;8401:40:108;497:234:122;8306:146:108;7808:650;;7738:720;;:::o;438:252:46:-;-1:-1:-1;;;;;506:19:46;;502:58;;534:26;;-1:-1:-1;;;534:26:46;;;;;;;;;;;502:58;571:12;589:3;-1:-1:-1;;;;;589:8:46;606:6;589:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;570:48;;;633:7;628:55;;649:34;;-1:-1:-1;;;649:34:46;;-1:-1:-1;;;;;16712:32:122;;649:34:46;;;16694:51:122;16761:18;;;16754:34;;;16667:18;;649:34:46;16520:274:122;696:194:46;-1:-1:-1;;;;;779:19:46;;775:58;;807:26;;-1:-1:-1;;;807:26:46;;;;;;;;;;;775:58;843:40;-1:-1:-1;;;;;843:27:46;;871:3;876:6;843:27;:40::i;14:286:122:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:122;;209:43;;199:71;;266:1;263;256:12;736:347;787:8;797:6;851:3;844:4;836:6;832:17;828:27;818:55;;869:1;866;859:12;818:55;-1:-1:-1;892:20:122;;-1:-1:-1;;;;;924:30:122;;921:50;;;967:1;964;957:12;921:50;1004:4;996:6;992:17;980:29;;1056:3;1049:4;1040:6;1032;1028:19;1024:30;1021:39;1018:59;;;1073:1;1070;1063:12;1088:409;1158:6;1166;1219:2;1207:9;1198:7;1194:23;1190:32;1187:52;;;1235:1;1232;1225:12;1187:52;1275:9;1262:23;-1:-1:-1;;;;;1300:6:122;1297:30;1294:50;;;1340:1;1337;1330:12;1294:50;1379:58;1429:7;1420:6;1409:9;1405:22;1379:58;:::i;:::-;1456:8;;1353:84;;-1:-1:-1;1088:409:122;-1:-1:-1;;;;1088:409:122:o;1502:347::-;1653:2;1638:18;;1686:1;1675:13;;1665:144;;1731:10;1726:3;1722:20;1719:1;1712:31;1766:4;1763:1;1756:15;1794:4;1791:1;1784:15;1665:144;1818:25;;;1502:347;:::o;2062:248::-;2130:6;2138;2191:2;2179:9;2170:7;2166:23;2162:32;2159:52;;;2207:1;2204;2197:12;2159:52;-1:-1:-1;;2230:23:122;;;2300:2;2285:18;;;2272:32;;-1:-1:-1;2062:248:122:o;2315:155::-;2374:5;2419:3;2410:6;2405:3;2401:16;2397:26;2394:46;;;2436:1;2433;2426:12;2394:46;-1:-1:-1;2458:6:122;2315:155;-1:-1:-1;2315:155:122:o;2475:127::-;2536:10;2531:3;2527:20;2524:1;2517:31;2567:4;2564:1;2557:15;2591:4;2588:1;2581:15;2607:248;2674:2;2668:9;2716:4;2704:17;;-1:-1:-1;;;;;2736:34:122;;2772:22;;;2733:62;2730:88;;;2798:18;;:::i;:::-;2834:2;2827:22;2607:248;:::o;2860:718::-;2902:5;2955:3;2948:4;2940:6;2936:17;2932:27;2922:55;;2973:1;2970;2963:12;2922:55;3009:6;2996:20;-1:-1:-1;;;;;3072:2:122;3068;3065:10;3062:36;;;3078:18;;:::i;:::-;3153:2;3147:9;3121:2;3207:13;;-1:-1:-1;;3203:22:122;;;3227:2;3199:31;3195:40;3183:53;;;3251:18;;;3271:22;;;3248:46;3245:72;;;3297:18;;:::i;:::-;3337:10;3333:2;3326:22;3372:2;3364:6;3357:18;3418:3;3411:4;3406:2;3398:6;3394:15;3390:26;3387:35;3384:55;;;3435:1;3432;3425:12;3384:55;3499:2;3492:4;3484:6;3480:17;3473:4;3465:6;3461:17;3448:54;3546:1;3539:4;3534:2;3526:6;3522:15;3518:26;3511:37;3566:6;3557:15;;;;;;2860:718;;;;:::o;3583:160::-;3648:20;;3704:13;;3697:21;3687:32;;3677:60;;3733:1;3730;3723:12;3677:60;3583:160;;;:::o;3748:641::-;3857:6;3865;3873;3926:2;3914:9;3905:7;3901:23;3897:32;3894:52;;;3942:1;3939;3932:12;3894:52;3982:9;3969:23;-1:-1:-1;;;;;4052:2:122;4044:6;4041:14;4038:34;;;4068:1;4065;4058:12;4038:34;4091:66;4149:7;4140:6;4129:9;4125:22;4091:66;:::i;:::-;4081:76;;4210:2;4199:9;4195:18;4182:32;4166:48;;4239:2;4229:8;4226:16;4223:36;;;4255:1;4252;4245:12;4223:36;;4278:51;4321:7;4310:8;4299:9;4295:24;4278:51;:::i;:::-;4268:61;;;4348:35;4379:2;4368:9;4364:18;4348:35;:::i;:::-;4338:45;;3748:641;;;;;:::o;4552:250::-;4637:1;4647:113;4661:6;4658:1;4655:13;4647:113;;;4737:11;;;4731:18;4718:11;;;4711:39;4683:2;4676:10;4647:113;;;-1:-1:-1;;4794:1:122;4776:16;;4769:27;4552:250::o;4807:270::-;4848:3;4886:5;4880:12;4913:6;4908:3;4901:19;4929:76;4998:6;4991:4;4986:3;4982:14;4975:4;4968:5;4964:16;4929:76;:::i;:::-;5059:2;5038:15;-1:-1:-1;;5034:29:122;5025:39;;;;5066:4;5021:50;;4807:270;-1:-1:-1;;4807:270:122:o;5082:534::-;4472:12;;4460:25;;4534:4;4523:16;;;4517:23;4501:14;;;4494:47;5430:3;5425:2;5414:9;5410:18;5403:31;5326:4;5457:45;5497:3;5486:9;5482:19;5474:6;5457:45;:::i;:::-;5550:9;5542:6;5538:22;5533:2;5522:9;5518:18;5511:50;5578:32;5603:6;5595;5578:32;:::i;:::-;5570:40;5082:534;-1:-1:-1;;;;;;5082:534:122:o;6171:163::-;6238:20;;6298:10;6287:22;;6277:33;;6267:61;;6324:1;6321;6314:12;6339:184;6397:6;6450:2;6438:9;6429:7;6425:23;6421:32;6418:52;;;6466:1;6463;6456:12;6418:52;6489:28;6507:9;6489:28;:::i;6725:217::-;6872:2;6861:9;6854:21;6835:4;6892:44;6932:2;6921:9;6917:18;6909:6;6892:44;:::i;6947:131::-;-1:-1:-1;;;;;7022:31:122;;7012:42;;7002:70;;7068:1;7065;7058:12;7083:134;7151:20;;7180:31;7151:20;7180:31;:::i;7222:315::-;7290:6;7298;7351:2;7339:9;7330:7;7326:23;7322:32;7319:52;;;7367:1;7364;7357:12;7319:52;7406:9;7393:23;7425:31;7450:5;7425:31;:::i;:::-;7475:5;7527:2;7512:18;;;;7499:32;;-1:-1:-1;;;7222:315:122:o;7724:247::-;7783:6;7836:2;7824:9;7815:7;7811:23;7807:32;7804:52;;;7852:1;7849;7842:12;7804:52;7891:9;7878:23;7910:31;7935:5;7910:31;:::i;7976:730::-;8087:6;8095;8103;8111;8164:2;8152:9;8143:7;8139:23;8135:32;8132:52;;;8180:1;8177;8170:12;8132:52;8220:9;8207:23;-1:-1:-1;;;;;8290:2:122;8282:6;8279:14;8276:34;;;8306:1;8303;8296:12;8276:34;8329:66;8387:7;8378:6;8367:9;8363:22;8329:66;:::i;:::-;8319:76;;8448:2;8437:9;8433:18;8420:32;8404:48;;8477:2;8467:8;8464:16;8461:36;;;8493:1;8490;8483:12;8461:36;;8532:60;8584:7;8573:8;8562:9;8558:24;8532:60;:::i;:::-;8611:8;;-1:-1:-1;8506:86:122;-1:-1:-1;8665:35:122;;-1:-1:-1;8696:2:122;8681:18;;8665:35;:::i;:::-;8655:45;;7976:730;;;;;;;:::o;8711:261::-;4472:12;;4460:25;;4534:4;4523:16;;;4517:23;4501:14;;;4494:47;8905:2;8890:18;;8917:49;4394:153;8977:320;9045:6;9098:2;9086:9;9077:7;9073:23;9069:32;9066:52;;;9114:1;9111;9104:12;9066:52;9154:9;9141:23;-1:-1:-1;;;;;9179:6:122;9176:30;9173:50;;;9219:1;9216;9209:12;9173:50;9242:49;9283:7;9274:6;9263:9;9259:22;9242:49;:::i;:::-;9232:59;8977:320;-1:-1:-1;;;;8977:320:122:o;9302:271::-;9485:6;9477;9472:3;9459:33;9441:3;9511:16;;9536:13;;;9511:16;9302:271;-1:-1:-1;9302:271:122:o;10153:171::-;10220:20;;-1:-1:-1;;;;;10269:30:122;;10259:41;;10249:69;;10314:1;10311;10304:12;10329:841;10429:9;10488:4;10480:5;10464:14;10460:26;10456:37;10453:57;;;10506:1;10503;10496:12;10453:57;10534:17;;:::i;:::-;10576:24;10594:5;10576:24;:::i;:::-;10567:7;10560:41;10635:33;10664:2;10657:5;10653:14;10635:33;:::i;:::-;10630:2;10621:7;10617:16;10610:59;10703:34;10733:2;10726:5;10722:14;10703:34;:::i;:::-;10698:2;10689:7;10685:16;10678:60;10772:33;10801:2;10794:5;10790:14;10772:33;:::i;:::-;10767:2;10758:7;10754:16;10747:59;10865:3;10858:5;10854:15;10841:29;10835:3;10826:7;10822:17;10815:56;10930:3;10923:5;10919:15;10906:29;10900:3;10891:7;10887:17;10880:56;10983:3;10976:5;10972:15;10959:29;-1:-1:-1;;;;;11003:6:122;11000:30;10997:50;;;11043:1;11040;11033:12;10997:50;11082:52;11119:14;11110:6;11103:5;11099:18;11082:52;:::i;:::-;11076:3;11063:17;;11056:79;-1:-1:-1;11067:7:122;10329:841;-1:-1:-1;;10329:841:122:o;11175:380::-;11254:1;11250:12;;;;11297;;;11318:61;;11372:4;11364:6;11360:17;11350:27;;11318:61;11425:2;11417:6;11414:14;11394:18;11391:38;11388:161;;11471:10;11466:3;11462:20;11459:1;11452:31;11506:4;11503:1;11496:15;11534:4;11531:1;11524:15;11560:251;11630:6;11683:2;11671:9;11662:7;11658:23;11654:32;11651:52;;;11699:1;11696;11689:12;11651:52;11731:9;11725:16;11750:31;11775:5;11750:31;:::i;11941:517::-;12042:2;12037:3;12034:11;12031:421;;;12078:5;12075:1;12068:16;12122:4;12119:1;12109:18;12192:2;12180:10;12176:19;12173:1;12169:27;12163:4;12159:38;12228:4;12216:10;12213:20;12210:47;;;-1:-1:-1;12251:4:122;12210:47;12306:2;12301:3;12297:12;12294:1;12290:20;12284:4;12280:31;12270:41;;12361:81;12379:2;12372:5;12369:13;12361:81;;;12438:1;12424:16;;12405:1;12394:13;12361:81;;;12365:3;;11941:517;;;:::o;12634:1341::-;12758:3;12752:10;-1:-1:-1;;;;;12777:6:122;12774:30;12771:56;;;12807:18;;:::i;:::-;12836:96;12925:6;12885:38;12917:4;12911:11;12885:38;:::i;:::-;12879:4;12836:96;:::i;:::-;12987:4;;13044:2;13033:14;;13061:1;13056:662;;;;13762:1;13779:6;13776:89;;;-1:-1:-1;13831:19:122;;;13825:26;13776:89;-1:-1:-1;;12591:1:122;12587:11;;;12583:24;12579:29;12569:40;12615:1;12611:11;;;12566:57;13878:81;;13026:943;;13056:662;11888:1;11881:14;;;11925:4;11912:18;;-1:-1:-1;;13092:20:122;;;13209:236;13223:7;13220:1;13217:14;13209:236;;;13312:19;;;13306:26;13291:42;;13404:27;;;;13372:1;13360:14;;;;13239:19;;13209:236;;;13213:3;13473:6;13464:7;13461:19;13458:201;;;13534:19;;;13528:26;-1:-1:-1;;13617:1:122;13613:14;;;13629:3;13609:24;13605:37;13601:42;13586:58;13571:74;;13458:201;-1:-1:-1;;;;;13705:1:122;13689:14;;;13685:22;13672:36;;-1:-1:-1;12634:1341:122:o;13980:331::-;14085:9;14096;14138:8;14126:10;14123:24;14120:44;;;14160:1;14157;14150:12;14120:44;14189:6;14179:8;14176:20;14173:40;;;14209:1;14206;14199:12;14173:40;-1:-1:-1;;14235:23:122;;;14280:25;;;;;-1:-1:-1;13980:331:122:o;14316:323::-;-1:-1:-1;;;;;;14436:19:122;;14512:11;;;;14543:1;14535:10;;14532:101;;;14620:2;14614;14607:3;14604:1;14600:11;14597:1;14593:19;14589:28;14585:2;14581:37;14577:46;14568:55;;14532:101;;;14316:323;;;;:::o;14644:255::-;14764:19;;14803:2;14795:11;;14792:101;;;-1:-1:-1;;14864:2:122;14860:12;;;14857:1;14853:20;14849:33;14838:45;14644:255;;;;:::o;14904:331::-;-1:-1:-1;;;;;;15024:19:122;;15108:11;;;;15139:1;15131:10;;15128:101;;;15200:1;15196:11;;;;15193:1;15189:19;15185:28;;;15177:37;15173:46;;;;14904:331;-1:-1:-1;;14904:331:122:o;15240:893::-;15616:3;15611;15607:13;15598:6;15593:3;15589:16;15585:36;15580:3;15573:49;-1:-1:-1;;;;;15677:3:122;15673:28;15664:6;15659:3;15655:16;15651:51;15647:1;15642:3;15638:11;15631:72;15555:3;15731:10;15726:3;15722:20;15793:2;15784:6;15779:3;15775:16;15771:25;15767:1;15762:3;15758:11;15751:46;15827:6;15822:2;15817:3;15813:12;15806:28;15886:2;15877:6;15872:3;15868:16;15864:25;15859:2;15854:3;15850:12;15843:47;;15920:6;15915:2;15910:3;15906:12;15899:28;15957:6;15952:2;15947:3;15943:12;15936:28;15993:6;15987:13;16009:76;16078:6;16072:3;16067;16063:13;16056:4;16048:6;16044:17;