0 txs
1 call
constructor
constructor(address initialAuthority)
functions
accountByIndex
viewfunction accountByIndex(uint256 index) view returns (tuple)
aliasExists
viewfunction aliasExists(string alias_) view returns (bool)
authority
viewfunction authority() view returns (address)
contains
viewfunction contains(address addr) view returns (bool)
getAddress
viewfunction getAddress(string alias_) view returns (address)
getAlias
viewfunction getAlias(address addr) view returns (string)
isConsumingScheduledOp
viewfunction isConsumingScheduledOp() view returns (bytes4)
listAccounts
viewfunction listAccounts() view returns (tuple[] list)
totalAccounts
viewfunction totalAccounts() view returns (uint256)
addAccount
nonpayablefunction addAccount(string alias_, address addr, string category)
removeAccount
nonpayablefunction removeAccount(address addr)
removeAccount
nonpayablefunction removeAccount(string alias_)
set
nonpayablefunction set(string alias_, address addr, string category)
setAuthority
nonpayablefunction setAuthority(address newAuthority)
setCategory
nonpayablefunction setCategory(string alias_, string category)
updateAddress
nonpayablefunction updateAddress(string alias_, address newTarget)
updateAlias
nonpayablefunction updateAlias(address addr, string newAlias_)
updateAlias
nonpayablefunction updateAlias(string oldAlias_, string newAlias_)
events
AccountAdded
event AccountAdded(bytes32 indexed aliasKey, address indexed addr, string alias_)
AccountRemoved
event AccountRemoved(bytes32 indexed aliasKey, address indexed addr, string alias_)
AddressUpdated
event AddressUpdated(bytes32 indexed aliasKey, address indexed oldTarget, address indexed newTarget, string alias_)
AliasUpdated
event AliasUpdated(address indexed addr, bytes32 indexed oldAliasKey, bytes32 indexed newAliasKey, string oldAlias_, string newAlias_)
AuthorityUpdated
event AuthorityUpdated(address authority)
CategorySet
event CategorySet(bytes32 indexed aliasKey, string alias_, string category)
errors
AccessManagedInvalidAuthority
error AccessManagedInvalidAuthority(address authority)
AccessManagedRequiredDelay
error AccessManagedRequiredDelay(address caller, uint32 delay)
AccessManagedUnauthorized
error AccessManagedUnauthorized(address caller)
AccountNotFound
error AccountNotFound(string alias_)
AddressAlreadyExists
error AddressAlreadyExists(address addr)
AddressNotFound
error AddressNotFound(address addr)
AliasAlreadyExists
error AliasAlreadyExists(string alias_)
IndexOutOfBounds
error IndexOutOfBounds(uint256 index, uint256 maxIndex)
InvalidAddress
error InvalidAddress()
InvalidAlias
error InvalidAlias()
InvalidString
error InvalidString(string)
ReservedAlias
error ReservedAlias(bytes32 aliasKey)
StringTooLong
error StringTooLong(string)
creation bytecode
0x60806040523461002f576100196100146100f4565b61021a565b610021610034565b613240610dbc823961324090f35b61003a565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100669061003e565b810190811060018060401b0382111761007e57604052565b610048565b9061009661008f610034565b928361005c565b565b5f80fd5b60018060a01b031690565b6100b09061009c565b90565b6100bc816100a7565b036100c357565b5f80fd5b905051906100d4826100b3565b565b906020828203126100ef576100ec915f016100c7565b90565b610098565b610112613ffc8038038061010781610083565b9283398101906100d6565b90565b60018060401b0381116101315761012d60209161003e565b0190565b610048565b9061014861014383610115565b610083565b918252565b5f7f5065726d697373696f6e734d616e616765720000000000000000000000000000910152565b61017e6012610136565b9061018b6020830161014d565b565b610195610174565b90565b90565b6101af6101aa6101b49261009c565b610198565b61009c565b90565b6101c09061019b565b90565b6101cc906101b7565b90565b5f7f4164647265737352656769737472790000000000000000000000000000000000910152565b610200600f610136565b9061020d602083016101cf565b565b6102176101f6565b90565b610234906102278161024f565b61022f61018d565b610757565b61024d610240306101c3565b61024861020f565b610757565b565b610258906108c2565b565b5f0190565b90565b61027661027161027b9261025f565b610198565b61009c565b90565b61028790610262565b90565b6102946040610083565b90565b906102a1906100a7565b9052565b52565b90565b6102b4906102a8565b90565b906102c1906102ab565b5f5260205260405f2090565b6102d790516100a7565b90565b5f1b90565b906102f060018060a01b03916102da565b9181191691161790565b610303906101b7565b90565b90565b9061031e610319610325926102fa565b610306565b82546102df565b9055565b5190565b5190565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015610365575b602083101461036057565b610331565b91607f1691610355565b5f5260205f2090565b601f602091010490565b1b90565b919060086103a191029161039b5f1984610382565b92610382565b9181191691161790565b90565b6103c26103bd6103c7926103ab565b610198565b6103ab565b90565b90565b91906103e36103de6103eb936103ae565b6103ca565b908354610386565b9055565b5f90565b610405916103ff6103ef565b916103cd565b565b5b818110610413575050565b806104205f6001936103f3565b01610408565b9190601f8111610436575b505050565b6104426104679361036f565b90602061044e84610378565b8301931061046f575b61046090610378565b0190610407565b5f8080610431565b915061046081929050610457565b1c90565b90610491905f199060080261047d565b191690565b816104a091610481565b906002021790565b906104b28161032d565b9060018060401b038211610570576104d4826104ce8554610345565b85610426565b602090601f8311600114610508579180916104f7935f926104fc575b5050610496565b90555b565b90915001515f806104f0565b601f198316916105178561036f565b925f5b8181106105585750916002939185600196941061053e575b505050020190556104fa565b61054e910151601f841690610481565b90555f8080610532565b9193602060018192878701518155019501920161051a565b610048565b9061057f916104a8565b565b906105ac602060016105b2946105a45f820161059e5f88016102cd565b90610309565b019201610329565b90610575565b565b906105be91610581565b565b906105ca906102fa565b5f5260205260405f2090565b906105e25f19916102da565b9181191691161790565b5f1c90565b6105fa906105ec565b90565b9061061261060d610619926102ab565b6105f1565b82546105d6565b9055565b90565b5f5260205f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b61064a8161063d565b8210156106645761065c600191610620565b910201905f90565b610629565b919061067f61067a610687936102ab565b6105f1565b908354610386565b9055565b90815491680100000000000000008310156106bb57826106b39160016106b995018155610641565b90610669565b565b610048565b5490565b906106ce906102ab565b5f5260205260405f2090565b906106ef6106ea6106f6926103ae565b6103ca565b82546105d6565b9055565b60209181520190565b90825f9392825e0152565b61072d61073660209361073b936107248161032d565b938480936106fa565b95869101610703565b61003e565b0190565b6107549160208201915f81840391015261070e565b90565b6107608161092e565b61087d578161077f6107796107745f61027e565b6100a7565b916100a7565b1461085a5761078d81610962565b6107c3836107b2846107a96107a061028a565b935f8501610297565b602083016102a5565b6107be600184906102b7565b6105b4565b6107d8816107d3600286906105c0565b6105fd565b6107ec6107e5600361061d565b829061068b565b61080a6107f960036106c0565b610805600484906106c4565b6106da565b91909161085561084361083d7f82f0538b90eb7e20e8acea8316483e9f1a944033e6d832532629d80dcd389672936102ab565b936102fa565b9361084c610034565b9182918261073f565b0390a3565b610862610034565b63e6c4247b60e01b8152806108796004820161025a565b0390fd5b610885610034565b63071be59b60e01b81528061089c6004820161025a565b0390fd5b6108a9906100a7565b9052565b91906108c0905f602085019401906108a0565b565b6108cc815f610309565b6109027f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad916108f9610034565b918291826108ad565b0390a1565b5f90565b90565b5190565b61092661092161092b9261025f565b610198565b6103ab565b90565b6109436109489161093d610907565b5061090b565b61090e565b61095a6109545f610912565b916103ab565b1490565b5f90565b6109749061096e61095e565b50610977565b90565b61098c6109949161098661095e565b5061090b565b600190610c04565b90565b90565b6109ae6109a96109b392610997565b610198565b6103ab565b90565b90565b60016109c591016103ab565b90565b906109d28261090e565b8110156109e457600160209102010190565b610629565b60ff60f81b1690565b6109fc90516109e9565b90565b60f81c90565b60ff1690565b610a1f610a1a610a2492610a05565b610198565b610a05565b90565b610a33610a38916109ff565b610a0b565b90565b90565b610a52610a4d610a5792610a3b565b610198565b610a05565b90565b90565b60f81b90565b610a77610a72610a7c92610a5a565b610a5d565b6109e9565b90565b90565b610a96610a91610a9b92610a7f565b610a5d565b6109e9565b90565b610ab2610aad610ab792610997565b610198565b610a05565b90565b634e487b7160e01b5f52601160045260245ffd5b610ada610ae091610a05565b91610a05565b019060ff8211610aec57565b610aba565b610b05610b00610b0a92610a05565b610a5d565b6109e9565b90565b610b21610b1c610b2692610a05565b610198565b6103ab565b90565b90565b610b40610b3b610b4592610b29565b610198565b6103ab565b90565b610b57610b5d919392936103ab565b926103ab565b8203918211610b6857565b610aba565b90565b610b84610b7f610b8992610b6d565b610198565b6103ab565b90565b610b9b610ba1919392936103ab565b926103ab565b91610bad8382026103ab565b928184041490151715610bbc57565b610aba565b610be090610bda610bd4610be5946103ab565b916103ab565b90610382565b6103ab565b90565b610bfc610bf7610c01926103ab565b6102da565b6102a8565b90565b9190610c0e61095e565b90610c188461090e565b9283610c2d610c27602061099a565b916103ab565b11610d8d57610c3a6103ef565b925b83610c4f610c49876103ab565b916103ab565b1015610d8557610c68610c638786906109c8565b6109f2565b610c7181610a27565b610c84610c7e6080610a3e565b91610a05565b1015610d575790610ce9610ce4610cb7610cb2610cf0958880610d3b575b80610d1f575b610cf6575b610a27565b610b0d565b610cde610cce601f610cc98b91610b2c565b610b48565b610cd86008610b70565b90610b8c565b90610bc1565b610be8565b17936109b9565b92610c3c565b610d15610d05610d1a92610a27565b610d0f6020610a9e565b90610ace565b610af1565b610cad565b5080610d34610d2e605a610a82565b916109e9565b1115610ca8565b5080610d50610d4a6041610a63565b916109e9565b1015610ca2565b610d81610d63886109b6565b610d6b610034565b91829163df70480560e01b83526004830161073f565b0390fd5b945092505050565b610db7610d99866109b6565b610da1610034565b91829163305a27a960e01b83526004830161073f565b0390fdfe60806040526004361015610013575b610a7c565b61001d5f3561013c565b80631ff5020f146101375780633e21750a14610132578063440904871461012d57806346038ddc14610128578063546f4fcb1461012357806358451f971461011e5780635dbe47e8146101195780637216e80d146101145780637a9e5e4b1461010f5780638fb360371461010a57806399900d1114610105578063a2b48c5b14610100578063b1c99b5a146100fb578063bf40fac1146100f6578063bf7e214f146100f1578063c4740a95146100ec578063f01c492b146100e75763f94f0a450361000e57610a48565b610a13565b61090d565b6108d8565b6108a3565b61084d565b610818565b610715565b61067f565b61061e565b6105e9565b6105b4565b61053a565b6104d2565b61045a565b6103f1565b610360565b6102e7565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906101849061015c565b810190811067ffffffffffffffff82111761019e57604052565b610166565b906101b66101af610142565b928361017a565b565b67ffffffffffffffff81116101d6576101d260209161015c565b0190565b610166565b90825f939282370152565b909291926101fb6101f6826101b8565b6101a3565b9381855260208501908284011161021757610215926101db565b565b610158565b9080601f8301121561023a57816020610237933591016101e6565b90565b610154565b60018060a01b031690565b6102539061023f565b90565b61025f8161024a565b0361026657565b5f80fd5b9050359061027782610256565b565b916060838303126102dd575f83013567ffffffffffffffff81116102d857826102a391850161021c565b926102b1836020830161026a565b92604082013567ffffffffffffffff81116102d3576102d0920161021c565b90565b610150565b610150565b61014c565b5f0190565b34610316576103006102fa366004610279565b91610f36565b610308610142565b80610312816102e2565b0390f35b610148565b919060408382031261035b575f8301359067ffffffffffffffff82116103565761034a8161035393860161021c565b9360200161026a565b90565b610150565b61014c565b3461038f5761037961037336600461031b565b9061110f565b610381610142565b8061038b816102e2565b0390f35b610148565b9190916040818403126103ec575f81013567ffffffffffffffff81116103e757836103c091830161021c565b92602082013567ffffffffffffffff81116103e2576103df920161021c565b90565b610150565b610150565b61014c565b346104205761040a610404366004610394565b9061114c565b610412610142565b8061041c816102e2565b0390f35b610148565b90602082820312610455575f82013567ffffffffffffffff81116104505761044d920161021c565b90565b610150565b61014c565b346104885761047261046d366004610425565b611367565b61047a610142565b80610484816102e2565b0390f35b610148565b9190916040818403126104cd576104a6835f830161026a565b92602082013567ffffffffffffffff81116104c8576104c5920161021c565b90565b610150565b61014c565b34610501576104eb6104e536600461048d565b90611557565b6104f3610142565b806104fd816102e2565b0390f35b610148565b5f91031261051057565b61014c565b90565b61052190610515565b9052565b9190610538905f60208501940190610518565b565b3461056a5761054a366004610506565b61056661055561156b565b61055d610142565b91829182610525565b0390f35b610148565b9060208282031261058857610585915f0161026a565b90565b61014c565b151590565b61059b9061058d565b9052565b91906105b2905f60208501940190610592565b565b346105e4576105e06105cf6105ca36600461056f565b611585565b6105d7610142565b9182918261059f565b0390f35b610148565b34610619576106156106046105ff366004610425565b6115c0565b61060c610142565b9182918261059f565b0390f35b610148565b3461064c5761063661063136600461056f565b611607565b61063e610142565b80610648816102e2565b0390f35b610148565b63ffffffff60e01b1690565b61066690610651565b9052565b919061067d905f6020850194019061065d565b565b346106af5761068f366004610506565b6106ab61069a611722565b6106a2610142565b9182918261066a565b0390f35b610148565b5190565b60209181520190565b90825f9392825e0152565b6106eb6106f46020936106f9936106e2816106b4565b938480936106b8565b958691016106c1565b61015c565b0190565b6107129160208201915f8184039101526106cc565b90565b346107455761074161073061072b36600461056f565b61175e565b610738610142565b918291826106fd565b0390f35b610148565b61075381610515565b0361075a57565b5f80fd5b9050359061076b8261074a565b565b9060208282031261078657610783915f0161075e565b90565b61014c565b6107949061024a565b9052565b60209181520190565b6107c06107c96020936107ce936107b7816106b4565b93848093610798565b958691016106c1565b61015c565b0190565b6107fd91602060408201926107ed5f8201515f85019061078b565b01519060208184039101526107a1565b90565b6108159160208201915f8184039101526107d2565b90565b346108485761084461083361082e36600461076d565b6118ff565b61083b610142565b91829182610800565b0390f35b610148565b3461087c57610866610860366004610394565b90611b58565b61086e610142565b80610878816102e2565b0390f35b610148565b61088a9061024a565b9052565b91906108a1905f60208501940190610881565b565b346108d3576108cf6108be6108b9366004610425565b611b68565b6108c6610142565b9182918261088e565b0390f35b610148565b34610908576108e8366004610506565b6109046108f3611bda565b6108fb610142565b9182918261088e565b0390f35b610148565b3461093b5761092561092036600461056f565b611c7a565b61092d610142565b80610937816102e2565b0390f35b610148565b5190565b60209181520190565b60200190565b61097e916020604082019261096e5f8201515f85019061078b565b01519060208184039101526107a1565b90565b9061098b91610953565b90565b60200190565b906109a86109a183610940565b8092610944565b90816109b96020830284019461094d565b925f915b8383106109cc57505050505090565b909192939460206109ee6109e883856001950387528951610981565b9761098e565b93019301919392906109bd565b610a109160208201915f818403910152610994565b90565b34610a4357610a23366004610506565b610a3f610a2e611d42565b610a36610142565b918291826109fb565b0390f35b610148565b34610a7757610a61610a5b366004610279565b91611ece565b610a69610142565b80610a73816102e2565b0390f35b610148565b5f80fd5b90610aa49291610a9f610a91611edb565b610a99611eee565b91612096565b610cc2565b565b90565b5190565b90565b90565b610ac7610ac2610acc92610aad565b610ab0565b610515565b90565b610ae3610ade610ae892610aad565b610ab0565b61023f565b90565b610af490610acf565b90565b90565b610b0390610af7565b90565b90610b1090610afa565b5f5260205260405f2090565b90565b5f1c90565b60018060a01b031690565b610b3b610b4091610b1f565b610b24565b90565b610b4d9054610b2f565b90565b610b64610b5f610b699261023f565b610ab0565b61023f565b90565b610b7590610b50565b90565b610b8190610b6c565b90565b90610b8e90610b78565b5f5260205260405f2090565b90565b610ba9610bae91610b1f565b610b9a565b90565b610bbb9054610b9d565b90565b5f1b90565b610bd7610bd2610bdc92610aad565b610bbe565b610af7565b90565b90610bf060018060a01b0391610bbe565b9181191691161790565b90565b90610c12610c0d610c1992610b78565b610bfa565b8254610bdf565b9055565b1b90565b91906008610c3c910291610c365f1984610c1d565b92610c1d565b9181191691161790565b610c4f90610b1f565b90565b9190610c68610c63610c7093610afa565b610c46565b908354610c21565b9055565b5f90565b610c8a91610c84610c74565b91610c52565b565b90610c985f1991610bbe565b9181191691161790565b90610cb7610cb2610cbe92610afa565b610c46565b8254610c8c565b9055565b92919092610cd7610cd282610aa6565b610aa9565b610ce9610ce35f610ab3565b91610515565b14610f135783610d09610d03610cfe5f610aeb565b61024a565b9161024a565b14610ef057610d17816121e6565b610d2b610d2660018390610b06565b610b1c565b90610d375f8301610b43565b610d51610d4b610d465f610aeb565b61024a565b9161024a565b145f14610dc9575050610d6e610d6960028690610b84565b610bb1565b610d88610d82610d7d5f610bc3565b610af7565b91610af7565b03610da357610d9b610da09394826124d8565b612621565b5b565b610dc584610daf610142565b918291630db36a8f60e41b83526004830161088e565b0390fd5b909394919250610dda5f8501610b43565b9384610dee610de88561024a565b9161024a565b03610dfe575b5050505050610da1565b610e12610e0d60028590610b84565b610bb1565b610e2c610e26610e215f610bc3565b610af7565b91610af7565b03610eca57610e3e905f849101610bfd565b610e535f610e4e60028790610b84565b610c78565b610e6881610e6360028590610b84565b610ca2565b92909192610ebd610eab610ea5610e9f7f72bc0f9dcaf988e391eef787e5feba0b4523c20b149721b8946e0d8f8bd737f294610afa565b94610b78565b94610b78565b94610eb4610142565b918291826106fd565b0390a45f80808080610df4565b610eec83610ed6610142565b918291630db36a8f60e41b83526004830161088e565b0390fd5b610ef8610142565b63e6c4247b60e01b815280610f0f600482016102e2565b0390fd5b610f1b610142565b63071be59b60e01b815280610f32600482016102e2565b0390fd5b90610f419291610a80565b565b90610f6691610f61610f53611edb565b610f5b611eee565b91612096565b610f68565b565b81610f83610f7d610f785f610aeb565b61024a565b9161024a565b146110ec57610f91816121e6565b91610fa6610fa160018590610b06565b610b1c565b92610fb25f8501610b43565b610fcc610fc6610fc15f610aeb565b61024a565b9161024a565b146110c657610fe5610fe060028490610b84565b610bb1565b610fff610ff9610ff45f610bc3565b610af7565b91610af7565b036110a05761101c6110125f8601610b43565b945f849101610bfd565b6110315f61102c60028790610b84565b610c78565b6110468161104160028590610b84565b610ca2565b9290919261109b61108961108361107d7f72bc0f9dcaf988e391eef787e5feba0b4523c20b149721b8946e0d8f8bd737f294610afa565b94610b78565b94610b78565b94611092610142565b918291826106fd565b0390a4565b6110c2826110ac610142565b918291630db36a8f60e41b83526004830161088e565b0390fd5b6110e8836110d2610142565b9182916313032d4560e01b8352600483016106fd565b0390fd5b6110f4610142565b63e6c4247b60e01b81528061110b600482016102e2565b0390fd5b9061111991610f43565b565b9061113e9161113961112b611edb565b611133611eee565b91612096565b611140565b565b9061114a91612621565b565b906111569161111b565b565b61117a90611175611167611edb565b61116f611eee565b91612096565b6112ee565b565b906111869061024a565b9052565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156111be575b60208310146111b957565b61118a565b91607f16916111ae565b5f5260205f2090565b905f92918054906111eb6111e48361119e565b8094610798565b916001811690815f146112425750600114611206575b505050565b61121391929394506111c8565b915f925b81841061122a57505001905f8080611201565b60018160209295939554848601520191019290611217565b92949550505060ff19168252151560200201905f8080611201565b90611267916111d1565b90565b9061128a6112839261127a610142565b9384809261125d565b038361017a565b565b52565b61129960406101a3565b90565b906112d36112ca60016112ad61128f565b946112c46112bc5f8301610b43565b5f880161117c565b0161126a565b6020840161128c565b565b6112de9061129c565b90565b6112eb905161024a565b90565b6112f7816121e6565b906113165f61131061130b60018690610b06565b6112d5565b016112e1565b61133061132a6113255f610aeb565b61024a565b9161024a565b14611341575061133f90612a3f565b565b6113639061134d610142565b9182916313032d4560e01b8352600483016106fd565b0390fd5b61137090611158565b565b9061139591611390611382611edb565b61138a611eee565b91612096565b6113ce565b565b6113a09061126a565b90565b90916113bd6113cb9360408401908482035f8601526106cc565b9160208184039101526106cc565b90565b6113e26113dd60028390610b84565b610bb1565b806113fd6113f76113f25f610bc3565b610af7565b91610af7565b146115315761141361140e84610aa6565b610aa9565b61142561141f5f610ab3565b91610515565b1461150e57611433836121e6565b9061144a5f61144460018590610b06565b01610b43565b61146461145e6114595f610aeb565b61024a565b9161024a565b036114e85761147f6001611479818490610b06565b01611397565b9261148e828487908492612c43565b909192936114ce6114c86114c27f4d3db3d9de3b2c3ff20ee16f9eff7da6483ccae3ca06938c3dd3a923458c527f94610b78565b94610afa565b94610afa565b946114e36114da610142565b928392836113a3565b0390a4565b61150a846114f4610142565b91829163fc44d2db60e01b8352600483016106fd565b0390fd5b611516610142565b63071be59b60e01b81528061152d600482016102e2565b0390fd5b6115538261153d610142565b9182916370de323160e01b83526004830161088e565b0390fd5b9061156191611372565b565b5f90565b5490565b611573611563565b5061157e6003611567565b90565b5f90565b61159c6115a191611594611581565b506002610b84565b610bb1565b6115bb6115b56115b05f610bc3565b610af7565b91610af7565b141590565b5f6115e26115e8926115d0611581565b506115dc6001916121e6565b90610b06565b01610b43565b6116026115fc6115f75f610aeb565b61024a565b9161024a565b141590565b61160f611edb565b8061162961162361161e611bda565b61024a565b9161024a565b036116795750803b61164361163d5f610ab3565b91610515565b146116535761165190612d1e565b565b6116759061165f610142565b9182916361798f2f60e11b83526004830161088e565b0390fd5b61169a90611685610142565b91829162d1953b60e31b83526004830161088e565b0390fd5b5f90565b60a01c90565b60ff1690565b6116ba6116bf916116a2565b6116a8565b90565b6116cc90546116ae565b90565b60e01b90565b6116e96116e46116ee92610aad565b6116cf565b610651565b90565b6116fa90610b6c565b90565b63ffffffff1690565b61171a61171561171f926116fd565b6116cf565b610651565b90565b61172a61169e565b506117345f6116c2565b5f1461174b57611747638fb36037611706565b5b90565b6117545f6116d5565b611748565b606090565b611766611759565b5061177b61177660028390610b84565b610bb1565b908161179761179161178c5f610bc3565b610af7565b91610af7565b146117b5575060016117ac6117b29282610b06565b01611397565b90565b6117d7906117c1610142565b9182916370de323160e01b83526004830161088e565b0390fd5b5f90565b606090565b6117ec61128f565b90602080836117f96117db565b8152016118046117df565b81525050565b6118126117e4565b90565b90565b61182c61182761183192611815565b610ab0565b610515565b90565b634e487b7160e01b5f52601160045260245ffd5b61185761185d91939293610515565b92610515565b820391821161186857565b611834565b91602061188e92949361188760408201965f830190610518565b0190610518565b565b634e487b7160e01b5f52603260045260245ffd5b5f5260205f2090565b6118b681611567565b8210156118d0576118c86001916118a4565b910201905f90565b611890565b1c90565b6118e99060086118ee93026118d5565b610b9a565b90565b906118fc91546118d9565b90565b61190761180a565b508061192461191e6119196003611567565b610515565b91610515565b10156119555761194d6119529161194761194160019260036118ad565b906118f1565b90610b06565b6112d5565b90565b6119726119626003611567565b61196c6001611818565b90611848565b9061199461197e610142565b9283926363a056dd60e01b84526004840161186d565b0390fd5b906119bb916119b66119a8611edb565b6119b0611eee565b91612096565b6119bd565b565b6119c6816121e6565b6119da6119d560018390610b06565b6112d5565b906119e65f83016112e1565b611a006119fa6119f55f610aeb565b61024a565b9161024a565b14611b3257611a16611a1185610aa6565b610aa9565b611a28611a225f610ab3565b91610515565b14611b0f57611a36846121e6565b91611a4d5f611a4760018690610b06565b01610b43565b611a67611a61611a5c5f610aeb565b61024a565b9161024a565b03611ae9575f611a8f91611a8984868990611a838686016112e1565b92612c43565b016112e1565b90919293611acf611ac9611ac37f4d3db3d9de3b2c3ff20ee16f9eff7da6483ccae3ca06938c3dd3a923458c527f94610b78565b94610afa565b94610afa565b94611ae4611adb610142565b928392836113a3565b0390a4565b611b0b85611af5610142565b91829163fc44d2db60e01b8352600483016106fd565b0390fd5b611b17610142565b63071be59b60e01b815280611b2e600482016102e2565b0390fd5b611b5483611b3e610142565b9182916313032d4560e01b8352600483016106fd565b0390fd5b90611b6291611998565b565b5f90565b611b70611b64565b50611b8f5f611b896001611b83856121e6565b90610b06565b01610b43565b9081611bab611ba5611ba05f610aeb565b61024a565b9161024a565b14611bb4575090565b611bd690611bc0610142565b9182916313032d4560e01b8352600483016106fd565b0390fd5b611be2611b64565b50611bec5f610b43565b90565b611c1190611c0c611bfe611edb565b611c06611eee565b91612096565b611c13565b565b611c27611c2260028390610b84565b610bb1565b9081611c43611c3d611c385f610bc3565b610af7565b91610af7565b14611c545750611c5290612a3f565b565b611c7690611c60610142565b9182916370de323160e01b83526004830161088e565b0390fd5b611c8390611bef565b565b606090565b67ffffffffffffffff8111611ca25760208091020190565b610166565b90611cb9611cb483611c8a565b6101a3565b918252565b611cc66117e4565b90565b5f5b828110611cd757505050565b602090611ce2611cbe565b8184015201611ccb565b90611d11611cf983611ca7565b92602080611d078693611c8a565b9201910390611cc9565b565b6001611d1f9101610515565b90565b90611d2c82610940565b811015611d3d576020809102010190565b611890565b611d4a611c85565b50611d556003611567565b611d5e81611cec565b91611d67611563565b5b80611d7b611d7585610515565b91610515565b1015611dcf57611dca90611dc3611da86001611da2611d9c600386906118ad565b906118f1565b90610b06565b86611db384926112d5565b611dbd8383611d22565b52611d22565b5150611d13565b611d68565b509050565b90611df89291611df3611de5611edb565b611ded611eee565b91612096565b611dfa565b565b92919092611e1b5f611e15611e0e846121e6565b6001610b06565b01610b43565b611e35611e2f611e2a5f610aeb565b61024a565b9161024a565b03611ea857611e4e611e4960028690610b84565b610bb1565b611e68611e62611e5d5f610bc3565b610af7565b91610af7565b03611e8257611e7b611e809394826124d8565b612621565b565b611ea484611e8e610142565b918291630db36a8f60e41b83526004830161088e565b0390fd5b611eca90611eb4610142565b91829163fc44d2db60e01b8352600483016106fd565b0390fd5b90611ed99291611dd4565b565b611ee3611b64565b503390565b36905f90565b611ef6611ee8565b9050505f903690565b90565b611f16611f11611f1b92611eff565b610ab0565b610515565b90565b5f80fd5b5f80fd5b90939293848311611f46578411611f41576001820201920390565b611f22565b611f1e565b5090565b90611f5d611f649183611f4b565b9135610651565b9060048110611f72575b5090565b611f8a9063ffffffff60e01b90600403600802610c1d565b165f611f6e565b611fa5611fa0611faa92610aad565b610ab0565b6116fd565b90565b60a01b90565b90611fc260ff60a01b91611fad565b9181191691161790565b611fd59061058d565b90565b90565b90611ff0611feb611ff792611fcc565b611fd8565b8254611fb3565b9055565b61200490610b50565b90565b61201090611ffb565b90565b61201c90610b6c565b90565b5f80fd5b5f91031261202d57565b61014c565b60209181520190565b91906120558161204e8161205a95612032565b80956101db565b61015c565b0190565b9161208393919261207660408201945f830190610881565b602081850391015261203b565b90565b61208e610142565b3d5f823e3d90fd5b906120e86120e06120a5611bda565b846120af306116f1565b906120da6120d4878a5f906120ce6120c8600493610ab3565b92611f02565b92611f26565b90611f4f565b92612d99565b91901561058d565b6120f3575b50505050565b6121056120ff5f611f91565b916116fd565b115f146121c15761211760015f611fdb565b61212f61212a612125611bda565b612007565b612013565b6394c7d7ee92919392813b156121bc575f61215d916121688296612151610142565b988997889687956116cf565b85526004850161205e565b03925af180156121b75761218b575b506121825f80611fdb565b5f8080806120ed565b6121aa905f3d81116121b0575b6121a2818361017a565b810190612023565b5f612177565b503d612198565b612086565b61201f565b6121e2826121cd610142565b91829162d1953b60e31b83526004830161088e565b0390fd5b6121f8906121f2610c74565b50612e13565b90565b61220560406101a3565b90565b634e487b7160e01b5f525f60045260245ffd5b5190565b601f602091010490565b61223d61223861224292610515565b610ab0565b610515565b90565b90565b919061225e61225961226693612229565b612245565b908354610c21565b9055565b61227c91612276611563565b91612248565b565b5b81811061228a575050565b806122975f60019361226a565b0161227f565b9190601f81116122ad575b505050565b6122b96122de936111c8565b9060206122c58461221f565b830193106122e6575b6122d79061221f565b019061227e565b5f80806122a8565b91506122d7819290506122ce565b90612304905f19906008026118d5565b191690565b81612313916122f4565b906002021790565b90612325816106b4565b9067ffffffffffffffff82116123e55761234982612343855461119e565b8561229d565b602090601f831160011461237d5791809161236c935f92612371575b5050612309565b90555b565b90915001515f80612365565b601f1983169161238c856111c8565b925f5b8181106123cd575091600293918560019694106123b3575b5050500201905561236f565b6123c3910151601f8416906122f4565b90555f80806123a7565b9193602060018192878701518155019501920161238f565b610166565b906123f49161231b565b565b9061242160206001612427946124195f82016124135f88016112e1565b90610bfd565b01920161221b565b906123ea565b565b90612433916123f6565b565b90565b5f5260205f2090565b5490565b61244e81612441565b82101561246857612460600191612438565b910201905f90565b611890565b908154916801000000000000000083101561249d578261249591600161249b95018155612445565b90610c52565b565b610166565b906124ac90610afa565b5f5260205260405f2090565b906124cd6124c86124d492612229565b612245565b8254610c8c565b9055565b6124e181612e33565b6125fe57816125006124fa6124f55f610aeb565b61024a565b9161024a565b146125db5761250e816121e6565b612544836125338461252a6125216121fb565b935f850161117c565b6020830161128c565b61253f60018490610b06565b612429565b6125598161255460028690610b84565b610ca2565b61256d6125666003612435565b829061246d565b61258b61257a6003611567565b612586600484906124a2565b6124b8565b9190916125d66125c46125be7f82f0538b90eb7e20e8acea8316483e9f1a944033e6d832532629d80dcd38967293610afa565b93610b78565b936125cd610142565b918291826106fd565b0390a3565b6125e3610142565b63e6c4247b60e01b8152806125fa600482016102e2565b0390fd5b612606610142565b63071be59b60e01b81528061261d600482016102e2565b0390fd5b61263f5f6126396001612633856121e6565b90610b06565b01610b43565b61265961265361264e5f610aeb565b61024a565b9161024a565b146126ad57612667816121e6565b90916126937f7dc75707ffb718803e705fd1e808d5e8c4b86970d6b0350277e61a879671c73f92610afa565b926126a861269f610142565b928392836113a3565b0390a2565b6126cf906126b9610142565b9182916313032d4560e01b8352600483016106fd565b0390fd5b906126e56126e0836101b8565b6101a3565b918252565b5f7f5065726d697373696f6e734d616e616765720000000000000000000000000000910152565b61271b60126126d3565b90612728602083016126ea565b565b612732612711565b90565b5f7f4164647265737352656769737472790000000000000000000000000000000000910152565b612766600f6126d3565b9061277360208301612735565b565b61277d61275c565b90565b61278990610af7565b9052565b91906127a0905f60208501940190612780565b565b90565b6127b16127b691610b1f565b6127a2565b90565b6127c390546127a5565b90565b6127d56127db91939293610515565b92610515565b82018092116127e657565b611834565b634e487b7160e01b5f52603160045260245ffd5b61280881612441565b80156128295760019003906128266128208383612445565b90610c78565b55565b6127eb565b90612841905f19906020036008026118d5565b8154169055565b905f9161285f612857826111c8565b928354612309565b905555565b919290602082105f146128bd57601f841160011461288d57612887929350612309565b90555b5b565b50906128b36128b89360016128aa6128a4856111c8565b9261221f565b8201910161227e565b612848565b61288a565b506128f482936128ce6001946111c8565b6128ed6128da8561221f565b820192601f8616806128ff575b5061221f565b019061227e565b60020217905561288b565b61290b9088860361282e565b5f6128e7565b929091680100000000000000008211612971576020115f1461296257602081105f146129465761294091612309565b90555b5b565b60019160ff1916612956846111c8565b55600202019055612943565b60019150600202019055612944565b610166565b9081546129828161119e565b908183116129ab575b818310612999575b50505050565b6129a293612864565b5f808080612993565b6129b783838387612911565b61298b565b6129cb6129d191939293610515565b92610515565b916129dd838202610515565b9281840414901517156129ec57565b611834565b5f6129fb91612976565b565b905f03612a0f57612a0d906129f1565b565b612208565b5f6001612a26928280820155016129fd565b565b905f03612a3a57612a3890612a14565b565b612208565b612a53612a4e60018390610b06565b6112d5565b9080612a76612a70612a6b612a6661272a565b6121e6565b610af7565b91610af7565b148015612c1a575b612bf457612aa9612a99612a94600484906124a2565b6127b9565b612aa36001611818565b90611848565b612ac6612ab66003611567565b612ac06001611818565b90611848565b9080612ada612ad484610515565b91610515565b03612b9c575b5050612af4612aef6003612435565b6127ff565b612b095f612b04600484906124a2565b61226a565b612b1e5f612b1960018490610b06565b612a28565b612b3d5f612b386002612b328387016112e1565b90610b84565b610c78565b906020612b4b5f83016112e1565b91015191612b97612b85612b7f7f7c9c47cffc228bfd7668289449e9427b266057946153be3b41a054c664744c2f93610afa565b93610b78565b93612b8e610142565b918291826106fd565b0390a3565b612be8612be0612bb9612bb3612bed9560036118ad565b906118f1565b92612bd084612bca600384906118ad565b90610c52565b612bda6001611818565b906127c6565b9160046124a2565b6124b8565b5f80612ae0565b612c1690612c00610142565b918291636177c8d960e11b83526004830161278d565b0390fd5b5080612c3d612c37612c32612c2d612775565b6121e6565b610af7565b91610af7565b14612a7e565b90612d0f612d1c9493612cdc5f612cd7612d1796612c93612c81612c71612c6c600485906124a2565b6127b9565b612c7b6001611818565b90611848565b612c8d899160036118ad565b90610c52565b612cbb612caa612ca5600484906124a2565b6127b9565b612cb660048a906124a2565b6124b8565b612cd083612ccb600484906124a2565b61226a565b6001610b06565b612a28565b612cfe8591612cf5612cec6121fb565b935f850161117c565b6020830161128c565b612d0a60018490610b06565b612429565b916002610b84565b610ca2565b565b612d28815f610bfd565b612d5e7f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad91612d55610142565b9182918261088e565b0390a1565b5f90565b604090612d90612d979496959396612d8660608401985f850190610881565b6020830190610881565b019061065d565b565b5f9060409294959395612dec612dad611581565b97612ddd612db9612d63565b989193612dc4610142565b94859360046020860163b700961360e01b815201612d67565b6020820181038252038261017a565b9082805282602052602082519201905afa612e04575b565b9150505f519060205190612e02565b612e28612e3091612e22610c74565b50610aa6565b600190613053565b90565b612e48612e4d91612e42611581565b50610aa6565b610aa9565b612e5f612e595f610ab3565b91610515565b1490565b90565b612e7a612e75612e7f92612e63565b610ab0565b610515565b90565b90565b90612e8f82610aa9565b811015612ea157600160209102010190565b611890565b60ff60f81b1690565b612eb99051612ea6565b90565b60f81c90565b60ff1690565b612edc612ed7612ee192612ec2565b610ab0565b612ec2565b90565b612ef0612ef591612ebc565b612ec8565b90565b90565b612f0f612f0a612f1492612ef8565b610ab0565b612ec2565b90565b90565b60f81b90565b612f34612f2f612f3992612f17565b612f1a565b612ea6565b90565b90565b612f53612f4e612f5892612f3c565b612f1a565b612ea6565b90565b612f6f612f6a612f7492612e63565b610ab0565b612ec2565b90565b612f83612f8991612ec2565b91612ec2565b019060ff8211612f9557565b611834565b612fae612fa9612fb392612ec2565b612f1a565b612ea6565b90565b612fca612fc5612fcf92612ec2565b610ab0565b610515565b90565b90565b612fe9612fe4612fee92612fd2565b610ab0565b610515565b90565b90565b61300861300361300d92612ff1565b610ab0565b610515565b90565b61302f9061302961302361303494610515565b91610515565b90610c1d565b610515565b90565b61304b61304661305092610515565b610bbe565b610af7565b90565b919061305d610c74565b9061306784610aa9565b928361307c6130766020612e66565b91610515565b116131dc57613089611563565b925b8361309e61309887610515565b91610515565b10156131d4576130b76130b2878690612e85565b612eaf565b6130c081612ee4565b6130d36130cd6080612efb565b91612ec2565b10156131a6579061313861313361310661310161313f95888061318a575b8061316e575b613145575b612ee4565b612fb6565b61312d61311d601f6131188b91612fd5565b611848565b6131276008612ff4565b906129bc565b90613010565b613037565b1793611d13565b9261308b565b61316461315461316992612ee4565b61315e6020612f5b565b90612f77565b612f9a565b6130fc565b508061318361317d605a612f3f565b91612ea6565b11156130f7565b508061319f6131996041612f20565b91612ea6565b10156130f1565b6131d06131b288612e82565b6131ba610142565b91829163df70480560e01b8352600483016106fd565b0390fd5b945092505050565b6132066131e886612e82565b6131f0610142565b91829163305a27a960e01b8352600483016106fd565b0390fdfea26469706673582212200220c4b48588af4da69fb1d50bfbf1b28f39750f7184cc8043aa18ad86d4d5f464736f6c63430008190033000000000000000000000000fa176ed1d8607374dd30c61785753ee8501337d2