0 txs
0 calls
constructor
constructor(string name_, string symbol_, uint8 decimals_, address user_, address owner_, uint256 initialSupply_, address plug_)
functions
allowance
viewfunction allowance(address, address) view returns (uint256)
balanceOf
viewfunction balanceOf(address) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
getCurrentReceivingLimit
viewfunction getCurrentReceivingLimit(uint32 siblingChainSlug_) view returns (uint256)
getCurrentSendingLimit
viewfunction getCurrentSendingLimit(uint32 siblingChainSlug_) view returns (uint256)
getReceivingLimitParams
viewfunction getReceivingLimitParams(uint32 siblingChainSlug_) view returns (tuple)
getSendingLimitParams
viewfunction getSendingLimitParams(uint32 siblingChainSlug_) view returns (tuple)
hasRole
viewfunction hasRole(bytes32 role_, address address_) view returns (bool)
name
viewfunction name() view returns (string)
nominee
viewfunction nominee() view returns (address)
nonces
viewfunction nonces(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
pendingMints
viewfunction pendingMints(uint32, address, bytes32) view returns (uint256)
plug__
viewfunction plug__() view returns (address)
siblingPendingMints
viewfunction siblingPendingMints(uint32) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
bridge
payablefunction bridge(address receiver_, uint32 siblingChainSlug_, uint256 sendingAmount_, uint256 msgGasLimit_) payable
claimOwner
nonpayablefunction claimOwner()
grantRole
nonpayablefunction grantRole(bytes32 role_, address grantee_)
inbound
payablefunction inbound(uint32 siblingChainSlug_, bytes payload_) payable
mintPendingFor
nonpayablefunction mintPendingFor(address receiver_, uint32 siblingChainSlug_, bytes32 identifier)
nominateOwner
nonpayablefunction nominateOwner(address nominee_)
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
rescueFunds
nonpayablefunction rescueFunds(address token_, address rescueTo_, uint256 amount_)
revokeRole
nonpayablefunction revokeRole(bytes32 role_, address revokee_)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
updateLimitParams
nonpayablefunction updateLimitParams(tuple[] updates_)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 amount)
BridgeTokens
event BridgeTokens(uint32 siblingChainSlug, address withdrawer, address receiver, uint256 bridgedAmount, bytes32 identifier)
LimitParamsUpdated
event LimitParamsUpdated((bool isMint, uint32 siblingChainSlug, uint256 maxLimit, uint256 ratePerSecond)[] updates)
OwnerClaimed
event OwnerClaimed(address indexed claimer)
OwnerNominated
event OwnerNominated(address indexed nominee)
PendingTokensBridged
event PendingTokensBridged(uint32 siblingChainSlug, address receiver, uint256 mintAmount, uint256 pendingAmount, bytes32 identifier)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed grantee)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed revokee)
TokensBridged
event TokensBridged(uint32 siblingChainSlug, address receiver, uint256 mintAmount, uint256 totalAmount, bytes32 identifier)
TokensPending
event TokensPending(uint32 siblingChainSlug, address receiver, uint256 pendingAmount, uint256 totalPendingAmount, bytes32 identifier)
Transfer
event Transfer(address indexed from, address indexed to, uint256 amount)
errors
AmountOutsideLimit
error AmountOutsideLimit()
InvalidTokenAddress
error InvalidTokenAddress()
MessageIdMisMatched
error MessageIdMisMatched()
NoPermit
error NoPermit(bytes32 role)
NotPlug
error NotPlug()
OnlyNominee
error OnlyNominee()
OnlyOwner
error OnlyOwner()
SiblingNotSupported
error SiblingNotSupported()
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
creation bytecode
0x60e06040523480156200001157600080fd5b5060405162002e9638038062002e968339810160408190526200003491620003b9565b828088888882600090805190602001906200005192919062000229565b5081516200006790600190602085019062000229565b5060ff81166080524660a0526200007d620000cc565b60c0525062000090915082905062000168565b506200009f90508483620001bc565b600980546001600160a01b0319166001600160a01b03929092169190911790555062000584945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620001009190620004ba565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b600680546001600160a01b0383166001600160a01b031991821681179092556007805490911690556040517ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8790600090a250565b8060026000828254620001d091906200055d565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b82805462000237906200047e565b90600052602060002090601f0160209004810192826200025b5760008555620002a6565b82601f106200027657805160ff1916838001178555620002a6565b82800160010185558215620002a6579182015b82811115620002a657825182559160200191906001019062000289565b50620002b4929150620002b8565b5090565b5b80821115620002b45760008155600101620002b9565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002f757600080fd5b81516001600160401b0380821115620003145762000314620002cf565b604051601f8301601f19908116603f011681019082821181831017156200033f576200033f620002cf565b816040528381526020925086838588010111156200035c57600080fd5b600091505b8382101562000380578582018301518183018401529082019062000361565b83821115620003925760008385830101525b9695505050505050565b80516001600160a01b0381168114620003b457600080fd5b919050565b600080600080600080600060e0888a031215620003d557600080fd5b87516001600160401b0380821115620003ed57600080fd5b620003fb8b838c01620002e5565b985060208a01519150808211156200041257600080fd5b50620004218a828b01620002e5565b965050604088015160ff811681146200043957600080fd5b945062000449606089016200039c565b935062000459608089016200039c565b925060a088015191506200047060c089016200039c565b905092959891949750929550565b600181811c908216806200049357607f821691505b602082108103620004b457634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620004d757607f831692505b60208084108203620004f757634e487b7160e01b86526022600452602486fd5b8180156200050e576001811462000520576200054f565b60ff198616895284890196506200054f565b60008a81526020902060005b86811015620005475781548b8201529085019083016200052c565b505084890196505b509498975050505050505050565b600082198211156200057f57634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c0516128e2620005b460003960006109800152600061094b0152600061036701526128e26000f3fe6080604052600436106101d85760003560e01c80636ccae05411610102578063a9059cbb11610095578063dd62ed3e11610064578063dd62ed3e14610605578063e9293a721461063d578063f75ede1c1461065d578063f99d2a711461067d57600080fd5b8063a9059cbb14610592578063c41f1f6c146105b2578063d505accf146105c5578063d547741f146105e557600080fd5b80638da5cb5b116100d15780638da5cb5b1461051257806391d148541461053d57806395d89b411461055d578063a1284a471461057257600080fd5b80636ccae0541461047857806370a08231146104985780637ecebe00146104c55780638aaff121146104f257600080fd5b80632f57db741161017a57806340f9606b1161014957806340f9606b146103c5578063424ad588146103d85780635a27763d146104055780635b94db271461045857600080fd5b80632f57db7414610328578063313ce567146103555780633644e5151461039b5780633bd1adec146103b057600080fd5b806320f99c0a116101b657806320f99c0a1461025c578063237f835b146102a857806323b872dd146102e65780632f2ff15d1461030657600080fd5b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610238575b600080fd5b3480156101e957600080fd5b506101f261069d565b6040516101ff919061217c565b60405180910390f35b34801561021457600080fd5b506102286102233660046121b4565b61072b565b60405190151581526020016101ff565b34801561024457600080fd5b5061024e60025481565b6040519081526020016101ff565b34801561026857600080fd5b5060075473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ff565b3480156102b457600080fd5b5061024e6102c33660046121f9565b600c60209081526000938452604080852082529284528284209052825290205481565b3480156102f257600080fd5b50610228610301366004612238565b6107a4565b34801561031257600080fd5b50610326610321366004612258565b6108e8565b005b34801561033457600080fd5b5061024e610343366004612288565b600d6020526000908152604090205481565b34801561036157600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016101ff565b3480156103a757600080fd5b5061024e610947565b3480156103bc57600080fd5b506103266109a2565b6103266103d33660046122a3565b6109fe565b3480156103e457600080fd5b506009546102839073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041157600080fd5b50610425610420366004612288565b610cca565b6040516101ff91908151815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561046457600080fd5b506103266104733660046122e7565b610d40565b34801561048457600080fd5b50610326610493366004612238565b610e00565b3480156104a457600080fd5b5061024e6104b33660046122e7565b60036020526000908152604090205481565b3480156104d157600080fd5b5061024e6104e03660046122e7565b60056020526000908152604090205481565b3480156104fe57600080fd5b5061024e61050d366004612288565b610ea3565b34801561051e57600080fd5b5060065473ffffffffffffffffffffffffffffffffffffffff16610283565b34801561054957600080fd5b50610228610558366004612258565b610ec7565b34801561056957600080fd5b506101f2610f02565b34801561057e57600080fd5b5061032661058d366004612304565b610f0f565b34801561059e57600080fd5b506102286105ad3660046121b4565b61122c565b6103266105c03660046123a8565b6112b1565b3480156105d157600080fd5b506103266105e0366004612488565b611511565b3480156105f157600080fd5b50610326610600366004612258565b611830565b34801561061157600080fd5b5061024e6106203660046124ff565b600460209081526000928352604080842090915290825290205481565b34801561064957600080fd5b50610425610658366004612288565b61188b565b34801561066957600080fd5b5061024e610678366004612288565b611901565b34801561068957600080fd5b5061032661069836600461252d565b61191f565b600080546106aa9061256b565b80601f01602080910402602001604051908101604052809291908181526020018280546106d69061256b565b80156107235780601f106106f857610100808354040283529160200191610723565b820191906000526020600020905b81548152906001019060200180831161070657829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107939086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108385761080683826125ed565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602090815260408083203384529091529020555b73ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260408120805485929061086d9084906125ed565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108d59087815260200190565b60405180910390a3506001949350505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610939576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109438282611a9d565b5050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461097d57610978611b23565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60075473ffffffffffffffffffffffffffffffffffffffff1633146109f3576040517f7c91ccdd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109fc33611bbd565b565b63ffffffff83166000908152600b60205260408120600201549003610a4f576040517fec914c0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600003610a89576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff83166000908152600b60205260409020610aa9908390611c36565b610ab33383611c98565b6009546040517f9dc1128900000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015260009173ffffffffffffffffffffffffffffffffffffffff1690639dc1128990602401602060405180830381865afa158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c9190612604565b6009546040805173ffffffffffffffffffffffffffffffffffffffff898116602083015281830188905260608083018690528351808403909101815260808301938490527f0293f6970000000000000000000000000000000000000000000000000000000090935293945060009390921691630293f697913491610bd7918a9189919060840161261d565b60206040518083038185885af1158015610bf5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c1a9190612604565b9050818114610c55576040517f7b7bbbe000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805163ffffffff8716815233602082015273ffffffffffffffffffffffffffffffffffffffff88169181019190915260608101859052608081018390527f6844871d2b3f02397af87ac411a58d4915ed46e1be835bf9f266b1937c48ec8c9060a0015b60405180910390a1505050505050565b610cf56040518060800160405280600081526020016000815260200160008152602001600081525090565b5063ffffffff166000908152600b6020908152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b60065473ffffffffffffffffffffffffffffffffffffffff163314610d91576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce2290600090a250565b3360009081527f9feb9cbe7a45464a9f352055cd50b7410b8f8df450af3d1acf4272d5554fe2e360205260409020547fc4c453d647953c0fd35db5a34ee76e60fb4abc3a8fb891a25936b70b38f292539060ff16610e92576040517f962f6333000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b610e9d848484611d2e565b50505050565b63ffffffff81166000908152600b60205260408120610ec190611e1e565b92915050565b600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff165b9392505050565b600180546106aa9061256b565b3360009081527ff6091e73e819ea3cd1b46b1d8d5efd4b46f96d438142eece9165cf18a7ec806c60205260409020547f129109734c476f17817fbe7bcf461de566dcce58e4c0cb61b62d1b9af26fe47f9060ff16610f9c576040517f962f633300000000000000000000000000000000000000000000000000000000815260048101829052602401610e89565b60005b828110156111ed57838382818110610fb957610fb961264b565b610fcf926020608090920201908101915061268a565b156110f5576110266000600a6000878786818110610fef57610fef61264b565b90506080020160200160208101906110079190612288565b63ffffffff1663ffffffff168152602001908152602001600020611e85565b505083838281811061103a5761103a61264b565b90506080020160400135600a600086868581811061105a5761105a61264b565b90506080020160200160208101906110729190612288565b63ffffffff16815260208101919091526040016000206002015583838281811061109e5761109e61264b565b90506080020160600135600a60008686858181106110be576110be61264b565b90506080020160200160208101906110d69190612288565b63ffffffff1681526020810191909152604001600020600101556111db565b6111106000600b6000878786818110610fef57610fef61264b565b50508383828181106111245761112461264b565b90506080020160400135600b60008686858181106111445761114461264b565b905060800201602001602081019061115c9190612288565b63ffffffff1681526020810191909152604001600020600201558383828181106111885761118861264b565b90506080020160600135600b60008686858181106111a8576111a861264b565b90506080020160200160208101906111c09190612288565b63ffffffff1681526020810191909152604001600020600101555b806111e5816126a5565b915050610f9f565b507f443adfdab30667bb36a851e5758d544ef4e1d7ac911e59dab256cbe38545468b838360405161121f9291906126dd565b60405180910390a1505050565b3360009081526003602052604081208054839190839061124d9084906125ed565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107939086815260200190565b60095473ffffffffffffffffffffffffffffffffffffffff163314611302576040517f525a992d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff82166000908152600a60205260408120600201549003611353576040517fec914c0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060008380602001905181019061136c919061274e565b92509250925060008061139d84600a60008a63ffffffff1663ffffffff168152602001908152602001600020611e85565b909250905080156114945763ffffffff87166000818152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a16845282528083208784528252808320859055928252600d90529081208054839290611403908490612785565b909155505063ffffffff87166000818152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8a1680855290835281842088855283529281902054815194855291840192909252828201849052606083015260808201859052517f7ad82b04361f30f48f6c6e4bc9f6e0fb8591ec42544706801e7f56d55069c2cd9181900360a00190a15b61149e8583611ed9565b6040805163ffffffff8916815273ffffffffffffffffffffffffffffffffffffffff8716602082015290810183905260608101859052608081018490527f559a88e0977defc67eb67c0a45051eb6305ff87f69228412caba10fee1cc7ea49060a00160405180910390a150505050505050565b4284101561157b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610e89565b60006001611587610947565b73ffffffffffffffffffffffffffffffffffffffff8a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000061010083015261010282019290925261012281019190915261014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156116d9573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061175457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6117ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610e89565b73ffffffffffffffffffffffffffffffffffffffff90811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314611881576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109438282611f4a565b6118b66040518060800160405280600081526020016000815260200160008152602001600081525090565b5063ffffffff166000908152600a6020908152604091829020825160808101845281548152600182015492810192909252600281015492820192909252600390910154606082015290565b63ffffffff81166000908152600a60205260408120610ec190611e1e565b63ffffffff82166000908152600a60205260408120600201549003611970576040517fec914c0000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b63ffffffff82166000818152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff881684528252808320858452825280832054938352600a909152812081906119c6908490611e85565b63ffffffff87166000818152600c6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845282528083208a84528252808320859055928252600d905290812080549395509193508492611a269084906125ed565b90915550611a3690508683611ed9565b6040805163ffffffff8716815273ffffffffffffffffffffffffffffffffffffffff8816602082015290810183905260608101829052608081018590527ffac32bed6a62a1ce41dd6b7d265ce8efac0a42da086112311ef186939c5aa1459060a001610cba565b600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905551909184917f2ae6a113c0ed5b78a53413ffbb7679881f11145ccfba4fb92e863dfcd5a1d2f39190a35050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051611b55919061279d565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6006805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556007805490911690556040517ffbe19c9b601f5ee90b44c7390f3fa2319eba01762d34ee372aeafd59b25c7f8790600090a250565b6000611c4182611e1e565b9050828110611c6157428255611c5783826125ed565b6003830155505050565b6040517f47ebad2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290611ccd9084906125ed565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216611d7b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffffffffffffffffffff111111111111111111111111111111111111111273ffffffffffffffffffffffffffffffffffffffff841601611dc257611c938282611fcd565b8273ffffffffffffffffffffffffffffffffffffffff163b600003611e13576040517f1eb00b0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c93838383612042565b80546000908190611e2f90426125ed565b90506000836001015482611e43919061286f565b90508360020154846003015482611e5a9190612785565b1115611e6c5783600201549250611e7e565b6003840154611e7b9082612785565b92505b5050919050565b6000806000611e9384611e1e565b4285559050848110611eba57611ea985826125ed565b600385015584925060009150611ed1565b60006003850155915081611ece81866125ed565b91505b509250929050565b8060026000828254611eeb9190612785565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611d22565b600082815260086020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551909184917f155aaafb6329a2098580462df33ec4b7441b19729b9601c5fc17ae1cf99a8a529190a35050565b600080600080600085875af1905080611c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610e89565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610e9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610e89565b6000815180845260005b818110156121375760208185018101518683018201520161211b565b81811115612149576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610efb6020830184612111565b73ffffffffffffffffffffffffffffffffffffffff811681146121b157600080fd5b50565b600080604083850312156121c757600080fd5b82356121d28161218f565b946020939093013593505050565b803563ffffffff811681146121f457600080fd5b919050565b60008060006060848603121561220e57600080fd5b612217846121e0565b925060208401356122278161218f565b929592945050506040919091013590565b60008060006060848603121561224d57600080fd5b83356122178161218f565b6000806040838503121561226b57600080fd5b82359150602083013561227d8161218f565b809150509250929050565b60006020828403121561229a57600080fd5b610efb826121e0565b600080600080608085870312156122b957600080fd5b84356122c48161218f565b93506122d2602086016121e0565b93969395505050506040820135916060013590565b6000602082840312156122f957600080fd5b8135610efb8161218f565b6000806020838503121561231757600080fd5b823567ffffffffffffffff8082111561232f57600080fd5b818501915085601f83011261234357600080fd5b81358181111561235257600080fd5b8660208260071b850101111561236757600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156123bb57600080fd5b6123c4836121e0565b9150602083013567ffffffffffffffff808211156123e157600080fd5b818501915085601f8301126123f557600080fd5b81358181111561240757612407612379565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561244d5761244d612379565b8160405282815288602084870101111561246657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080600080600060e0888a0312156124a357600080fd5b87356124ae8161218f565b965060208801356124be8161218f565b95506040880135945060608801359350608088013560ff811681146124e257600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561251257600080fd5b823561251d8161218f565b9150602083013561227d8161218f565b60008060006060848603121561254257600080fd5b833561254d8161218f565b925061255b602085016121e0565b9150604084013590509250925092565b600181811c9082168061257f57607f821691505b6020821081036125b8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156125ff576125ff6125be565b500390565b60006020828403121561261657600080fd5b5051919050565b63ffffffff841681528260208201526060604082015260006126426060830184612111565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b803580151581146121f457600080fd5b60006020828403121561269c57600080fd5b610efb8261267a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036126d6576126d66125be565b5060010190565b6020808252818101839052600090604080840186845b87811015612741576127048261267a565b1515835263ffffffff6127188684016121e0565b1683860152818401358484015260608083013590840152608092830192909101906001016126f3565b5090979650505050505050565b60008060006060848603121561276357600080fd5b835161276e8161218f565b602085015160409095015190969495509392505050565b60008219821115612798576127986125be565b500190565b600080835481600182811c9150808316806127b957607f831692505b602080841082036127f1577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015612805576001811461283457612861565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650612861565b60008a81526020902060005b868110156128595781548b820152908501908301612840565b505084890196505b509498975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156128a7576128a76125be565b50029056fea264697066735822122016225e5275dde2091b3cd1593477d2067051b897800f438369f5f3220c93a51164736f6c634300080d003300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000001200000000000000000000000086ab95d2c6200b798ca382740597ce715ad0d72700000000000000000000000086ab95d2c6200b798ca382740597ce715ad0d7270000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ea7c7559f05bd28053cf9c6f34344ee02c9b63f1000000000000000000000000000000000000000000000000000000000000000474696d6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000454494d4500000000000000000000000000000000000000000000000000000000