0 txs
0 calls
constructor
No constructor.
functions
aggregatorProgramHash
viewfunction aggregatorProgramHash() view returns (uint256)
configHash
viewfunction configHash() view returns (uint256)
getMaxL1MsgFee
purefunction getMaxL1MsgFee() pure returns (uint256)
identify
purefunction identify() pure returns (string)
isFinalized
viewfunction isFinalized() view returns (bool)
isFrozen
viewfunction isFrozen() view returns (bool)
isOperator
viewfunction isOperator(address user) view returns (bool)
l1ToL2MessageCancellations
viewfunction l1ToL2MessageCancellations(bytes32 msgHash) view returns (uint256)
l1ToL2MessageNonce
viewfunction l1ToL2MessageNonce() view returns (uint256)
l1ToL2Messages
viewfunction l1ToL2Messages(bytes32 msgHash) view returns (uint256)
l2ToL1Messages
viewfunction l2ToL1Messages(bytes32 msgHash) view returns (uint256)
messageCancellationDelay
viewfunction messageCancellationDelay() view returns (uint256)
programHash
viewfunction programHash() view returns (uint256)
starknetIsGovernor
viewfunction starknetIsGovernor(address user) view returns (bool)
stateBlockHash
viewfunction stateBlockHash() view returns (uint256)
stateBlockNumber
viewfunction stateBlockNumber() view returns (int256)
stateRoot
viewfunction stateRoot() view returns (uint256)
cancelL1ToL2Message
nonpayablefunction cancelL1ToL2Message(uint256 toAddress, uint256 selector, uint256[] payload, uint256 nonce) returns (bytes32)
consumeMessageFromL2
nonpayablefunction consumeMessageFromL2(uint256 fromAddress, uint256[] payload) returns (bytes32)
finalize
nonpayablefunction finalize()
initialize
nonpayablefunction initialize(bytes data)
registerOperator
nonpayablefunction registerOperator(address newOperator)
sendMessageToL2
payablefunction sendMessageToL2(uint256 toAddress, uint256 selector, uint256[] payload) payable returns (bytes32, uint256)
setAggregatorProgramHash
nonpayablefunction setAggregatorProgramHash(uint256 newAggregatorProgramHash)
setConfigHash
nonpayablefunction setConfigHash(uint256 newConfigHash)
setMessageCancellationDelay
nonpayablefunction setMessageCancellationDelay(uint256 delayInSeconds)
setProgramHash
nonpayablefunction setProgramHash(uint256 newProgramHash)
starknetAcceptGovernance
nonpayablefunction starknetAcceptGovernance()
starknetCancelNomination
nonpayablefunction starknetCancelNomination()
starknetNominateNewGovernor
nonpayablefunction starknetNominateNewGovernor(address newGovernor)
starknetRemoveGovernor
nonpayablefunction starknetRemoveGovernor(address governorForRemoval)
startL1ToL2MessageCancellation
nonpayablefunction startL1ToL2MessageCancellation(uint256 toAddress, uint256 selector, uint256[] payload, uint256 nonce) returns (bytes32)
unregisterOperator
nonpayablefunction unregisterOperator(address removedOperator)
updateState
nonpayablefunction updateState(uint256[] programOutput, uint256 onchainDataHash, uint256 onchainDataSize)
updateStateKzgDA
nonpayablefunction updateStateKzgDA(uint256[] programOutput, bytes[] kzgProofs)
events
AggregatorProgramHashChanged
event AggregatorProgramHashChanged(address indexed changedBy, uint256 oldAggregatorProgramHash, uint256 newAggregatorProgramHash)
ConfigHashChanged
event ConfigHashChanged(address indexed changedBy, uint256 oldConfigHash, uint256 newConfigHash)
ConsumedMessageToL1
event ConsumedMessageToL1(uint256 indexed fromAddress, address indexed toAddress, uint256[] payload)
ConsumedMessageToL2
event ConsumedMessageToL2(address indexed fromAddress, uint256 indexed toAddress, uint256 indexed selector, uint256[] payload, uint256 nonce)
Finalized
event Finalized()
LogMessageToL1
event LogMessageToL1(uint256 indexed fromAddress, address indexed toAddress, uint256[] payload)
LogMessageToL2
event LogMessageToL2(address indexed fromAddress, uint256 indexed toAddress, uint256 indexed selector, uint256[] payload, uint256 nonce, uint256 fee)
LogNewGovernorAccepted
event LogNewGovernorAccepted(address acceptedGovernor)
LogNominatedGovernor
event LogNominatedGovernor(address nominatedGovernor)
LogNominationCancelled
event LogNominationCancelled()
LogOperatorAdded
event LogOperatorAdded(address operator)
LogOperatorRemoved
event LogOperatorRemoved(address operator)
LogRemovedGovernor
event LogRemovedGovernor(address removedGovernor)
LogStateTransitionFact
event LogStateTransitionFact(bytes32 stateTransitionFact)
LogStateUpdate
event LogStateUpdate(uint256 globalRoot, int256 blockNumber, uint256 blockHash)
MessageToL2Canceled
event MessageToL2Canceled(address indexed fromAddress, uint256 indexed toAddress, uint256 indexed selector, uint256[] payload, uint256 nonce)
MessageToL2CancellationStarted
event MessageToL2CancellationStarted(address indexed fromAddress, uint256 indexed toAddress, uint256 indexed selector, uint256[] payload, uint256 nonce)
ProgramHashChanged
event ProgramHashChanged(address indexed changedBy, uint256 oldProgramHash, uint256 newProgramHash)
errors
No errors.
creation bytecode
0x60a060405234801561000f575f80fd5b5030608052608051613ced61002c5f395f610a520152613ced5ff3fe6080604052600436106101fc575f3560e01c80637a98660b1161011357806396115bc21161009d578063e1f1176d1161006d578063e1f1176d1461055b578063e37fec251461056f578063e87e733214610583578063eb27feeb146105a2578063eeb72866146105b6575f80fd5b806396115bc2146104df5780639be446bf146104fe578063a46efaf31461051d578063c99d397f1461053c575f80fd5b80638d4e4083116100e35780638d4e4083146104655780639020429c1461047957806391a66a2614610498578063946be3ed146104b75780639588eca2146104cb575f80fd5b80637a98660b146103ff5780638303bd8a1461041e57806384f921cd146104325780638a9bf09014610451575f80fd5b80633e3aa6c51161019457806354eccba41161016457806354eccba4146103695780636170ff1b146103835780636d70f7ae146103a257806377552641146103c157806377c7d7a9146103e0575f80fd5b80633e3aa6c5146102ef578063439fab91146103175780634bb278f314610336578063507ee5281461034a575f80fd5b806335befa5d116101cf57806335befa5d146102875780633682a4501461029b578063382d83e3146102bc5780633d07b336146102d0575f80fd5b8063018cccdf1461020057806301a01590146102275780632c9dd5c01461025657806333eeb14714610275575b5f80fd5b34801561020b575f80fd5b50610214610601565b6040519081526020015b60405180910390f35b348015610232575f80fd5b5061024661024136600461343a565b610645565b604051901515815260200161021e565b348015610261575f80fd5b5061021461027036600461349d565b610655565b348015610280575f80fd5b505f610246565b348015610292575f80fd5b5061021461076d565b3480156102a6575f80fd5b506102ba6102b536600461343a565b61077f565b005b3480156102c7575f80fd5b50610214610819565b3480156102db575f80fd5b506102ba6102ea3660046134e5565b61082b565b6103026102fd3660046134fc565b6108bf565b6040805192835260208301919091520161021e565b348015610322575f80fd5b506102ba61033136600461354b565b610a4f565b348015610341575f80fd5b506102ba610bff565b348015610355575f80fd5b506102ba6103643660046135b7565b610c96565b348015610374575f80fd5b50670de0b6b3a7640000610214565b34801561038e575f80fd5b5061021461039d366004613612565b610de7565b3480156103ad575f80fd5b506102466103bc36600461343a565b610ffa565b3480156103cc575f80fd5b506102ba6103db366004613668565b611024565b3480156103eb575f80fd5b506102146103fa3660046134e5565b611143565b34801561040a575f80fd5b50610214610419366004613612565b61115c565b348015610429575f80fd5b50610214611235565b34801561043d575f80fd5b506102ba61044c36600461343a565b611257565b34801561045c575f80fd5b50610214611260565b348015610470575f80fd5b50610246611282565b348015610484575f80fd5b506102ba6104933660046134e5565b6112a4565b3480156104a3575f80fd5b506102ba6104b236600461343a565b611338565b3480156104c2575f80fd5b506102ba611341565b3480156104d6575f80fd5b5061021461134b565b3480156104ea575f80fd5b506102ba6104f936600461343a565b61135a565b348015610509575f80fd5b506102146105183660046134e5565b6113ec565b348015610528575f80fd5b506102146105373660046134e5565b6113f5565b348015610547575f80fd5b506102ba6105563660046134e5565b6113fe565b348015610566575f80fd5b50610214611451565b34801561057a575f80fd5b506102ba611473565b34801561058e575f80fd5b506102ba61059d3660046134e5565b61147b565b3480156105ad575f80fd5b5061021461150f565b3480156105c1575f80fd5b50604080518082018252601981527f537461726b576172655f537461726b6e65745f323032345f39000000000000006020820152905161021e91906136d7565b5f6106406040518060400160405280602081526020017f535441524b4e45545f312e305f4d5347494e475f4c31544f4c325f4e4f4e434581525061152d565b905090565b5f61064f82611560565b92915050565b6040515f9081906106729086903390869088908290602001613730565b6040516020818303038152906040528051906020012090505f61069361158c565b5f8381526020919091526040902054116106f45760405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f4d4553534147455f544f5f434f4e53554d4500000000000060448201526064015b60405180910390fd5b336001600160a01b0316857f7a06c571aa77f34d9706c51e5d8122b5595aebeaa34233bfe866f22befb973b1868660405161073092919061377e565b60405180910390a3600161074261158c565b5f8381526020019081526020015f205f82825461075f91906137a5565b909155509095945050505050565b5f6107766115ae565b60010154905090565b61078833611560565b6107a45760405162461bcd60e51b81526004016106eb906137b8565b6107ad81610ffa565b6108165760016107bb6115f7565b6001600160a01b0383165f8181526020928352604090819020805460ff19169415159490941790935591519182527f50a18c352ee1c02ffe058e15c2eb6e58be387c81e73cc1e17035286e54c19a5791015b60405180910390a15b50565b5f6108226115ae565b60020154905090565b610833611282565b156108505760405162461bcd60e51b81526004016106eb906137e1565b61085933611560565b6108755760405162461bcd60e51b81526004016106eb906137b8565b337f393c6beb5756a944b2967f15f31ff671e312e945d7a84fd3bdcfd6b408b2dc7961089f611451565b60408051918252602082018590520160405180910390a261081681611619565b5f805f341161091a5760405162461bcd60e51b815260206004820152602160248201527f4c315f4d53475f4645455f4d5553545f42455f475245415445525f5448414e5f6044820152600360fc1b60648201526084016106eb565b670de0b6b3a76400003411156109725760405162461bcd60e51b815260206004820152601760248201527f4d41585f4c315f4d53475f4645455f455843454544454400000000000000000060448201526064016106eb565b5f61097b610601565b90506109c86040518060400160405280602081526020017f535441524b4e45545f312e305f4d5347494e475f4c31544f4c325f4e4f4e43458152508260016109c39190613804565b611637565b8587336001600160a01b03167fdb80dd488acf86d17c747445b0eabb5d57c541d3bd7b6b87af987858e5066b2b88888634604051610a099493929190613817565b60405180910390a45f610a1f8888888886611669565b9050610a2c346001613804565b610a346116a9565b5f838152602091909152604090205597909650945050505050565b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610ac05760405162461bcd60e51b81526020600482015260166024820152751112549150d517d0d0531317d11254d0531313d5d15160521b60448201526064016106eb565b5f610acc81602061383d565b90505f610ada826020613804565b905080831015610b225760405162461bcd60e51b81526020600482015260136024820152721253925517d110551057d513d3d7d4d3505313606a1b60448201526064016106eb565b5f610b2f82848688613854565b810190610b3c919061343a565b9050365f610b4c8582888a613854565b91509150365f610b5e8887818c613854565b90925090506001600160a01b03851615610b8857610b7d8583836116cb565b505050505050505050565b610b90611809565b15610bdf578015610bda5760405162461bcd60e51b8152602060048201526014602482015273554e45585045435445445f494e49545f4441544160601b60448201526064016106eb565b610b7d565b610be98282611819565b610bf382826118c8565b610b7d611943565b5050565b610c0833611560565b610c245760405162461bcd60e51b81526004016106eb906137b8565b610c2c611282565b15610c495760405162461bcd60e51b81526004016106eb906137e1565b610c6c604051806060016040528060318152602001613c87603191396001611637565b6040517f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b17681905f90a1565b610c9f33610ffa565b610cdb5760405162461bcd60e51b815260206004820152600d60248201526c27a7262cafa7a822a920aa27a960991b60448201526064016106eb565b600a8311610d275760405162461bcd60e51b815260206004820152601960248201527814d5105492d3915517d3d55514155517d513d3d7d4d213d495603a1b60448201526064016106eb565b610d3b8484610d346115ae565b91906119bf565b83836008818110610d4e57610d4e61387b565b90506020020135600114610d9d5760405162461bcd60e51b8152602060048201526016602482015275554e45585045435445445f4b5a475f44415f464c414760501b60448201526064016106eb565b610db4610dad84600a818861388f565b8484611a53565b5f610dbf85856120bd565b9050610dcc8585836120ef565b610de08585610dd96115ae565b91906124ba565b5050505050565b5f8486336001600160a01b03167f8abd2ec2e0a10c82f5b60ea00455fa96c41fd144f225fcc52b8d83d94f803ed8878787604051610e27939291906138ba565b60405180910390a45f610e3d8787878787611669565b90505f610e486116a9565b5f83815260209190915260408120549150819003610e9f5760405162461bcd60e51b81526020600482015260146024820152731393d7d35154d4d051d157d513d7d0d05390d15360621b60448201526064016106eb565b5f610ea861251b565b5f84815260209190915260408120549150819003610f135760405162461bcd60e51b815260206004820152602260248201527f4d4553534147455f43414e43454c4c4154494f4e5f4e4f545f52455155455354604482015261115160f21b60648201526084016106eb565b5f610f1c611235565b610f269083613804565b905081811015610f785760405162461bcd60e51b815260206004820152601c60248201527f43414e43454c5f414c4c4f5745445f54494d455f4f564552464c4f570000000060448201526064016106eb565b80421015610fd45760405162461bcd60e51b8152602060048201526024808201527f4d4553534147455f43414e43454c4c4154494f4e5f4e4f545f414c4c4f57454460448201526317d6515560e21b60648201526084016106eb565b5f610fdd6116a9565b5f8681526020919091526040902055509198975050505050505050565b5f6110036115f7565b6001600160a01b039092165f90815260209290925250604090205460ff1690565b61102d33610ffa565b6110695760405162461bcd60e51b815260206004820152600d60248201526c27a7262cafa7a822a920aa27a960991b60448201526064016106eb565b600a83116110b55760405162461bcd60e51b815260206004820152601960248201527814d5105492d3915517d3d55514155517d513d3d7d4d213d495603a1b60448201526064016106eb565b6110c28484610d346115ae565b838360088181106110d5576110d561387b565b905060200201355f146111235760405162461bcd60e51b8152602060048201526016602482015275554e45585045435445445f4b5a475f44415f464c414760501b60448201526064016106eb565b5f610dbf858560405180604001604052808781526020018681525061253d565b5f61114c6116a9565b5f92835260205250604090205490565b5f8486336001600160a01b03167f2e00dccd686fd6823ec7dc3e125582aa82881b6ff5f6b5a73856e1ea8338a3be87878760405161119c939291906138ba565b60405180910390a45f6111b28787878787611669565b90505f6111bd6116a9565b5f83815260209190915260409020549050806112125760405162461bcd60e51b81526020600482015260146024820152731393d7d35154d4d051d157d513d7d0d05390d15360621b60448201526064016106eb565b4261121b61251b565b5f8481526020919091526040902055509695505050505050565b5f6106406040518060600160405280602d8152602001613bf0602d913961152d565b610816816125b2565b5f610640604051806060016040528060238152602001613bcd6023913961152d565b5f610640604051806060016040528060318152602001613c876031913961152d565b6112ac611282565b156112c95760405162461bcd60e51b81526004016106eb906137e1565b6112d233611560565b6112ee5760405162461bcd60e51b81526004016106eb906137b8565b337f07688623ef226ae0c2f88d3fdc7f6bb41427c804bcec3f36699b07148e3f534061131861150f565b60408051918252602082018590520160405180910390a2610816816126cb565b610816816126ed565b611349612855565b565b5f6113546115ae565b54919050565b61136333611560565b61137f5760405162461bcd60e51b81526004016106eb906137b8565b61138881610ffa565b15610816575f6113966115f7565b6001600160a01b0383165f8181526020928352604090819020805460ff19169415159490941790935591519182527fec5f6c3a91a1efb1f9a308bb33c6e9e66bf9090fad0732f127dfdbf516d0625d910161080d565b5f61114c61251b565b5f61114c61158c565b611406611282565b156114235760405162461bcd60e51b81526004016106eb906137e1565b61142c33611560565b6114485760405162461bcd60e51b81526004016106eb906137b8565b610816816128d9565b5f610640604051806060016040528060218152602001613c1d6021913961152d565b6113496128fb565b611483611282565b156114a05760405162461bcd60e51b81526004016106eb906137e1565b6114a933611560565b6114c55760405162461bcd60e51b81526004016106eb906137b8565b337f600a61c1b32ac42fb2fe76e8fc7582a98106668fc16dcd85567cd3937363e49b6114ef611260565b60408051918252602082018590520160405180910390a26108168161297c565b5f6106406040518060600160405280602e8152602001613b9f602e91395b5f808260405160200161154091906138dd565b60408051601f198184030181529190528051602090910120549392505050565b5f8061156a61299e565b6001600160a01b039093165f9081526020939093525050604090205460ff1690565b5f610640604051806060016040528060238152602001613c3e602391396129e6565b5f80604051806060016040528060278152602001613b78602791396040516020016115d991906138dd565b60408051601f19818403018152919052805160209091012092915050565b5f610640604051806060016040528060288152602001613b20602891396129e6565b610816604051806060016040528060218152602001613c1d60219139825b5f8260405160200161164991906138dd565b604051602081830303815290604052805190602001209050818155505050565b6040515f9061168890339088908590899088908a9082906020016138f8565b60405160208183030381529060405280519060200120905095945050505050565b5f610640604051806060016040528060268152602001613c61602691396129e6565b6001600160a01b0383163b6117175760405162461bcd60e51b8152602060048201526012602482015271115250d7d393d517d057d0d3d395149050d560721b60448201526064016106eb565b5f80846001600160a01b031663439fab9160e01b858560405160240161173e92919061392f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161177c91906138dd565b5f60405180830381855af49150503d805f81146117b4576040519150601f19603f3d011682016040523d82523d5f602084013e6117b9565b606091505b50915091508181906117de5760405162461bcd60e51b81526004016106eb91906136d7565b5080518190156118015760405162461bcd60e51b81526004016106eb91906136d7565b505050505050565b5f611812611260565b1515919050565b60e081146118625760405162461bcd60e51b8152602060048201526016602482015275494c4c4547414c5f494e49545f444154415f53495a4560501b60448201526064016106eb565b5f6118706020828486613854565b81019061187d91906134e5565b9050805f036118c35760405162461bcd60e51b81526020600482015260126024820152712120a22fa4a724aa24a0a624ad20aa24a7a760711b60448201526064016106eb565b505050565b5f808080806118d98688018861395d565b945094509450945094506118ec8561297c565b6118f5846126cb565b6118fe83612a18565b6119258161190a6115ae565b90805182556020810151600183015560400151600290910155565b61192e82611619565b61193a620697806128d9565b50505050505050565b5f61194c61299e565b6001810154909150600160a01b900460ff16156119a15760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b60448201526064016106eb565b60018101805460ff60a01b1916600160a01b17905561081633612a3a565b5f83600101545f19036119de575067080000000000001160c01b6119e5565b5060018301545b80838360028181106119f9576119f961387b565b9050602002013514611a4d5760405162461bcd60e51b815260206004820152601960248201527f494e56414c49445f505245565f424c4f434b5f4e554d4245520000000000000060448201526064016106eb565b50505050565b6002831015611a9c5760405162461bcd60e51b815260206004820152601560248201527412d691d7d4d151d351539517d513d3d7d4d213d495605a1b60448201526064016106eb565b5f84845f818110611aaf57611aaf61387b565b905060200201355f1b90505f85856001818110611ace57611ace61387b565b9050602002013590505f816002611ae5919061383d565b611af0906002613804565b9050838214611b415760405162461bcd60e51b815260206004820152601c60248201527f494e56414c49445f4e554d4245525f4f465f4b5a475f50524f4f46530000000060448201526064016106eb565b611b4c82600261383d565b611b569082613804565b861015611b9d5760405162461bcd60e51b815260206004820152601560248201527412d691d7d4d151d351539517d513d3d7d4d213d495605a1b60448201526064016106eb565b5f5b828110156120b35780495f819003611bee5760405162461bcd60e51b81526020600482015260126024820152710929cac82989288be84989e84be929c888ab60731b60448201526064016106eb565b600160f81b815f1a60f81b6001600160f81b03191614611c505760405162461bcd60e51b815260206004820152601c60248201527f554e45585045435445445f424c4f425f484153485f56455253494f4e0000000060448201526064016106eb565b60605f8a8a611c6086600261383d565b611c6b906002613804565b818110611c7a57611c7a61387b565b9050602002013590505f8b8b866002611c93919061383d565b611c9e906002613804565b611ca9906001613804565b818110611cb857611cb861387b565b9050602002013590506001600160c01b038016821115611d135760405162461bcd60e51b81526020600482015260166024820152751253959053125117d2d691d7d0d3d35352551351539560521b60448201526064016106eb565b6001600160c01b03811115611d635760405162461bcd60e51b81526020600482015260166024820152751253959053125117d2d691d7d0d3d35352551351539560521b60448201526064016106eb565b6040805167ffffffffffffffff1992821b8316602082015292811b9091166038830152805180830360300181526050909201905290505f808b8b611da887600261383d565b611db29089613804565b818110611dc157611dc161387b565b9050602002013590505f8c8c876002611dda919061383d565b611de4908a613804565b611def906001613804565b818110611dfe57611dfe61387b565b9050602002013590506001600160801b038016821115611e525760405162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f595f56414c554560881b60448201526064016106eb565b6001600160801b03811115611e9b5760405162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f595f56414c554560881b60448201526064016106eb565b611ea982608083901b613804565b5f1b925050506030898986818110611ec357611ec361387b565b9050602002810190611ed59190613a02565b905014611f1d5760405162461bcd60e51b8152602060048201526016602482015275494e56414c49445f4b5a475f50524f4f465f53495a4560501b60448201526064016106eb565b5f80600a858a85878f8f8c818110611f3757611f3761387b565b9050602002810190611f499190613a02565b604051602001611f5e96959493929190613a45565b60408051601f1981840301815290829052611f78916138dd565b5f60405180830381855afa9150503d805f8114611fb0576040519150601f19603f3d011682016040523d82523d5f602084013e611fb5565b606091505b5091509150816120175760405162461bcd60e51b815260206004820152602760248201527f504f494e545f4556414c554154494f4e5f505245434f4d50494c455f43414c4c60448201526617d1905253115160ca1b60648201526084016106eb565b805160208201207fb2157d3a40131b14c4c675335465dffde802f0ce5218ad012284d7f275d1b37c146120a25760405162461bcd60e51b815260206004820152602d60248201527f554e45585045435445445f504f494e545f4556414c554154494f4e5f5052454360448201526c13d35412531157d3d555141555609a1b60648201526084016106eb565b505060019093019250611b9f915050565b5050505050505050565b5f82826040516020016120d1929190613a86565b60405160208183030381529060405280519060200120905092915050565b6120f98383612ae0565b612101611451565b838360078181106121145761211461387b565b905060200201351461215e5760405162461bcd60e51b81526020600482015260136024820152720929cac82989288be869e9c8c928ebe9082a69606b1b60448201526064016106eb565b828260098181106121715761217161387b565b905060200201355f146121c65760405162461bcd60e51b815260206004820152601960248201527f46554c4c5f4f55545055545f4e4f545f535550504f525445440000000000000060448201526064016106eb565b5f838360068181106121da576121da61387b565b905060200201355f14612275576121ef611260565b848460068181106122025761220261387b565b90506020020135146122665760405162461bcd60e51b815260206004820152602760248201527f41474752454741544f525f4d4f44455f494e56414c49445f4f535f50524f47526044820152660829abe9082a6960cb1b60648201526084016106eb565b61226e61150f565b9050612280565b61227d611260565b90505b604080516020808201849052818301859052825180830384018152606090920190925280519101206122b0612b73565b6001600160a01b0316636a938567826040518263ffffffff1660e01b81526004016122dd91815260200190565b602060405180830381865afa1580156122f8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061231c9190613a92565b6123685760405162461bcd60e51b815260206004820152601960248201527f4e4f5f53544154455f5452414e534954494f4e5f50524f4f460000000000000060448201526064016106eb565b6040518381527f9866f8ddfe70bb512b2f2b28b49d4017c43f7ba775f1a20c61c13eea8cdac1119060200160405180910390a16123af85856123a86115ae565b9190612b95565b5f6123ba8686612d19565b90506123da60016123cd8784818b61388f565b6123d561158c565b612db4565b6123e49082613804565b90506123fe5f6123f68784818b61388f565b6123d56116a9565b6124089082613804565b90508481146124595760405162461bcd60e51b815260206004820152601860248201527f535441524b4e45545f4f55545055545f544f4f5f4c4f4e47000000000000000060448201526064016106eb565b5f6124626115ae565b805460018201546002830154604080519384526020840192909252908201529091507fd342ddf7a308dec111745b00315c14b7efb2bdae570a6856e088ed0c65a3576c9060600160405180910390a150505050505050565b818160038181106124cd576124cd61387b565b905060200201358360010154146118c35760405162461bcd60e51b81526020600482015260126024820152715245454e5452414e43595f4641494c55524560701b60448201526064016106eb565b5f610640604051806060016040528060308152602001613b48603091396129e6565b5f828161254a86836120bd565b90505f8183865f01518760200151866125639190613804565b6040805160208101959095528401929092526060830152608082015260a00160408051601f19818403018152919052805160209091012090506125a7816001613804565b979650505050505050565b6125bb33611560565b6125d75760405162461bcd60e51b81526004016106eb906137b8565b6001600160a01b03811633036126265760405162461bcd60e51b8152602060048201526014602482015273474f5645524e4f525f53454c465f52454d4f564560601b60448201526064016106eb565b5f61262f61299e565b905061263a82611560565b6126755760405162461bcd60e51b815260206004820152600c60248201526b2727aa2fa3a7ab22a92727a960a11b60448201526064016106eb565b6001600160a01b0382165f8181526020838152604091829020805460ff1916905590519182527fd75f94825e770b8b512be8e74759e252ad00e102e38f50cce2f7c6f868a2959991015b60405180910390a15050565b6108166040518060600160405280602e8152602001613b9f602e913982611637565b6126f633611560565b6127125760405162461bcd60e51b81526004016106eb906137b8565b5f61271b61299e565b90506001600160a01b0382166127615760405162461bcd60e51b815260206004820152600b60248201526a4241445f4144445245535360a81b60448201526064016106eb565b61276a82611560565b156127aa5760405162461bcd60e51b815260206004820152601060248201526f20a62922a0a22cafa3a7ab22a92727a960811b60448201526064016106eb565b60018101546001600160a01b0316156128055760405162461bcd60e51b815260206004820152601760248201527f4f544845525f43414e4449444154455f50454e44494e4700000000000000000060448201526064016106eb565b6001810180546001600160a01b0319166001600160a01b0384169081179091556040519081527f6166272c8d3f5f579082f2827532732f97195007983bb5b83ac12c56700b01a6906020016126bf565b5f61285e61299e565b60018101549091506001600160a01b031633146128bd5760405162461bcd60e51b815260206004820152601760248201527f4f4e4c595f43414e4449444154455f474f5645524e4f5200000000000000000060448201526064016106eb565b6128c633612a3a565b60010180546001600160a01b0319169055565b6108166040518060600160405280602d8152602001613bf0602d913982611637565b61290433611560565b6129205760405162461bcd60e51b81526004016106eb906137b8565b5f61292961299e565b60018101549091506001600160a01b031615610816576001810180546001600160a01b03191690556040517f7a8dc7dd7fffb43c4807438fa62729225156941e641fd877938f4edade3429f5905f90a150565b610816604051806060016040528060238152602001613bcd6023913982611637565b5f806040518060400160405280601c81526020017f535441524b4e45545f312e305f474f5645524e414e43455f494e464f000000008152506040516020016115d991906138dd565b5f80826040516020016129f991906138dd565b60408051601f1981840301815291905280516020909101209392505050565b610816604051806060016040528060228152602001613afe602291398261336f565b612a4381611560565b15612a835760405162461bcd60e51b815260206004820152601060248201526f20a62922a0a22cafa3a7ab22a92727a960811b60448201526064016106eb565b5f612a8c61299e565b6001600160a01b0383165f8181526020838152604091829020805460ff1916600117905590519182529192507fcfb473e6c03f9a29ddaf990e736fa3de5188a0bd85d684f5b6e164ebfbfff5d291016126bf565b6001600167080000000000001160c01b01602083028401845b81811015612b195782813510612b11575f9350612b19565b602001612af9565b505050806118c35760405162461bcd60e51b815260206004820152602160248201527f50524f4752414d5f4f55545055545f56414c55455f4f55545f4f465f52414e476044820152604560f81b60648201526084016106eb565b5f610640604051806060016040528060228152602001613afe6022913961152d565b612ba08383836119bf565b5f82826003818110612bb457612bb461387b565b90506020020135905083600101548113612c105760405162461bcd60e51b815260206004820152601860248201527f494e56414c49445f4e45575f424c4f434b5f4e554d424552000000000000000060448201526064016106eb565b60018401819055600284015483836004818110612c2f57612c2f61387b565b9050602002013514612c835760405162461bcd60e51b815260206004820152601760248201527f494e56414c49445f505245565f424c4f434b5f4841534800000000000000000060448201526064016106eb565b82826005818110612c9657612c9661387b565b6020029190910135600286015550365f612cb085856133c7565b91509150612cbe82826133f0565b865414612d055760405162461bcd60e51b81526020600482015260156024820152741253959053125117d41491559253d554d7d493d3d5605a1b60448201526064016106eb565b612d0f8282613412565b9095555050505050565b5f82826008818110612d2d57612d2d61387b565b905060200201355f03612d425750600a61064f565b5f8383612d516001600a613804565b818110612d6057612d6061387b565b905060200201359050806002612d76919061383d565b612d8182600261383d565b612d8d600a6001613804565b612d98906001613804565b612da29190613804565b612dac9190613804565b949350505050565b5f8084845f818110612dc857612dc861387b565b90506020020135905063400000008110612e245760405162461bcd60e51b815260206004820152601c60248201527f494e56414c49445f4d4553534147455f5345474d454e545f53495a450000000060448201526064016106eb565b60015f612e318383613804565b90505f88612e40576004612e43565b60025b90505f5b8284101561327f575f612e5a8386613804565b9050888110612e9f5760405162461bcd60e51b8152602060048201526011602482015270135154d4d051d157d513d3d7d4d213d495607a1b60448201526064016106eb565b5f8a8a83818110612eb257612eb261387b565b90506020020135905063400000008110612f075760405162461bcd60e51b81526020600482015260166024820152750929cac82989288bea082b2989e8288be988a9c8ea8960531b60448201526064016106eb565b5f81612f14846001613804565b612f1e9190613804565b90508a811115612f705760405162461bcd60e51b815260206004820152601960248201527f5452554e43415445445f4d4553534147455f5041594c4f41440000000000000060448201526064016106eb565b8c15613080575f8c8c89908492612f899392919061388f565b604051602001612f9a929190613a86565b6040516020818303038152906040528051906020012090508c8c60018a612fc19190613804565b818110612fd057612fd061387b565b905060200201356001600160a01b03168d8d5f8b612fee9190613804565b818110612ffd57612ffd61387b565b905060200201357f4264ac208b5fde633ccdd42e0f12c3d6d443a4f3779bbf886925b94665b63a228f8f60038d6130349190613804565b6130409288929061388f565b60405161304e92919061377e565b60405180910390a35f81815260208c905260408120805460019290613074908490613804565b90915550613275915050565b5f8c8c899084926130939392919061388f565b6040516020016130a4929190613a86565b60408051601f1981840301815291815281516020928301205f818152928e9052912054909150806131175760405162461bcd60e51b815260206004820152601a60248201527f494e56414c49445f4d4553534147455f544f5f434f4e53554d4500000000000060448201526064016106eb565b6131226001826137a5565b61312c9087613804565b5f92835260208d90526040832083905595508d90508c61314d60028b613804565b81811061315c5761315c61387b565b9050602002013590505f8d8d60058b6131759190613804565b6131819286929061388f565b808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505090508d8d60038b6131d19190613804565b8181106131e0576131e061387b565b905060200201358e8e60018c6131f69190613804565b8181106132055761320561387b565b905060200201358f8f5f8d61321a9190613804565b8181106132295761322961387b565b905060200201356001600160a01b03167f9592d37825c744e33fa80c469683bbd04d336241bb600b574758efd182abe26a848660405161326a929190613ab1565b60405180910390a450505b9550612e47915050565b8284146132ce5760405162461bcd60e51b815260206004820152601c60248201527f494e56414c49445f4d4553534147455f5345474d454e545f53495a450000000060448201526064016106eb565b8015613361576040515f90339083908381818185875af1925050503d805f8114613313576040519150601f19603f3d011682016040523d82523d5f602084013e613318565b606091505b505090508061335f5760405162461bcd60e51b815260206004820152601360248201527211551217d514905394d1915497d19052531151606a1b60448201526064016106eb565b505b509198975050505050505050565b5f6133798361152d565b6001600160a01b0316146133bd5760405162461bcd60e51b815260206004820152600b60248201526a1053149150511657d4d15560aa1b60448201526064016106eb565b610bfb8282611637565b365f8381846133d7826002613804565b926133e49392919061388f565b915091505b9250929050565b5f82825f8181106134035761340361387b565b90506020020135905092915050565b5f828260018181106134035761340361387b565b6001600160a01b0381168114610816575f80fd5b5f6020828403121561344a575f80fd5b813561345581613426565b9392505050565b5f8083601f84011261346c575f80fd5b50813567ffffffffffffffff811115613483575f80fd5b6020830191508360208260051b85010111156133e9575f80fd5b5f805f604084860312156134af575f80fd5b83359250602084013567ffffffffffffffff8111156134cc575f80fd5b6134d88682870161345c565b9497909650939450505050565b5f602082840312156134f5575f80fd5b5035919050565b5f805f806060858703121561350f575f80fd5b8435935060208501359250604085013567ffffffffffffffff811115613533575f80fd5b61353f8782880161345c565b95989497509550505050565b5f806020838503121561355c575f80fd5b823567ffffffffffffffff80821115613573575f80fd5b818501915085601f830112613586575f80fd5b813581811115613594575f80fd5b8660208285010111156135a5575f80fd5b60209290920196919550909350505050565b5f805f80604085870312156135ca575f80fd5b843567ffffffffffffffff808211156135e1575f80fd5b6135ed8883890161345c565b90965094506020870135915080821115613605575f80fd5b5061353f8782880161345c565b5f805f805f60808688031215613626575f80fd5b8535945060208601359350604086013567ffffffffffffffff81111561364a575f80fd5b6136568882890161345c565b96999598509660600135949350505050565b5f805f806060858703121561367b575f80fd5b843567ffffffffffffffff811115613691575f80fd5b61369d8782880161345c565b90989097506020870135966040013595509350505050565b5f5b838110156136cf5781810151838201526020016136b7565b50505f910152565b602081525f82518060208401526136f58160408501602087016136b5565b601f01601f19169190910160400192915050565b5f6001600160fb1b0383111561371d575f80fd5b8260051b80838637939093019392505050565b8581528460208201528360408201525f6125a7606083018486613709565b8183525f6001600160fb1b03831115613765575f80fd5b8260051b80836020870137939093016020019392505050565b602081525f612dac60208301848661374e565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561064f5761064f613791565b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b60208082526009908201526811925390531256915160ba1b604082015260600190565b8082018082111561064f5761064f613791565b606081525f61382a60608301868861374e565b6020830194909452506040015292915050565b808202811582820484141761064f5761064f613791565b5f8085851115613862575f80fd5b8386111561386e575f80fd5b5050820193919092039150565b634e487b7160e01b5f52603260045260245ffd5b5f808585111561389d575f80fd5b838611156138a9575f80fd5b5050600583901b0193919092039150565b604081525f6138cd60408301858761374e565b9050826020830152949350505050565b5f82516138ee8184602087016136b5565b9190910192915050565b8781528660208201528560408201528460608201528360808201525f61392260a083018486613709565b9998505050505050505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f805f805f85870360e0811215613972575f80fd5b8635955060208701359450604087013561398b81613426565b93506060878101359350607f19820112156139a4575f80fd5b506040516060810181811067ffffffffffffffff821117156139d457634e487b7160e01b5f52604160045260245ffd5b80604052506080870135815260a0870135602082015260c08701356040820152809150509295509295909350565b5f808335601e19843603018112613a17575f80fd5b83018035915067ffffffffffffffff821115613a31575f80fd5b6020019150368190038213156133e9575f80fd5b8681528560208201528460408201525f8451613a688160608501602089016136b5565b8201838560608301375f930160600192835250909695505050505050565b5f612dac828486613709565b5f60208284031215613aa2575f80fd5b81518015158114613455575f80fd5b604080825283519082018190525f906020906060840190828701845b82811015613ae957815184529284019290840190600101613acd565b50505060209390930193909352509291505056fe535441524b4e45545f312e305f494e49545f56455249464945525f41444452455353535441524b4e45545f312e305f524f4c45535f4f50455241544f52535f4d415050494e475f544147535441524b4e45545f312e305f4d5347494e475f4c31544f4c325f43414e43454c4c4154494f4e5f4d41505050494e47535441524b4e45545f312e305f494e49545f535441524b4e45545f53544154455f535452554354535441524b4e45545f312e305f494e49545f41474752454741544f525f50524f4752414d5f484153485f55494e54535441524b4e45545f312e305f494e49545f50524f4752414d5f484153485f55494e54535441524b4e45545f312e305f4d5347494e475f4c31544f4c325f43414e43454c4c4154494f4e5f44454c4159535441524b4e45545f312e305f535441524b4e45545f434f4e4649475f48415348535441524b4e45545f312e305f4d5347494e475f4c32544f4c315f4d41505050494e47535441524b4e45545f312e305f4d5347494e475f4c31544f4c325f4d41505050494e475f5632535441524b574152455f434f4e5452414354535f474f564552454e45445f46494e414c495a41424c455f312e305f544147a264697066735822122044ed2e402d39c3e23dc664be92886a53d972dffb0f77ba7c72e0936273b947d864736f6c63430008180033