0 txs
5.4k calls
constructor
constructor(address oracleFactory_, address verifier_, address implementation_)
functions
authorization
viewfunction authorization(address account, address sender, address signer, address orderReferrer) view returns (bool isOperator, bool isSigner, uint256 orderReferralFee)
extensions
viewfunction extensions(address) view returns (bool)
implementation
viewfunction implementation() view returns (address)
instances
viewfunction instances(address instance) view returns (bool)
markets
viewfunction markets(address oracle) view returns (address)
operators
viewfunction operators(address, address) view returns (bool)
oracleFactory
viewfunction oracleFactory() view returns (address)
owner
viewfunction owner() view returns (address)
parameter
viewfunction parameter() view returns (tuple)
paused
viewfunction paused() view returns (bool)
pauser
viewfunction pauser() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
referralFees
viewfunction referralFees(address referrer) view returns (uint256)
signers
viewfunction signers(address, address) view returns (bool)
verifier
viewfunction verifier() view returns (address)
acceptOwner
nonpayablefunction acceptOwner()
create
nonpayablefunction create(tuple definition) returns (address newMarket)
initialize
nonpayablefunction initialize()
pause
nonpayablefunction pause()
unpause
nonpayablefunction unpause()
updateAccessBatch
nonpayablefunction updateAccessBatch(tuple[] newOperators, tuple[] newSigners)
updateAccessBatchWithSignature
nonpayablefunction updateAccessBatchWithSignature(tuple accessUpdateBatch, bytes signature)
updateExtension
nonpayablefunction updateExtension(address extension, bool newEnabled)
updateOperator
nonpayablefunction updateOperator(address operator, bool newEnabled)
updateOperatorWithSignature
nonpayablefunction updateOperatorWithSignature(tuple operatorUpdate, bytes signature)
updateParameter
nonpayablefunction updateParameter(tuple newParameter)
updatePauser
nonpayablefunction updatePauser(address newPauser)
updatePendingOwner
nonpayablefunction updatePendingOwner(address newPendingOwner)
updateReferralFee
nonpayablefunction updateReferralFee(address referrer, uint256 newReferralFee)
updateSigner
nonpayablefunction updateSigner(address signer, bool newEnabled)
updateSignerWithSignature
nonpayablefunction updateSignerWithSignature(tuple signerUpdate, bytes signature)
events
ExtensionUpdated
event ExtensionUpdated(address indexed operator, bool newEnabled)
Initialized
event Initialized(uint256 version)
InstanceRegistered
event InstanceRegistered(address indexed instance)
MarketCreated
event MarketCreated(address indexed market, (address token, address oracle) definition)
OperatorUpdated
event OperatorUpdated(address indexed account, address indexed operator, bool newEnabled)
OwnerUpdated
event OwnerUpdated(address indexed newOwner)
ParameterUpdated
event ParameterUpdated((uint256 maxFee, uint256 maxLiquidationFee, uint256 maxCut, uint256 maxRate, uint256 minMaintenance, uint256 minEfficiency, uint256 referralFee, uint256 minScale, uint256 maxStaleAfter) newParameter)
Paused
event Paused()
PauserUpdated
event PauserUpdated(address indexed newPauser)
PendingOwnerUpdated
event PendingOwnerUpdated(address indexed newPendingOwner)
ReferralFeeUpdated
event ReferralFeeUpdated(address indexed referrer, uint256 newFee)
SignerUpdated
event SignerUpdated(address indexed account, address indexed signer, bool newEnabled)
Unpaused
event Unpaused()
errors
FactoryAlreadyRegisteredError
error FactoryAlreadyRegisteredError()
FactoryInvalidOracleError
error FactoryInvalidOracleError()
FactoryInvalidPayoffError
error FactoryInvalidPayoffError()
FactoryNotInstanceError
error FactoryNotInstanceError()
InitializableAlreadyInitializedError
error InitializableAlreadyInitializedError(uint256 version)
InitializableNotInitializingError
error InitializableNotInitializingError()
InitializableZeroVersionError
error InitializableZeroVersionError()
MarketFactoryInvalidReferralFeeError
error MarketFactoryInvalidReferralFeeError()
MarketFactoryInvalidSignerError
error MarketFactoryInvalidSignerError()
OwnableAlreadyInitializedError
error OwnableAlreadyInitializedError()
OwnableNotOwnerError
error OwnableNotOwnerError(address sender)
OwnableNotPendingOwnerError
error OwnableNotPendingOwnerError(address sender)
PausableNotPauserError
error PausableNotPauserError(address sender)
PausablePausedError
error PausablePausedError()
ProtocolParameterStorageInvalidError
error ProtocolParameterStorageInvalidError()
ProtocolParameterStorageInvalidError
error ProtocolParameterStorageInvalidError()
creation bytecode
0x60e034620000c457601f620030c238819003918201601f19168301916001600160401b03831184841017620000c857808492606094604052833981010312620000c45780516001600160a01b038082168203620000c4576020830151928184168403620000c457604001519081168103620000c45760805260a05260c052604051612fe59081620000dd823960805181611ba8015260a0518181816108140152610ac2015260c05181818161086801528181610ff4015281816113090152611dd90152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060408181526004918236101562000016575f80fd5b5f925f3560e01c918263032bb4431462001fa6575081630a44e2bc1462001e7d5781632637588e1462001dfd5781632b7ac3f31462001d8d5781633f4ba83a1462001c99578163554bab3c1462001bcc5781635c60da1b1462001b5c5781635c975abb1462001afd57816360c599351462001a045781636d44a3b214620019b257816375780f4214620019625781638129fc1c146200179d5781638456cb5914620016795781638da5cb5b14620016065781638e8f294b14620015965781639fd0506d1462001523578163a7fd5e9014620013f7578163aac3454b14620012d8578163ad4d4e29146200122e578163afe990fa14620011b1578163b557198f1462000f63578163b5ee69551462000e65578163b9a08bd71462000dfa578163ba2f5f2d1462000a0b578163bd9ee66b146200098c57838263c655a23d146200083857508163c7f7fb9014620007c7578163e30c39781462000753578163ea0574211462000342578163ebbc496514620001f2575063f460590b1462000199575f80fd5b34620001ee577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001eb57620001e8620001d66200202e565b620001e062002098565b9033620026a9565b80f35b80fd5b5080fd5b83915034620001ee57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001ee577f675c83682abbc3e7dd47e40515a778fbbde4393395c3dd3588244203c3e4788390815473ffffffffffffffffffffffffffffffffffffffff81169081330362000313577fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed255807f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b5f80a23303620002e35750819055807f69f201bc2089b9be6195d876d97a0136b4cf56bbf8986a52dcb50697f7d1cac58180a280f35b6024908451907f99bf63590000000000000000000000000000000000000000000000000000000082523390820152fd5b85517fd0d5e1b00000000000000000000000000000000000000000000000000000000081523381850152602490fd5b919050346200074f576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126200074f578051916200038583620021b0565b8035835260208301602435815282840190604435825260608501606435815260808601608435815260a087019060a435825260c088019260c435845260e089019460e435865261010090818b01976101043589527fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed25473ffffffffffffffffffffffffffffffffffffffff33911603620007205760028062000428835162002813565b14620006f857806200043b895162002813565b14620006f857806200044e8a5162002813565b14620006f85780620004618e5162002836565b14620006f857806200047484516200284e565b14620006f8578062000487865162002867565b14620006f857806200049a875162002836565b14620006f857620004ac875162002836565b14620006d05762ffffff998a8a5111620006a95750898c511691519263ffffffff91519451955196519751985199519a8c5192620004ea84620021b0565b84845280861660208501528d8288169085015287166060840152808816608084015280891660a0840152808a1660c0840152808b1660e08401528b169101528b549860d01b7cffffff000000000000000000000000000000000000000000000000000016987fffffff000000000000000000000000000000000000000000000000000000000016179060181b66ffffffff00000016179060381b69ffffff0000000000000016179060501b6dffffffff0000000000000000000016179060701b70ffffff000000000000000000000000000016179060881b73ffffff000000000000000000000000000000000016179060a01b76ffffff000000000000000000000000000000000000000016179060b81b79ffffff000000000000000000000000000000000000000000000016171783555162000682819282919091610120810192805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b037fae1abebfc00be420052a0754017d97a54df7947c417ceb8255e94eeafba0f20f91a180f35b8b517f4dc1bc59000000000000000000000000000000000000000000000000000000008152fd5b898b517f4dc1bc59000000000000000000000000000000000000000000000000000000008152fd5b8a8c517f4dc1bc59000000000000000000000000000000000000000000000000000000008152fd5b8a517f99bf635900000000000000000000000000000000000000000000000000000000815233818c0152602490fd5b8280fd5b505034620001ee57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001ee5760209073ffffffffffffffffffffffffffffffffffffffff7f675c83682abbc3e7dd47e40515a778fbbde4393395c3dd3588244203c3e4788354915191168152f35b505034620001ee57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001ee576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b915034620001ee576200084b36620020d9565b73ffffffffffffffffffffffffffffffffffffffff9592959491857f00000000000000000000000000000000000000000000000000000000000000001691823b156200098857620008cf928492838a8851968795869485937f6f7f07fd0000000000000000000000000000000000000000000000000000000085528d850162002340565b03925af180156200097e5762000962575b505080840192620008f46060860162002377565b9080620009018662002377565b169116036200093c5784620001e8856200091b8662002377565b906200093560206200092d8362002377565b920162002399565b9162002613565b517f6928a80f000000000000000000000000000000000000000000000000000000008152fd5b6200096d906200216e565b6200097a57845f620008e0565b8480fd5b83513d84823e3d90fd5b8380fd5b9050346200074f57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126200074f5760209282620009cc6200202e565b91620009d762002052565b9373ffffffffffffffffffffffffffffffffffffffff809416825286522091165f52825260ff815f20541690519015158152f35b838334620001ee57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001ee577fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed2549173ffffffffffffffffffffffffffffffffffffffff92833391160362000dcb578262000a8b620025ae565b16938251947f032bb443000000000000000000000000000000000000000000000000000000008652818601526020948581602481887f0000000000000000000000000000000000000000000000000000000000000000165afa90811562000dc157839162000d84575b501562000d5d578362000b06620025ae565b168252600285528282205f8052855283835f20541662000d36578251907fb6a597dd00000000000000000000000000000000000000000000000000000000868301528162000b5760248201620025d2565b0362000b8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091828101855284620021ce565b84519261072f8085019385851067ffffffffffffffff86111762000d0a5750908492916200288184393084528689850152805190818886015289875b83811062000cf25750505090601f828760608795819801015201160103019082f0801562000ce6579083839216938482527f81796b4965de195665289d95668a8a9e7020858e15f5341c42bcf9951c1768ad865282822060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00825416179055847f4fe45192317a7d3ad19c3eaa395c0c3a1b7a0f53c3536fb96764c3561a8e9dad8380a262000c75620025ae565b16815260028552205f80528352805f20827fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055817ff5090e340ccc5b9c692d172ce09471d5c14bbf23d179b6a67c36a0846a17b42d82518062000cdd81620025d2565b0390a251908152f35b509051903d90823e3d90fd5b80830182015187820160600152879550810162000bc6565b8660416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b82517f213e2260000000000000000000000000000000000000000000000000000000008152fd5b82517f5116bce5000000000000000000000000000000000000000000000000000000008152fd5b90508581813d831162000db9575b62000d9e8183620021ce565b810103126200074f575180151581036200074f578662000af4565b503d62000d92565b84513d85823e3d90fd5b81517f99bf63590000000000000000000000000000000000000000000000000000000081523381860152602490fd5b505034620001ee5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001ee5760ff8160209373ffffffffffffffffffffffffffffffffffffffff62000e526200202e565b1681526005855220541690519015158152f35b9050346200074f5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126200074f5762000ea26200202e565b907fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed2549273ffffffffffffffffffffffffffffffffffffffff93843391160362000f33575050807f675c83682abbc3e7dd47e40515a778fbbde4393395c3dd3588244203c3e4788355167f69f201bc2089b9be6195d876d97a0136b4cf56bbf8986a52dcb50697f7d1cac58280a280f35b6024925051907f99bf63590000000000000000000000000000000000000000000000000000000082523390820152fd5b919050346200074f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc908082360112620009885767ffffffffffffffff808435116200097a578484358501936101009283828835360301126200074f576024359081116200074f5762000fdb9036908801620020a8565b73ffffffffffffffffffffffffffffffffffffffff94857f00000000000000000000000000000000000000000000000000000000000000001690813b15620011ad57858881958c8c968351998a98899788967fe558670500000000000000000000000000000000000000000000000000000000885285880152620010608280620024c5565b9091604489015261014488019062001078926200251b565b9084356024016200108991620024c5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc888403016064890152620010bf92916200251b565b9260848601903560440190620010d59162002296565b848303016024850152620010e99262002302565b03925af18015620011a3576200118b575b50506200110b606485350162002377565b90806200111c604487350162002377565b1691160362001163575090620001e89160246200115a62001141604485350162002377565b926200114e818062002557565b93909535019062002557565b93909262002772565b9050517f6928a80f000000000000000000000000000000000000000000000000000000008152fd5b62001196906200216e565b6200097a57845f620010fa565b84513d84823e3d90fd5b8580fd5b919050346200074f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001ee5767ffffffffffffffff813581811162000988576200120590369084016200213a565b916024359081116200097a57620001e89362001224913691016200213a565b9290913362002772565b505034620001ee57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620001ee57620012d4906200126f620023ec565b905191829182919091610120810192805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b0390f35b91905034620013f357620012ec36620020d9565b73ffffffffffffffffffffffffffffffffffffffff9492949391847f00000000000000000000000000000000000000000000000000000000000000001691823b15620013f3576200136f925f928386518096819582947f0fd9911c0000000000000000000000000000000000000000000000000000000084528d8c850162002340565b03925af18015620013e957620013d3575b5080840192620013936060860162002377565b9080620013a08662002377565b169116036200093c5784620001e885620013ba8662002377565b90620013cc60206200092d8362002377565b91620026a9565b620013e09195506200216e565b5f935f62001380565b82513d5f823e3d90fd5b5f80fd5b905034620013f357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f357620014336200202e565b906200143e62002098565b917fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed2549173ffffffffffffffffffffffffffffffffffffffff928333911603620014f35750916020917f3f51b3754553ef5edff4eb7a9dd7d0206b3c9ccc51a267d300b844d47578c532931693845f5260058352620014ea82825f209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b519015158152a2005b6024908551907f99bf63590000000000000000000000000000000000000000000000000000000082523390820152fd5b8234620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35760209073ffffffffffffffffffffffffffffffffffffffff7f18e50ee9696440d335192aeeeffc26f47782eaa914f1700d8ad36d6d7f7261b354915191168152f35b8234620013f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35760209073ffffffffffffffffffffffffffffffffffffffff80620015eb6200202e565b165f5260028352815f205f80528352815f2054169051908152f35b8234620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35760209073ffffffffffffffffffffffffffffffffffffffff7fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed254915191168152f35b905034620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35773ffffffffffffffffffffffffffffffffffffffff807f18e50ee9696440d335192aeeeffc26f47782eaa914f1700d8ad36d6d7f7261b3541633141590816200176e575b506200173f5760017f3d13b7e57307bea7f94c474c597247d2da93d7de9136f8e123ed6525f50bbcec557f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7525f80a1005b60249151907ff7987a920000000000000000000000000000000000000000000000000000000082523390820152fd5b90507fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed2541633141583620016ef565b8234620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f3577f6fee9688c285c5c5c97d6a1a29adced674e6b2ad0888b8ad2116b58a8b3ea248600181541015620019325760019055303b1515806200192a575b620018fc57303b15158062001922575b620018fc577fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed29173ffffffffffffffffffffffffffffffffffffffff835416620018d5577fbe9b076dc5b65990cca9dd9d7366682482e7817a6f6bc7f4faf4dc32af497f3260208385339055337f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b5f80a25f7f2801b00eb06461cf9fcb9758b5fafd884ff06a86177386f73b6c49f0bf5a5af0555160018152a1005b90517fe43bdd4e000000000000000000000000000000000000000000000000000000008152fd5b517fb9a621e1000000000000000000000000000000000000000000000000000000008152fd5b505f62001819565b505f62001809565b60248360018451917f3db738da000000000000000000000000000000000000000000000000000000008352820152fd5b8234620013f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f357602090620019ab620019a56200202e565b62002210565b9051908152f35b8234620013f3577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35762001a02620019f06200202e565b620019fa62002098565b903362002613565b005b905034620013f357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35762001a406200202e565b7fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed2546024359273ffffffffffffffffffffffffffffffffffffffff92913390841603620014f357600262001a948562002813565b1462001ad65750916020917f057944530cecde3aa5328a6254fb4ae8e7e09c4681c771b0cf4725275c57bd81931693845f526003835281815f205551908152a2005b84517f199d4b3e000000000000000000000000000000000000000000000000000000008152fd5b8234620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f3576020907f3d13b7e57307bea7f94c474c597247d2da93d7de9136f8e123ed6525f50bbcec5490519015158152f35b8234620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f3576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b905034620013f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35762001c096200202e565b907fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed2549273ffffffffffffffffffffffffffffffffffffffff93843391160362000f33575050807f18e50ee9696440d335192aeeeffc26f47782eaa914f1700d8ad36d6d7f7261b355167fa4336c0cb1e245b95ad204faed7e940d6dc999684fd8b5e1ff597a0c4efca8ab5f80a2005b905034620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35773ffffffffffffffffffffffffffffffffffffffff807f18e50ee9696440d335192aeeeffc26f47782eaa914f1700d8ad36d6d7f7261b35416331415908162001d5e575b506200173f575f7f3d13b7e57307bea7f94c474c597247d2da93d7de9136f8e123ed6525f50bbcec557fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169335f80a1005b90507fe7742ddf0fecd2926e7ef4d6d6e91a7b2f0b1f8805b78953dac8454e86273ed254163314158362001d0f565b8234620013f3575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f3576020905173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b8234620013f357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35760209062001e3b6200202e565b62001e4562002052565b9073ffffffffffffffffffffffffffffffffffffffff8091165f5260018452825f2091165f52825260ff815f20541690519015158152f35b905034620013f35760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f35762001eba6200202e565b9062001ec562002052565b9260443573ffffffffffffffffffffffffffffffffffffffff90818116809103620013f357606435918083168303620013f357806060971695169385851495861562001f8e575b861562001f6b575b5081851494851562001f43575b50505062001f2f9062002210565b918151931515845215156020840152820152f35b90919294505f52602052815f20905f5260205262001f2f60ff825f2054169290868062001f21565b909550845f526001602052835f20905f5260205260ff835f205416948762001f14565b8096505f52600560205260ff845f2054169562001f0c565b915034620013f35760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112620013f3573573ffffffffffffffffffffffffffffffffffffffff8116809103620013f35760209260ff915f527f81796b4965de195665289d95668a8a9e7020858e15f5341c42bcf9951c1768ad84525f20541615158152f35b6004359073ffffffffffffffffffffffffffffffffffffffff82168203620013f357565b6024359073ffffffffffffffffffffffffffffffffffffffff82168203620013f357565b359073ffffffffffffffffffffffffffffffffffffffff82168203620013f357565b602435908115158203620013f357565b9181601f84011215620013f35782359167ffffffffffffffff8311620013f35760208381860195010111620013f357565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82016101208112620013f35761010013620013f357600491610104359067ffffffffffffffff8211620013f3576200213691600401620020a8565b9091565b9181601f84011215620013f35782359167ffffffffffffffff8311620013f3576020808501948460061b010111620013f357565b67ffffffffffffffff81116200218357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610120810190811067ffffffffffffffff8211176200218357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176200218357604052565b73ffffffffffffffffffffffffffffffffffffffff16801562002257575f52600360205260405f205480155f1462002254575060c06200224f620023ec565b015190565b90565b505f90565b60209073ffffffffffffffffffffffffffffffffffffffff6200227f8262002076565b168352013590811515809203620013f35760200152565b60a0809173ffffffffffffffffffffffffffffffffffffffff80620022bb8362002076565b16855280620022cd6020840162002076565b166020860152620022e16040830162002076565b16604085015260608101356060850152608081013560808501520135910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b9062002254939162002368610120926200235b83826200225c565b6040808401910162002296565b81610100820152019162002302565b3573ffffffffffffffffffffffffffffffffffffffff81168103620013f35790565b358015158103620013f35790565b60405190620023b682620021b0565b5f610100838281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b620023f6620023a7565b5062002401620023a7565b506040516200241081620021b0565b5f549062ffffff908183169283825263ffffffff92838260181c1693846020850152818360381c16908160408601528360501c16806060860152828460701c1690816080870152838560881c16928360a0880152848660a01c16948560c0890152808760b81c16968760e08a015260d01c16978861010080990152604051996200249a8b620021b0565b8a5260208a015260408901526060880152608087015260a086015260c085015260e084015282015290565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe182360301811215620013f357016020813591019167ffffffffffffffff8211620013f3578160061b36038313620013f357565b916020908281520191905f5b818110620025355750505090565b9091928062002547600192866200225c565b6040908101940192910162002527565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215620013f3570180359067ffffffffffffffff8211620013f357602001918160061b36038313620013f357565b60243573ffffffffffffffffffffffffffffffffffffffff81168103620013f35790565b9060408201916004359073ffffffffffffffffffffffffffffffffffffffff91828116809103620013f3578152602435918216809203620013f35760200152565b909160207f2738289d9deecdc30eb8ffc42876633caecca1ffa166e4efa89f408e17373a1a9173ffffffffffffffffffffffffffffffffffffffff80941693845f526001835260405f20951694855f5282526200269e8160405f209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b6040519015158152a3565b909160207fb658b57f3a8d73a4f3bb96789edcebed831f44d5cc4a513d4416c6bb25ea0e8b9173ffffffffffffffffffffffffffffffffffffffff80941693845f526004835260405f20951694855f5282526200269e8160405f209060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0083541691151516179055565b9190811015620027455760061b0190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9291905f5b828110620027d9575050505f5b838110620027925750505050565b80620027d2620027b0620027aa600194888762002734565b62002377565b620027ca6020620027c3858a8962002734565b0162002399565b9086620026a9565b0162002784565b806200280c620027f1620027aa600194878762002734565b620028046020620027c385898962002734565b908862002613565b0162002777565b620f4240908181116200282f57106200282b57600190565b5f90565b5050600290565b62ffffff908181116200282f57106200282b57600190565b63ffffffff908181116200282f57106200282b57600190565b637fffffff908181116200282f57106200282b5760019056fe608060409080825261072f80380380916100198285610342565b833981019082818303126102385761003081610365565b6020828101516001600160401b039391929184821161023857019084601f830112156102385781519161006283610379565b9261006f88519485610342565b8084528484019685828401011161023857868561008c9301610394565b803b156102f0578551635c60da1b60e01b80825292916001600160a01b0316908481600481855afa9081156102e6575f916102b1575b503b15610254577fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b03191682179055865192817f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e5f80a282511580159061024d575b610140575b87516102c690816104698239f35b6004848693819382525afa918215610243575f92610208575b5085519360608501908111858210176101f4578652602784527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c83850152660819985a5b195960ca1b84870152516101de945f918291845af4903d156101eb573d6101c381610379565b906101d088519283610342565b81525f81943d92013e6103b5565b505f808080808080610132565b606092506103b5565b634e487b7160e01b5f52604160045260245ffd5b9091508281813d831161023c575b6102208183610342565b810103126102385761023190610365565b905f610159565b5f80fd5b503d610216565b86513d5f823e3d90fd5b505f61012d565b865162461bcd60e51b815260048101859052603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608490fd5b90508481813d83116102df575b6102c88183610342565b81010312610238576102d990610365565b5f6100c2565b503d6102be565b88513d5f823e3d90fd5b855162461bcd60e51b815260048101849052602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b6064820152608490fd5b601f909101601f19168101906001600160401b038211908210176101f457604052565b51906001600160a01b038216820361023857565b6001600160401b0381116101f457601f01601f191660200190565b5f5b8381106103a55750505f910152565b8181015183820152602001610396565b9192901561041757508151156103c9575090565b3b156103d25790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561042a5750805190602001fd5b6044604051809262461bcd60e51b82526020600483015261045a8151809281602486015260208686019101610394565b601f01601f19168101030190fdfe6080806040523661011c5760208160048173ffffffffffffffffffffffffffffffffffffffff7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5054167f5c60da1b0000000000000000000000000000000000000000000000000000000082525afa908115610111575f91610081575b50610273565b905060203d60201161010a575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f82011682019180831067ffffffffffffffff8411176100dd576100d792604052016101f6565b5f61007b565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b503d61008e565b6040513d5f823e3d90fd5b6004602073ffffffffffffffffffffffffffffffffffffffff7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d505416604051928380927f5c60da1b0000000000000000000000000000000000000000000000000000000082525afa908115610111575f916101975750610273565b602091503d82116101ee575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011681019181831067ffffffffffffffff8411176100dd576100d792604052810190610247565b3d91506101a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8060209101126102435760805173ffffffffffffffffffffffffffffffffffffffff811681036102435790565b5f80fd5b90816020910312610243575173ffffffffffffffffffffffffffffffffffffffff811681036102435790565b5f8091368280378136915af43d5f803e1561028c573d5ff35b3d5ffdfea2646970667358221220ec432b4747e143afd3ca9be003efbb7d4ac773fd8dbbac59b6729d6be9a1e1a164736f6c63430008180033a264697066735822122048bbf5bf388b82a0c4fa1b5561d79832d7bfc2881aa17ceb618040f17ddb046c64736f6c634300081800330000000000000000000000008cda59615c993f925915d3eb4394badb3feef413000000000000000000000000f12a4acda6ca2e777b353538cb8e5ad6f05e0437000000000000000000000000bda0b3e2b24b52b852f86385dbfd6e376ab882d7