0 txs
1 call
constructor
constructor(address _multiWrapper, address[] existingOracles, uint8[] oracleTypes, address[] existingConnectors, address wBase, address owner_)
functions
connectors
viewfunction connectors() view returns (address[] allConnectors)
getManyRatesToEthWithCustomConnectors
viewfunction getManyRatesToEthWithCustomConnectors(address[] srcTokens, bool useWrappers, address[] customConnectors, uint256 thresholdFilter) view returns (uint256[] weightedRates)
getManyRatesWithCustomConnectors
viewfunction getManyRatesWithCustomConnectors(address[] srcTokens, address dstToken, bool useWrappers, address[] customConnectors, uint256 thresholdFilter) view returns (uint256[] weightedRates)
getManyRatesWithCustomConnectorsAndOracles
viewfunction getManyRatesWithCustomConnectorsAndOracles(address[] srcTokens, address dstToken, bool useWrappers, address[] customConnectors, address[] customOracles, uint256 thresholdFilter) view returns (uint256[] weightedRates)
getRate
viewfunction getRate(address srcToken, address dstToken, bool useWrappers) view returns (uint256 weightedRate)
getRateToEth
viewfunction getRateToEth(address srcToken, bool useSrcWrappers) view returns (uint256 weightedRate)
getRateToEthWithCustomConnectors
viewfunction getRateToEthWithCustomConnectors(address srcToken, bool useSrcWrappers, address[] customConnectors, uint256 thresholdFilter) view returns (uint256 weightedRate)
getRateToEthWithThreshold
viewfunction getRateToEthWithThreshold(address srcToken, bool useSrcWrappers, uint256 thresholdFilter) view returns (uint256 weightedRate)
getRateWithCustomConnectors
viewfunction getRateWithCustomConnectors(address srcToken, address dstToken, bool useWrappers, address[] customConnectors, uint256 thresholdFilter) view returns (uint256 weightedRate)
getRateWithCustomConnectorsAndOracles
viewfunction getRateWithCustomConnectorsAndOracles(address srcToken, address dstToken, bool useWrappers, address[] customConnectors, address[] customOracles, uint256 thresholdFilter) view returns (uint256 weightedRate)
getRateWithThreshold
viewfunction getRateWithThreshold(address srcToken, address dstToken, bool useWrappers, uint256 thresholdFilter) view returns (uint256 weightedRate)
multiWrapper
viewfunction multiWrapper() view returns (address)
oracles
viewfunction oracles() view returns (address[] allOracles, uint8[] oracleTypes)
owner
viewfunction owner() view returns (address)
addConnector
nonpayablefunction addConnector(address connector)
addOracle
nonpayablefunction addOracle(address oracle, uint8 oracleKind)
removeConnector
nonpayablefunction removeConnector(address connector)
removeOracle
nonpayablefunction removeOracle(address oracle, uint8 oracleKind)
renounceOwnership
nonpayablefunction renounceOwnership()
setMultiWrapper
nonpayablefunction setMultiWrapper(address _multiWrapper)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ConnectorAdded
event ConnectorAdded(address connector)
ConnectorRemoved
event ConnectorRemoved(address connector)
MultiWrapperUpdated
event MultiWrapperUpdated(address multiWrapper)
OracleAdded
event OracleAdded(address oracle, uint8 oracleType)
OracleRemoved
event OracleRemoved(address oracle, uint8 oracleType)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
ArraysLengthMismatch
error ArraysLengthMismatch()
ConnectorAlreadyAdded
error ConnectorAlreadyAdded()
InvalidOracleTokenKind
error InvalidOracleTokenKind()
MathOverflowedMulDiv
error MathOverflowedMulDiv()
OracleAlreadyAdded
error OracleAlreadyAdded()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SameTokens
error SameTokens()
TooBigThreshold
error TooBigThreshold()
UnknownConnector
error UnknownConnector()
UnknownOracle
error UnknownOracle()
creation bytecode
0x604060a0815234620004475762002ed6803803806200001e816200049a565b92833981019060c081830312620004475780516001600160a01b038082169490929091859003620004475760208181015190936001600160401b03929091838111620004475781019686601f8901121562000447578751976200008b620000858a620004d4565b6200049a565b9887808b838152019160051b8301019189831162000447578801905b828210620004805750505084820151848111620004475782019387601f860112156200044757845194620000df6200008587620004d4565b95888088838152019160051b830101918a831162000447578901905b82821062000466575050506060830151908111620004475782019680601f8901121562000447578751620001336200008582620004d4565b9888808b848152019260051b820101928311620004475788809101915b8383106200044b575050505060a06200016c60808401620004ec565b9201518381168091036200044757801562000430575f5460018060a01b03199180838316175f5585885192167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a38951865103620004215750817f1030152fe2062b574a830e6b9f13c65995990df31e4dc708d142533bb3ad0f5292889260075416176007558651908152a15f5b87518110156200037c576200021c62000216828662000501565b6200052a565b9060039182811015620002ad57620002d25762000247846200023f838c62000501565b511662000538565b15620002c1575b836200025b828b62000501565b51166200026d62000216838862000501565b928751918252831015620002ad5786816001948a7f5874b2072ff37562df54063dd700c59d45f311bdf6f9cabb5a15f0ffb2e9f622940152a101620001fc565b634e487b7160e01b5f52602160045260245ffd5b8551633295224f60e11b8152600490fd5b620002e262000216828762000501565b82811015620002ad5760010362000322576200030c8462000304838c62000501565b511662000594565b6200024e578551633295224f60e11b8152600490fd5b6200033262000216828762000501565b82811015620002ad576002036200036b5762000354846200023f838c62000501565b15620002c1576200030c8462000304838c62000501565b85516398420d9360e01b8152600490fd5b50848492875f5b8151811015620003fe57620003a6836200039e838562000501565b51166200060a565b15620003ed57807fff88af5d962d47fd25d87755e8267a029fad5a91740c67d0dade2bdbe5268a1d8585620003de6001958762000501565b51168951908152a10162000383565b8551630a606b6760e41b8152600490fd5b858560805251612855908162000681823960805181818161128401526115470152f35b6307e11acb60e51b8152600490fd5b8551631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b81906200045884620004ec565b815201910190889062000150565b8151600381101562000447578152908901908901620000fb565b8151868116810362000447578152908801908801620000a7565b6040519190601f01601f191682016001600160401b03811183821017620004c057604052565b634e487b7160e01b5f52604160045260245ffd5b6001600160401b038111620004c05760051b60200190565b51906001600160a01b03821682036200044757565b8051821015620005165760209160051b010190565b634e487b7160e01b5f52603260045260245ffd5b516003811015620002ad5790565b805f52600260205260405f2054155f146200058f57600190815468010000000000000000811015620004c05782810180845581101562000516578190835f5260205f2001558154905f52600260205260405f205590565b505f90565b805f52600460205260405f2054155f146200058f5760035468010000000000000000811015620004c057600181018060035581101562000516577fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b018190556003545f9182526004602052604090912055600190565b805f52600660205260405f2054155f146200058f5760055468010000000000000000811015620004c057600181018060055581101562000516577f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018190556005545f918252600660205260409091205560019056fe604060c0815260049081361015610014575f80fd5b5f3560e01c80630adbe52914610b395780631439ee6514610a515780631a6c6a98146109dd5780632857373a1461093357806328aa762b1461087957806365050a681461079d5780636744d6c71461074b5780636f9293b9146106e6578063715018a61461068f57806378159aae1461064f5780637de4fd1014610614578063802431fb146105c65780638da5cb5b1461059f5780639d4d7b1c146104a1578063aa16d4c01461042d578063ade8b048146103db578063b77910dc146103b3578063cdfa27cf14610327578063d0626518146102ba578063f0b92e40146101955763f2fde38b14610103575f80fd5b34610191576020366003190112610191576001600160a01b0382358181169391929084900361019157610134611c64565b831561017b5750505f54826bffffffffffffffffffffffff60a01b8216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b905f6024925191631e4fbdf760e01b8352820152fd5b5f80fd5b509034610191576101a536610e08565b916101ae611c64565b60038310156102a75782610217576101ce6001600160a01b0383166122cb565b1561020957506102047f7a7f56716fe703fb190529c336e57df71ab88188ba47e8d786bac684b61ab9a6935b5192839283611126565b0390a1005b8351634a22536d60e11b8152fd5b60018303610261576102316001600160a01b038316612370565b1561020957506102047f7a7f56716fe703fb190529c336e57df71ab88188ba47e8d786bac684b61ab9a6936101fa565b60028303610299576001600160a01b03821661027c816122cb565b1561028a5761023190612370565b508351634a22536d60e11b8152fd5b83516398420d9360e01b8152fd5b602190634e487b7160e01b5f525260245ffd5b50903461019157602036600319011261019157356001600160a01b0381169190829003610191577f1030152fe2062b574a830e6b9f13c65995990df31e4dc708d142533bb3ad0f529160209161030e611c64565b600780546001600160a01b0319168317905551908152a1005b50346101915760c036600319011261019157610341610c44565b9161034a610c2e565b92610353610c5a565b6001600160401b039490606435868111610191576103749036908601610dea565b906084359687116101915736602388011215610191576103a26103ac9588602460209a369301359101610d8c565b9260a43594611a4a565b9051908152f35b5034610191575f3660031901126101915760075490516001600160a01b039091168152602090f35b5034610191576080366003190112610191576103f5610c44565b916103fe610c69565b92604435936001600160401b038511610191576104236103ac93602096369101610dea565b9060643592611516565b503461019157602036600319011261019157610447610c44565b61044f611c64565b6001600160a01b031691610462836124f7565b15610493577fff88af5d962d47fd25d87755e8267a029fad5a91740c67d0dade2bdbe5268a1d6020848451908152a1005b9051630a606b6760e41b8152fd5b509034610191576104b136610e08565b916104ba611c64565b60038310156102a7578261051d576104da6001600160a01b038316612456565b1561050f57506102047f5874b2072ff37562df54063dd700c59d45f311bdf6f9cabb5a15f0ffb2e9f622935192839283611126565b8351633295224f60e11b8152fd5b60018303610567576105376001600160a01b0383166124a9565b1561050f57506102047f5874b2072ff37562df54063dd700c59d45f311bdf6f9cabb5a15f0ffb2e9f622936101fa565b60028303610299576001600160a01b03821661058281612456565b1561059057610537906124a9565b508351633295224f60e11b8152fd5b5034610191575f366003190112610191575f5490516001600160a01b039091168152602090f35b5034610191576060366003190112610191576020906103ac6105e6610c44565b6105ee610c2e565b6105f6610c5a565b84519161060283610d39565b5f835261060d610f6d565b509361180a565b50346101915780600319360112610191576020906103ac610633610c44565b61063b610c69565b83519161064783610d39565b5f8352611267565b5034610191576060366003190112610191576020906103ac61066f610c44565b610677610c69565b83519061068382610d39565b5f825260443592611516565b34610191575f366003190112610191576106a7611c64565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346101915760a036600319011261019157610700610c44565b91610709610c2e565b92610712610c5a565b93606435946001600160401b038611610191576107376103ac94602097369101610dea565b90610740610f6d565b509260843594611a4a565b5034610191576080366003190112610191576020906103ac61076b610c44565b610773610c2e565b61077b610c5a565b84519061078782610d39565b5f8252610792610f6d565b509260643594611a4a565b5034610191575f3660031901126101915760058054906107bc82610e37565b915f5b83518110156108295781811015610816575f8390527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0810154600191906001600160a01b031661080f8287610eae565b52016107bf565b603286634e487b7160e01b5f525260245ffd5b505050908051918291602090602080850191818652845180935285019301915f5b82811061085957505050500390f35b83516001600160a01b03168552869550938101939281019260010161084a565b509034610191576080366003190112610191576001600160401b038135818111610191576108aa9036908401610bfe565b9290916108b5610c69565b91604435918211610191576108cc91369101610bfe565b9091606435926108db86610e37565b955f5b8181106108f6578851806108f28a82610c78565b0390f35b806109228761091061090b600195878d610e69565b610e8d565b8761091c368b8a610d8c565b91611516565b61092c828b610eae565b52016108de565b5034610191575f3660031901126101915761094c610f6d565b8251838152825193810184905292839260209160608501918301905f5b8181106109bd57505050838103828501528180845192838152019301915f5b82811061099757505050500390f35b91938395509080826109ad600194839751610cb3565b0195019101918594939192610988565b82516001600160a01b031684528796509284019291840191600101610969565b5034610191576020366003190112610191576109f7610c44565b6109ff611c64565b6001600160a01b031691610a12836121f6565b15610a43577f6825b26a0827e9c2ceca01d6289ce4a40e629dc074ec48ea4727d1afbff359f56020848451908152a1005b905163185e8acd60e11b8152fd5b5090346101915760c0366003190112610191576001600160401b03813581811161019157610a829036908401610bfe565b929091610a8d610c2e565b610a95610c5a565b60643583811161019157610aac9036908601610bfe565b93909460843591821161019157610ac591369101610bfe565b929060a43595610ad489610e37565b985f5b818110610aeb578b51806108f28d82610c78565b808b610b3282610b2c8d8f8d8f918d8f918e610b1e8f8f60019f61090b90610b1692610b2697610e69565b973691610d8c565b943691610d8c565b93611a4a565b92610eae565b5201610ad7565b5090346101915760a0366003190112610191576001600160401b03813581811161019157610b6a9036908401610bfe565b929091610b75610c2e565b90610b7e610c5a565b9260643591821161019157610b9591369101610bfe565b91909260843593610ba587610e37565b965f5b818110610bbc578951806108f28b82610c78565b80610bed88610bd161090b600195878e610e69565b610bdc368b89610d8c565b888a610be6610f6d565b5093611a4a565b610bf7828c610eae565b5201610ba8565b9181601f84011215610191578235916001600160401b038311610191576020808501948460051b01011161019157565b602435906001600160a01b038216820361019157565b600435906001600160a01b038216820361019157565b60443590811515820361019157565b60243590811515820361019157565b60209060206040818301928281528551809452019301915f5b828110610c9f575050505090565b835185529381019392810192600101610c91565b906003821015610cc05752565b634e487b7160e01b5f52602160045260245ffd5b604081019081106001600160401b03821117610cef57604052565b634e487b7160e01b5f52604160045260245ffd5b60e081019081106001600160401b03821117610cef57604052565b606081019081106001600160401b03821117610cef57604052565b602081019081106001600160401b03821117610cef57604052565b90601f801991011681019081106001600160401b03821117610cef57604052565b6001600160401b038111610cef5760051b60200190565b9291610d9782610d75565b91610da56040519384610d54565b829481845260208094019160051b810192831161019157905b828210610dcb5750505050565b81356001600160a01b0381168103610191578152908301908301610dbe565b9080601f8301121561019157816020610e0593359101610d8c565b90565b6040906003190112610191576004356001600160a01b0381168103610191579060243560038110156101915790565b90610e4182610d75565b610e4e6040519182610d54565b8281528092610e5f601f1991610d75565b0190602036910137565b9190811015610e795760051b0190565b634e487b7160e01b5f52603260045260245ffd5b356001600160a01b03811681036101915790565b805115610e795760200190565b8051821015610e795760209160051b010190565b600554811015610e795760055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db001905f90565b600154811015610e795760015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601905f90565b600354811015610e795760035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01905f90565b6003821015610cc05752565b6001805491600391600354610f83818601610e37565b93610f8e8551610e37565b95835f5b8281106110d6575050915f5b818110611019575050610fb082610e37565b95610fba83610e37565b955f5b848110610fcc57505050505050565b6001600160a01b03610fde8284610eae565b5116610fea828b610eae565b52610ff58184610eae565b519084821015610cc057611013879261100e838c610eae565b610f61565b01610fbd565b5f8381527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8201546001600160a01b039081169291879187918390815b61109a575b50505085821015610cc05787938a858414611091575b9161100e916110848261108b9695610eae565b528c610eae565b01610f9e565b97850197611071565b868d80518310156110cf576110b0838692610eae565b5116146110bf57810181611056565b93505050506002905f888161105b565b505061105b565b5f8290527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68101546001600160a01b0316611111828a610eae565b525f61111d828b610eae565b52018490610f92565b6001600160a01b0390911681526040810192916111469160200190610cb3565b565b6040519060035480835282602091602082019060035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b935f905b82821061119a5750505061114692500383610d54565b855484526001958601958895509381019390910190611184565b60405190816001805490818352602090602084019260015f527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6925f905b82821061120a57505050505090611146910383610d54565b845486528896509485019493830193908301906111f2565b8181029291811591840414171561123557565b634e487b7160e01b5f52601160045260245ffd5b906002811015610e795760051b0190565b9190820180921161123557565b9061127191611c8f565b916040519161127f83610cd4565b5f83527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166020840152604051906112be82610cd4565b6112c6611148565b82526112e06112d36111b4565b9360208401948552611e44565b9281518060011b90808204600214901517156112355761132e9161131661131c6113299361131689515160208b0151519061125a565b90611222565b918651519051519061125a565b611ee1565b915f5b8251811015611502575f5b6002811061134d5750600101611331565b9096906001600160a01b036113628986610eae565b51166001600160a01b03611376838a611249565b5116146114ed575f5b60028110611393575060010196909661133c565b94969193959790925f985b6113a88782611249565b51518a10156114db576001600160a01b036113cd8b6113c78a85611249565b51610eae565b5116966001600160a01b036113e2858b610eae565b5116881480156114bf575b6114b4575f5b6113fd8785611249565b51518110156114a5578061149e6114988c8b8b8b61145861144a8d8d61142f60019c6113c7888f8060a01b0394611249565b511696611442828d8060a01b0392610eae565b511695610eae565b5192898060a01b0392611249565b5116916040519361146885610d03565b8452602084015260408301526060820152670de0b6b3a764000060808201528c60a08201525f60c0820152611f22565b8d612033565b50016113f3565b509650986001905b019861139e565b9650986001906114ad565b506001600160a01b036114d28787611249565b511688146113ed565b9694929795600191949299500161137f565b5093505050506114fe929150610eae565b5190565b5050509150506115129150612091565b5090565b9092919260648310156117da5761152c91611c8f565b906040519161153a83610cd4565b5f83526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116602085015260405190929061157c81610cd4565b611584611148565b815261159e6115916111b4565b9760208301988952611e44565b60805281519260019784891b60029580820460021490151715611235576115df9161131661131c61132993611316608051515160206080510151519061125a565b95885f60a0525b6115fb575b505050505050611512925061213f565b835160a05110156117d5575f5b85811061161e5750888060a0510160a0526115e6565b8661163160a09a969799989a5188610eae565b51168961163e8385611249565b5116146117be57895f5b89811061165c575001979596949397611608565b5f825b61166d575b50018a90611648565b61167982608051611249565b51518110156117b9578b611693826113c785608051611249565b5116838d6116a360a0518d610eae565b5116821480156117a4575b61179b5790818c8f8c8b8f928c908f8d905f985b6116db575b5050505050505050505080915b019061165f565b6116e882829c9b9c611249565b515189101561179357928261173983611732836117268f9e9d9b9861171a8f61177e9f9c6117789e9b6113c791611249565b51169960a05190610eae565b51169560a05190610eae565b5193611249565b5116916040519461174986610d03565b8552602085015260408401526060830152670de0b6b3a764000060808301528860a083015260c0820152611f22565b90612033565b50018c8f8c8b8f928c908f8d90899a996116c2565b899a506116c7565b918291506116d4565b508d6117b08789611249565b511682146116ae565b611664565b5050955050505050506114fe915060a05190610eae565b6115eb565b60405163215a716b60e01b8152600490fd5b81156117f6570490565b634e487b7160e01b5f52601260045260245ffd5b6001600160a01b03949293919085811686831614611a385761183a6118328661184293611c8f565b969093611c8f565b919093611e44565b946118508351855190611222565b916118786113296118708951519561131660209760208d0151519061125a565b885190611222565b945f935b8551851015611a25575f5b8251811015611a1a578a61189b8789610eae565b51168b6118a88386610eae565b5116146119ed575f5b600281106118c25750600101611887565b9a9091929394955f9a9798999a9b5b6118db818a611249565b51518d10156119d757826118f38e6113c7848d611249565b51169883611901848d610eae565b51168a1480156119c2575b6119b7575f5b8d518110156119a857806119a18f8f908f8f8f8f8f8f8f8f908f916119668260019f85846119576117789f988261194f61195f9661196e9c610eae565b51169f610eae565b51169a610eae565b5196610eae565b511694610eae565b519360409182519761197f89610d03565b88528701528501526060840152608083015260a08201525f60c0820152611f22565b5001611912565b5098509b6001905b019b6118d1565b98509b6001906119b0565b50836119ce8689610eae565b51168a1461190c565b6001919796959493929c509a9998979a016118b1565b965050509550670de0b6b3a76400009650611a149450611a0d9250610eae565b5192610eae565b51020490565b50936001019361187c565b5050505050509150506115129150612091565b604051630d11785f60e21b8152600490fd5b6001600160a01b039592949390929086841683881614611a385760648210156117da57611a85611a7d87611a8d96611c8f565b979094611c8f565b949091611e44565b95611ab6611329611870611aa48751865190611222565b6113168b515160208d0151519061125a565b945f925b8551841015611c51575f5b8151811015611c46578a611ad98689610eae565b51168b611ae68385610eae565b511614611c24575f5b60028110611b005750600101611ac5565b9a90919293945f9a969798999a9b5b611b198189611249565b51518d1015611c0e5782611b318e6113c7848c611249565b51169783611b3f848d610eae565b511689148015611bf9575b611bee575f5b8d51811015611bdf5780611bd88f8f908f8f8f8f8f8f8f8f908f91611b9c8260019f8584611b8d6117789f988261194f611b9596611ba49c610eae565b511699610eae565b5195610eae565b511693610eae565b5192604090815197611bb589610d03565b885260208801528601526060850152608084015260a083015260c0820152611f22565b5001611b50565b5097509b6001905b019b611b0f565b97509b600190611be7565b5083611c058688610eae565b51168914611b4a565b60019196959493929c509a999897969a01611aef565b9650509650909150670de0b6b3a76400009650611a149450611a0d9250610eae565b509260010192611aba565b505050509350509050611512925061213f565b5f546001600160a01b03163303611c7757565b60405163118cdaa760e01b8152336004820152602490fd5b9190611cf05760405191611ca283610cd4565b6001835260203681850137611cb683610ea1565b6001600160a01b03909116905260405190611cd082610cd4565b6001825260203681840137670de0b6b3a7640000611ced83610ea1565b52565b6007546040516332e6476560e21b81526001600160a01b039384166004820152905f908290602490829087165afa928315611e39575f915f94611d34575b50509190565b915092503d805f833e611d478183610d54565b8101926040828503126101915781516001600160401b03908181116101915783019285601f8501121561019157835193602093611d8386610d75565b95611d916040519788610d54565b808752858088019160051b84010192898411610191578601905b838210611e2157505050508281015191821161019157019380601f86011215610191578451611dd981610d75565b95611de76040519788610d54565b818752838088019260051b820101928311610191578301905b828210611e1257505050505f80611d2e565b81518152908301908301611e00565b81518381168103610191578152908601908601611dab565b6040513d5f823e3d90fd5b9060409160405192611e5584610cd4565b5f5b818110611ed357505082604051806005549081815260208091019160055f527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0915f905b828210611ebc575050505090611eb681602094930382610d54565b81520152565b835485529384019360019384019390910190611e9b565b606085820152602001611e57565b90606060408051611ef181610d1e565b5f81525f602082015201526040519160808160061b8401016040525f83525f60208401526060830180604085015252565b906040918251611f3181610cd4565b5f81525f60208201529260018060a01b03818184511691608481602087015116826060880151169260a0880151169460c088015185519687958694631eaa4d9960e11b865260048601526024850152604484015260648301525afa92835f925f95611ffc575b50611fa3575b50505050565b8293949550608090611fd0935192611fba84610d1e565b8582015184526020840152015183820152612545565b9182611ff657505f905b5191611fe583610cd4565b82526020820152905f808080611f9d565b90611fda565b84809296508194503d831161202c575b6120168183610d54565b810103126101915760208251920151935f611f97565b503d61200c565b9060208101908151612046575050505f90565b61206760408401519160208501928351916120618383610eae565b52610eae565b5080515f198114611235576001019052519080518211612089575b5050600190565b525f80612082565b5f915f9160209060208101519060408101828151525f5b8381106120c9575050505050816120bb57565b91816120c6916117ec565b91565b6120d4818351610eae565b51858101908151606481818102041490151715611235576001855115171561123557518151612102916126d0565b90612112575b50506001016120a8565b61211c9199612700565b9890612129575b80612108565b6001919761213891519061125a565b9690612123565b90915f925f9260209060208101519160408201838151525f5b84811061216c57505050505050816120bb57565b612177818351610eae565b518381019081516064908181029181830414901517156112355761219c898851611222565b116121ec575181516121ad916126d0565b906121bf575b50506001905b01612158565b6121c9919a612700565b99906121d6575b806121b3565b600191986121e591519061125a565b97906121d0565b50506001906121b9565b5f8181526006602052604090205480156122c5575f199080820181811161123557600554908382019182116112355781810361227b575b50505060055480156122675781019061224582610ec2565b909182549160031b1b191690556005555f5260066020525f6040812055600190565b634e487b7160e01b5f52603160045260245ffd5b6122af61228a61229993610ec2565b90549060031b1c928392610ec2565b819391549060031b91821b915f19901b19161790565b90555f52600660205260405f20555f808061222d565b50505f90565b5f8181526002602052604090205480156122c5575f199080820181811161123557600154908382019182116112355781810361233c575b50505060015480156122675781019061231a82610ef7565b909182549160031b1b191690556001555f5260026020525f6040812055600190565b61235a61234b61229993610ef7565b90549060031b1c928392610ef7565b90555f52600260205260405f20555f8080612302565b805f526004908160205260405f20548015155f1461244f575f199080820181811161243c5760035490838201918211612429578181036123f6575b50505060035480156123e3578101906123c382610f2c565b909182549160031b1b191690556003555f526020525f6040812055600190565b603184634e487b7160e01b5f525260245ffd5b61241461240561229993610f2c565b90549060031b1c928392610f2c565b90555f528360205260405f20555f80806123ab565b601186634e487b7160e01b5f525260245ffd5b601185634e487b7160e01b5f525260245ffd5b5050505f90565b805f52600260205260405f2054155f146124a457600154600160401b811015610cef5761248d612299826001859401600155610ef7565b9055600154905f52600260205260405f2055600190565b505f90565b805f52600460205260405f2054155f146124a457600354600160401b811015610cef576124e0612299826001859401600355610f2c565b9055600354905f52600460205260405f2055600190565b805f52600660205260405f2054155f146124a457600554600160401b811015610cef5761252e612299826001859401600555610ec2565b9055600554905f52600660205260405f2055600190565b805190811580156126c4575b80156126b8575b6122c55760208101918251908181116126ad575b5050805160408201908151908181116126a2575b50508251815190818111612697575b50505f928251926125a48251850294856117ec565b9151809203612660575b5050805182026125be83826117ec565b82511461262e575051821561261957670de0b6b3a76400005b5f19828409828402808210910303101561244f57610e05921561260357670de0b6b3a76400009161279f565b6ec097ce7bc90715b34b9f10000000009161279f565b6ec097ce7bc90715b34b9f10000000006125d7565b915050610e05915f1461264a57670de0b6b3a7640000906117ec565b6ec097ce7bc90715b34b9f1000000000906117ec565b519193509091505f19818309818302808210910303670de0b6b3a7640000111561244f5761268d91612719565b6001915f806125ae565b825283525f8061258f565b825282525f80612580565b835281525f8061256c565b50604081015115612558565b50602081015115612551565b919082156126f7576126e581840293846117ec565b036126f05760019190565b5f91508190565b50600191505f90565b9190820191808310612713575060019190565b5f925090565b90808202905f198184099082808310920391808303921461278e57670de0b6b3a7640000908282111561277c577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669940990828211900360ee1b910360121c170290565b60405163227bc15360e01b8152600490fd5b5050670de0b6b3a764000091500490565b9091828202915f1984820993838086109503948086039514612812578483111561277c57829109815f038216809204600280826003021880830282030280830282030280830282030280830282030280830282030280920290030293600183805f03040190848311900302920304170290565b505090610e0592506117ec56fea264697066735822122005698e588349cafcefd69ea154404f5df4564fabc1aeacb87e510d4d3610525664736f6c6343000817003300000000000000000000000084bfceff9b6fdbc6862e08ccb8d685bc101ff84000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004200000000000000000000000000000000000006000000000000000000000000ba4bb89f4d1e66aa86b60696534892ae0ccf91f50000000000000000000000000000000000000000000000000000000000000002000000000000000000000000a3ec107456875883f6081cf0c0bd527d980948bd00000000000000000000000043b36a7e6a4cdfe7de5bd2aa1fccddf6a366daa20000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000004200000000000000000000000000000000000006000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda0291300000000000000000000000050c5725949a6f0c72e6c4a641f24049a917db0cb