diff --git a/.changeset/slow-peas-film.md b/.changeset/slow-peas-film.md new file mode 100644 index 00000000..280ef08b --- /dev/null +++ b/.changeset/slow-peas-film.md @@ -0,0 +1,5 @@ +--- +"permissionless": patch +--- + +Updated etherspot factory diff --git a/bun.lockb b/bun.lockb index ec76dc43..b4c8a792 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/etherspot.ts b/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/etherspot.ts index bab54e37..0515601f 100644 --- a/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/etherspot.ts +++ b/packages/permissionless-test/mock-aa-infra/alto/constants/accounts/etherspot.ts @@ -1,12 +1,12 @@ import type { Hex } from "viem" export const ETHERSPOT_BOOTSTRAP_CREATECALL: Hex = - "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a73608060405234801561001057600080fd5b5061158c806100206000396000f3fe60806040526004361061007f5760003560e01c8063855713681161004e578063855713681461025a578063b0d691fe14610288578063ea5f61d0146102ab578063eac9b20d146102cb57610086565b80630a664dba146101bb5780635e87556d146101ed578063642219af1461021a5780636b0d5cc41461023a57610086565b3661008657005b61009b6000356001600160e01b0319166102f8565b600080356001600160e01b03191681526000805160206115378339815191526020526040902080546001600160a01b03811690600160a01b900460f81b8161010957604051632464e76d60e11b81526001600160e01b03196000351660048201526024015b60405180910390fd5b61011781607f60f91b6103ac565b1561016b5760408051368101909152366000823760408051601481019091523360601b90526000803660140183865afa90506101593d60408051918201905290565b3d6000823e81610167573d81fd5b3d81f35b6101768160006103ac565b156101b95760408051368101909152366000823760408051601481019091523360601b9052600080366014018382875af190506101593d60408051918201905290565b005b3480156101c757600080fd5b506101d06103c3565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101f957600080fd5b5061020d610208366004610fab565b6103f2565b6040516101e491906110b8565b34801561022657600080fd5b506101b9610235366004610fab565b61047b565b34801561024657600080fd5b506101b96102553660046110e3565b6106c7565b34801561026657600080fd5b5061027a610275366004611168565b6106d7565b6040516101e4929190611194565b34801561029457600080fd5b506f71727de22e5e9d8baf0edac6f37da0326101d0565b3480156102b757600080fd5b5061027a6102c6366004611168565b610714565b3480156102d757600080fd5b506102eb6102e63660046111f7565b610744565b6040516101e49190611221565b6001600160e01b031981166000908152600080516020611537833981519152602090815260408083206001018054825181850281018501909352808352919290919083018282801561037357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610355575b505050505090506103848133610817565b15156000036103a8576040516332cf492b60e11b8152336004820152602401610100565b5050565b6001600160f81b0319828116908216145b92915050565b60006103ed7f36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb284316085490565b905090565b606030306001600160a01b031663642219af8a8a8a8a8a8a8a60405160240161042197969594939291906113a6565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505060405160200161045f929190611404565b6040516020818303038152906040529050979650505050505050565b60005b868110156104fa576104f288888381811061049b5761049b611430565b90506020028101906104ad9190611446565b6104bb906020810190611466565b8989848181106104cd576104cd611430565b90506020028101906104df9190611446565b6104ed906020810190611483565b61082d565b60010161047e565b5060005b848110156105bc57600086868381811061051a5761051a611430565b905060200281019061052c9190611446565b61053a906020810190611466565b6001600160a01b0316146105b4576105b486868381811061055d5761055d611430565b905060200281019061056f9190611446565b61057d906020810190611466565b87878481811061058f5761058f611430565b90506020028101906105a19190611446565b6105af906020810190611483565b6108b4565b6001016104fe565b5060006105cc6020850185611466565b6001600160a01b0316146105fc576105fc6105ea6020850185611466565b6105f76020860186611483565b6108df565b60005b818110156106bd57600083838381811061061b5761061b611430565b905060200281019061062d9190611446565b61063b906020810190611466565b6001600160a01b0316146106b5576106b583838381811061065e5761065e611430565b90506020028101906106709190611446565b61067e906020810190611466565b84848481811061069057610690611430565b90506020028101906106a29190611446565b6106b0906020810190611483565b610966565b6001016105ff565b5050505050505050565b6106d283838361082d565b505050565b606060007ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea02610707818686610bd7565b92509250505b9250929050565b606060007ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea03610707818686610bd7565b6040805160608082018352600080835260208084018290528385018390526001600160e01b0319861682526000805160206115378339815191528152908490208451928301855280546001600160a01b0381168452600160a01b900460f81b6001600160f81b03191683830152600181018054865181850281018501885281815295969495929486019383018282801561080757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107e9575b5050505050815250509050919050565b6000806108248484610d74565b95945050505050565b7ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea026108588185610dda565b6040516306d61fe760e41b81526001600160a01b03851690636d61fe709061088690869086906004016114ca565b600060405180830381600087803b1580156108a057600080fd5b505af11580156106bd573d6000803e3d6000fd5b7ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea036108588185610dda565b60006109097f36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb284316085490565b90506001600160a01b0381161561093e5760405163741cbe0360e01b81526001600160a01b0382166004820152602401610100565b610858847f36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb2843160855565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051818a01356020818102601f01601f19168301909352969750893596918a018035965090945060609350915b818110156109e8576020810283810160600135908601526001016109c9565b505060408101356020818301033560608181528183850160208301379350610a1e92508591506001600160f81b031990506103ac565b15610a3c57604051633accf26360e11b815260040160405180910390fd5b6001600160e01b03198416600090815260008051602061153783398151915260205260409020546001600160a01b031615610ab95760405162461bcd60e51b815260206004820152601e60248201527f46756e6374696f6e2073656c6563746f7220616c7265616479207573656400006044820152606401610100565b604080516060810182526001600160a01b038a1681526001600160f81b0319851660208201529081018390527ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea026001600160e01b0319861660009081526002919091016020908152604091829020835181548584015160f81c600160a01b026001600160a81b03199091166001600160a01b0390921691909117178155918301518051610b6c9260018501920190610eec565b50506040516306d61fe760e41b81526001600160a01b038a169150636d61fe7090610b9b9084906004016110b8565b600060405180830381600087803b158015610bb557600080fd5b505af1158015610bc9573d6000803e3d6000fd5b505050505050505050505050565b606060006001600160a01b038416600114801590610bfa5750610bfa8585610eb0565b15610c2357604051637c84ecfb60e01b81526001600160a01b0385166004820152602401610100565b82600003610c445760405163f725081760e01b815260040160405180910390fd5b8267ffffffffffffffff811115610c5d57610c5d6114de565b604051908082528060200260200182016040528015610c86578160200160208202803683370190505b506001600160a01b03808616600090815260208890526040812054929450911691505b6001600160a01b03821615801590610ccb57506001600160a01b038216600114155b8015610cd657508381105b15610d305781838281518110610cee57610cee611430565b6001600160a01b039283166020918202929092018101919091529281166000908152928790526040909220549091169080610d288161150a565b915050610ca9565b6001600160a01b038216600114610d685782610d4d600183611523565b81518110610d5d57610d5d611430565b602002602001015191505b80835250935093915050565b81516000908190815b81811015610dcc57846001600160a01b0316868281518110610da157610da1611430565b60200260200101516001600160a01b031603610dc45792506001915061070d9050565b600101610d7d565b506000958695509350505050565b6001600160a01b0381161580610df957506001600160a01b0381166001145b15610e2257604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610100565b6001600160a01b038181166000908152602084905260409020541615610e6657604051631034f46960e21b81526001600160a01b0382166004820152602401610100565b60016000818152602093909352604080842080546001600160a01b039485168087529286208054959091166001600160a01b03199586161790559190935280549091169091179055565b600060016001600160a01b03831614801590610ee557506001600160a01b038281166000908152602085905260409020541615155b9392505050565b828054828255906000526020600020908101928215610f41579160200282015b82811115610f4157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610f0c565b50610f4d929150610f51565b5090565b5b80821115610f4d5760008155600101610f52565b60008083601f840112610f7857600080fd5b50813567ffffffffffffffff811115610f9057600080fd5b6020830191508360208260051b850101111561070d57600080fd5b60008060008060008060006080888a031215610fc657600080fd5b873567ffffffffffffffff80821115610fde57600080fd5b610fea8b838c01610f66565b909950975060208a013591508082111561100357600080fd5b61100f8b838c01610f66565b909750955060408a013591508082111561102857600080fd5b908901906040828c03121561103c57600080fd5b9093506060890135908082111561105257600080fd5b5061105f8a828b01610f66565b989b979a50959850939692959293505050565b6000815180845260005b818110156110985760208185018101518683018201520161107c565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ee56020830184611072565b6001600160a01b03811681146110e057600080fd5b50565b6000806000604084860312156110f857600080fd5b8335611103816110cb565b9250602084013567ffffffffffffffff8082111561112057600080fd5b818601915086601f83011261113457600080fd5b81358181111561114357600080fd5b87602082850101111561115557600080fd5b6020830194508093505050509250925092565b6000806040838503121561117b57600080fd5b8235611186816110cb565b946020939093013593505050565b604080825283519082018190526000906020906060840190828701845b828110156111d65781516001600160a01b0316845292840192908401906001016111b1565b5050506001600160a01b039490941660209390930192909252509092915050565b60006020828403121561120957600080fd5b81356001600160e01b031981168114610ee557600080fd5b602080825282516001600160a01b0390811683830152838201516001600160f81b031916604080850191909152840151606080850152805160808501819052600093929183019190849060a08701905b8083101561129357845184168252938501936001929092019190850190611271565b50979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081356112d5816110cb565b6001600160a01b03168352602082013536839003601e190181126112f857600080fd5b820160208101903567ffffffffffffffff81111561131557600080fd5b80360382131561132457600080fd5b6040602086015261082460408601828461129f565b6000838385526020808601955060208560051b830101846000805b8881101561139857858403601f19018a52823536899003603e19018112611379578283fd5b611385858a83016112c8565b9a86019a94505091840191600101611354565b509198975050505050505050565b6080815260006113ba60808301898b611339565b82810360208401526113cd81888a611339565b905082810360408401526113e181876112c8565b905082810360608401526113f6818587611339565b9a9950505050505050505050565b6001600160a01b038316815260406020820181905260009061142890830184611072565b949350505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261145c57600080fd5b9190910192915050565b60006020828403121561147857600080fd5b8135610ee5816110cb565b6000808335601e1984360301811261149a57600080fd5b83018035915067ffffffffffffffff8211156114b557600080fd5b60200191503681900382131561070d57600080fd5b60208152600061142860208301848661129f565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161151c5761151c6114f4565b5060010190565b818103818111156103bd576103bd6114f456fef88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea04a2646970667358221220876ac0e3ce11f73be9184d4db171ae8b1071fbe27610263c00fe879ede1ae83264736f6c63430008170033" + "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a73608060405234801561001057600080fd5b50611573806100206000396000f3fe60806040526004361061007f5760003560e01c8063855713681161004e578063855713681461025a578063b0d691fe14610288578063ea5f61d0146102ab578063eac9b20d146102cb57610086565b80630a664dba146101bb5780635e87556d146101ed578063642219af1461021a5780636b0d5cc41461023a57610086565b3661008657005b61009b6000356001600160e01b0319166102f8565b600080356001600160e01b03191681526000805160206115478339815191526020526040902080546001600160a01b03811690600160a01b900460f81b8161010957604051632464e76d60e11b81526001600160e01b03196000351660048201526024015b60405180910390fd5b61011781607f60f91b6103ac565b1561016b5760408051368101909152366000823760408051601481019091523360601b90526000803660140183865afa90506101593d60408051918201905290565b3d6000823e81610167573d81fd5b3d81f35b6101768160006103ac565b156101b95760408051368101909152366000823760408051601481019091523360601b9052600080366014018382875af190506101593d60408051918201905290565b005b3480156101c757600080fd5b506101d06103c3565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101f957600080fd5b5061020d610208366004610fbb565b6103f2565b6040516101e491906110c8565b34801561022657600080fd5b506101b9610235366004610fbb565b61047b565b34801561024657600080fd5b506101b96102553660046110f3565b6106c7565b34801561026657600080fd5b5061027a610275366004611178565b6106d7565b6040516101e49291906111a4565b34801561029457600080fd5b506f71727de22e5e9d8baf0edac6f37da0326101d0565b3480156102b757600080fd5b5061027a6102c6366004611178565b610714565b3480156102d757600080fd5b506102eb6102e6366004611207565b610744565b6040516101e49190611231565b6001600160e01b031981166000908152600080516020611547833981519152602090815260408083206001018054825181850281018501909352808352919290919083018282801561037357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610355575b505050505090506103848133610817565b15156000036103a8576040516332cf492b60e11b8152336004820152602401610100565b5050565b6001600160f81b0319828116908216145b92915050565b60006103ed7f36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb284316085490565b905090565b606030306001600160a01b031663642219af8a8a8a8a8a8a8a60405160240161042197969594939291906113b6565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505060405160200161045f929190611414565b6040516020818303038152906040529050979650505050505050565b60005b868110156104fa576104f288888381811061049b5761049b611440565b90506020028101906104ad9190611456565b6104bb906020810190611476565b8989848181106104cd576104cd611440565b90506020028101906104df9190611456565b6104ed906020810190611493565b61082d565b60010161047e565b5060005b848110156105bc57600086868381811061051a5761051a611440565b905060200281019061052c9190611456565b61053a906020810190611476565b6001600160a01b0316146105b4576105b486868381811061055d5761055d611440565b905060200281019061056f9190611456565b61057d906020810190611476565b87878481811061058f5761058f611440565b90506020028101906105a19190611456565b6105af906020810190611493565b6108b4565b6001016104fe565b5060006105cc6020850185611476565b6001600160a01b0316146105fc576105fc6105ea6020850185611476565b6105f76020860186611493565b6108df565b60005b818110156106bd57600083838381811061061b5761061b611440565b905060200281019061062d9190611456565b61063b906020810190611476565b6001600160a01b0316146106b5576106b583838381811061065e5761065e611440565b90506020028101906106709190611456565b61067e906020810190611476565b84848481811061069057610690611440565b90506020028101906106a29190611456565b6106b0906020810190611493565b610966565b6001016105ff565b5050505050505050565b6106d283838361082d565b505050565b606060007ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea02610707818686610bd7565b92509250505b9250929050565b606060007ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea03610707818686610bd7565b6040805160608082018352600080835260208084018290528385018390526001600160e01b0319861682526000805160206115478339815191528152908490208451928301855280546001600160a01b0381168452600160a01b900460f81b6001600160f81b03191683830152600181018054865181850281018501885281815295969495929486019383018282801561080757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107e9575b5050505050815250509050919050565b6000806108248484610d84565b95945050505050565b7ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea026108588185610dea565b6040516306d61fe760e41b81526001600160a01b03851690636d61fe709061088690869086906004016114da565b600060405180830381600087803b1580156108a057600080fd5b505af11580156106bd573d6000803e3d6000fd5b7ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea036108588185610dea565b60006109097f36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb284316085490565b90506001600160a01b0381161561093e5760405163741cbe0360e01b81526001600160a01b0382166004820152602401610100565b610858847f36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb2843160855565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051818a01356020818102601f01601f19168301909352969750893596918a018035965090945060609350915b818110156109e8576020810283810160600135908601526001016109c9565b505060408101356020818301033560608181528183850160208301379350610a1e92508591506001600160f81b031990506103ac565b15610a3c57604051633accf26360e11b815260040160405180910390fd5b6001600160e01b03198416600090815260008051602061154783398151915260205260409020546001600160a01b031615610ab95760405162461bcd60e51b815260206004820152601e60248201527f46756e6374696f6e2073656c6563746f7220616c7265616479207573656400006044820152606401610100565b604080516060810182526001600160a01b038a1681526001600160f81b0319851660208201529081018390527ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea026001600160e01b0319861660009081526002919091016020908152604091829020835181548584015160f81c600160a01b026001600160a81b03199091166001600160a01b0390921691909117178155918301518051610b6c9260018501920190610efc565b50506040516306d61fe760e41b81526001600160a01b038a169150636d61fe7090610b9b9084906004016110c8565b600060405180830381600087803b158015610bb557600080fd5b505af1158015610bc9573d6000803e3d6000fd5b505050505050505050505050565b606060006001600160a01b038416600114801590610bfc5750610bfa8585610ec0565b155b15610c2557604051637c84ecfb60e01b81526001600160a01b0385166004820152602401610100565b82600003610c465760405163f725081760e01b815260040160405180910390fd5b8267ffffffffffffffff811115610c5f57610c5f6114ee565b604051908082528060200260200182016040528015610c88578160200160208202803683370190505b506001600160a01b03808616600090815260208890526040812054929450911691505b6001600160a01b03821615801590610ccd57506001600160a01b038216600114155b8015610cd857508381105b15610d325781838281518110610cf057610cf0611440565b6001600160a01b039283166020918202929092018101919091529281166000908152928790526040909220549091169080610d2a8161151a565b915050610cab565b6001600160a01b038216600114801590610d4c5750600081115b15610d785782610d5d600183611533565b81518110610d6d57610d6d611440565b602002602001015191505b80835250935093915050565b81516000908190815b81811015610ddc57846001600160a01b0316868281518110610db157610db1611440565b60200260200101516001600160a01b031603610dd45792506001915061070d9050565b600101610d8d565b506000958695509350505050565b6001600160a01b0381161580610e0957506001600160a01b0381166001145b15610e3257604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610100565b6001600160a01b038181166000908152602084905260409020541615610e7657604051631034f46960e21b81526001600160a01b0382166004820152602401610100565b60016000818152602093909352604080842080546001600160a01b039485168087529286208054959091166001600160a01b03199586161790559190935280549091169091179055565b600060016001600160a01b03831614801590610ef557506001600160a01b038281166000908152602085905260409020541615155b9392505050565b828054828255906000526020600020908101928215610f51579160200282015b82811115610f5157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610f1c565b50610f5d929150610f61565b5090565b5b80821115610f5d5760008155600101610f62565b60008083601f840112610f8857600080fd5b50813567ffffffffffffffff811115610fa057600080fd5b6020830191508360208260051b850101111561070d57600080fd5b60008060008060008060006080888a031215610fd657600080fd5b873567ffffffffffffffff80821115610fee57600080fd5b610ffa8b838c01610f76565b909950975060208a013591508082111561101357600080fd5b61101f8b838c01610f76565b909750955060408a013591508082111561103857600080fd5b908901906040828c03121561104c57600080fd5b9093506060890135908082111561106257600080fd5b5061106f8a828b01610f76565b989b979a50959850939692959293505050565b6000815180845260005b818110156110a85760208185018101518683018201520161108c565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610ef56020830184611082565b6001600160a01b03811681146110f057600080fd5b50565b60008060006040848603121561110857600080fd5b8335611113816110db565b9250602084013567ffffffffffffffff8082111561113057600080fd5b818601915086601f83011261114457600080fd5b81358181111561115357600080fd5b87602082850101111561116557600080fd5b6020830194508093505050509250925092565b6000806040838503121561118b57600080fd5b8235611196816110db565b946020939093013593505050565b604080825283519082018190526000906020906060840190828701845b828110156111e65781516001600160a01b0316845292840192908401906001016111c1565b5050506001600160a01b039490941660209390930192909252509092915050565b60006020828403121561121957600080fd5b81356001600160e01b031981168114610ef557600080fd5b602080825282516001600160a01b0390811683830152838201516001600160f81b031916604080850191909152840151606080850152805160808501819052600093929183019190849060a08701905b808310156112a357845184168252938501936001929092019190850190611281565b50979650505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081356112e5816110db565b6001600160a01b03168352602082013536839003601e1901811261130857600080fd5b820160208101903567ffffffffffffffff81111561132557600080fd5b80360382131561133457600080fd5b604060208601526108246040860182846112af565b6000838385526020808601955060208560051b830101846000805b888110156113a857858403601f19018a52823536899003603e19018112611389578283fd5b611395858a83016112d8565b9a86019a94505091840191600101611364565b509198975050505050505050565b6080815260006113ca60808301898b611349565b82810360208401526113dd81888a611349565b905082810360408401526113f181876112d8565b90508281036060840152611406818587611349565b9a9950505050505050505050565b6001600160a01b038316815260406020820181905260009061143890830184611082565b949350505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e1983360301811261146c57600080fd5b9190910192915050565b60006020828403121561148857600080fd5b8135610ef5816110db565b6000808335601e198436030181126114aa57600080fd5b83018035915067ffffffffffffffff8211156114c557600080fd5b60200191503681900382131561070d57600080fd5b6020815260006114386020830184866112af565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161152c5761152c611504565b5060010190565b818103818111156103bd576103bd61150456fef88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea04a164736f6c6343000817000a" export const ETHERSPOT_IMPLEMENTATION: Hex = - "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a7360a06040523060805234801561001457600080fd5b506080516140dd610037600039600081816104ca0152610d7401526140dd6000f3fe6080604052600436106101f25760003560e01c80637dcab4ce1161010d578063bf57159b116100a0578063d691c9641161006f578063d691c964146106de578063e9ae5c53146106fe578063ea5f61d014610711578063eac9b20d14610731578063f2dc691d1461075e576101f9565b8063bf57159b14610662578063c3db883814610678578063c7f758a81461068d578063d03c7914146106be576101f9565b8063a1c0d459116100dc578063a1c0d459146105ec578063a526d83b1461060c578063a71763a81461062c578063b0d691fe1461063f576101f9565b80637dcab4ce1461053f578063855713681461055f5780639517e29f1461058d5780639cfd7cff146105a0576101f9565b80632f54bf6e116101855780635c60da1b116101545780635c60da1b146104b85780637065cb48146104ec578063714041561461050c57806372aea6541461052c576101f9565b80632f54bf6e1461045a57806341c9ddff1461047a5780634b6a14191461048f57806354387ad7146104a2576101f9565b80631626ba7e116101c15780631626ba7e146103d8578063173825d91461041157806319822f7c146104315780632dfca44514610444576101f9565b80630a664dba146103325780630c68ba21146103645780630db0262214610394578063112d3a7d146103b8576101f9565b366101f957005b61020e6000356001600160e01b03191661077e565b6000610218610831565b600080356001600160e01b03191681526002919091016020526040902080549091506001600160a01b03811690600160a01b900460f81b8161028057604051632464e76d60e11b81526001600160e01b03196000351660048201526024015b60405180910390fd5b61028e81607f60f91b610855565b156102e25760408051368101909152366000823760408051601481019091523360601b90526000803660140183865afa90506102d03d60408051918201905290565b3d6000823e816102de573d81fd5b3d81f35b6102ed816000610855565b156103305760408051368101909152366000823760408051601481019091523360601b9052600080366014018382875af190506102d03d60408051918201905290565b005b34801561033e57600080fd5b5061034761086c565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561037057600080fd5b5061038461037f366004613617565b610889565b604051901515815260200161035b565b3480156103a057600080fd5b506103aa60005481565b60405190815260200161035b565b3480156103c457600080fd5b506103846103d3366004613675565b6108a7565b3480156103e457600080fd5b506103f86103f33660046136d0565b61090c565b6040516001600160e01b0319909116815260200161035b565b34801561041d57600080fd5b5061033061042c366004613617565b6109e2565b6103aa61043f366004613734565b610aa9565b34801561045057600080fd5b506103aa60025481565b34801561046657600080fd5b50610384610475366004613617565b610b8f565b34801561048657600080fd5b50610330610bad565b61033061049d366004613781565b610d6a565b3480156104ae57600080fd5b506103aa60015481565b3480156104c457600080fd5b506103477f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f857600080fd5b50610330610507366004613617565b610e5e565b34801561051857600080fd5b50610330610527366004613617565b610f1c565b61033061053a3660046137c2565b610fb9565b34801561054b57600080fd5b5061033061055a366004613617565b611099565b34801561056b57600080fd5b5061057f61057a3660046137f6565b61125e565b60405161035b929190613867565b61033061059b366004613675565b611285565b3480156105ac57600080fd5b50604080518082018252601e81527f657468657273706f7477616c6c65742e6d6f64756c61722e76312e302e3000006020820152905161035b91906138e1565b3480156105f857600080fd5b506103306106073660046138f4565b611374565b34801561061857600080fd5b50610330610627366004613617565b6113a9565b61033061063a366004613675565b611467565b34801561064b57600080fd5b506f71727de22e5e9d8baf0edac6f37da032610347565b34801561066e57600080fd5b506103aa60035481565b34801561068457600080fd5b50610330611530565b34801561069957600080fd5b506106ad6106a83660046138f4565b611673565b60405161035b95949392919061390d565b3480156106ca57600080fd5b506103846106d93660046138f4565b61177d565b6106f16106ec3660046136d0565b61181c565b60405161035b9190613948565b61033061070c3660046136d0565b611e73565b34801561071d57600080fd5b5061057f61072c3660046137f6565b6122e8565b34801561073d57600080fd5b5061075161074c3660046139c2565b612305565b60405161035b91906139df565b34801561076a57600080fd5b506103846107793660046138f4565b6123dd565b6000610788610831565b6001600160e01b0319831660009081526002919091016020908152604091829020600101805483518184028101840190945280845290918301828280156107f857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107da575b50505050509050610809813361242c565b151560000361082d576040516332cf492b60e11b8152336004820152602401610277565b5050565b7ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea0290565b6001600160f81b0319828116908216145b92915050565b60006108846000805160206140888339815191525490565b905090565b6001600160a01b031660009081526005602052604090205460ff1690565b6000600185036108c1576108ba84612439565b9050610904565b600285036108d2576108ba84612457565b600385036108ef576108ba6108e9838501856139c2565b85612471565b60048503610900576108ba846124af565b5060005b949350505050565b60008061091c6014828587613a5d565b61092591613a87565b60601c905061093381612439565b61095b57604051635c93ff2f60e11b81526001600160a01b0382166004820152602401610277565b6001600160a01b03811663f551e2ee3387610979876014818b613a5d565b6040518563ffffffff1660e01b81526004016109989493929190613ae3565b602060405180830381865afa1580156109b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d99190613b15565b95945050505050565b6109eb33610b8f565b806109f557503330145b610a12576040516311d9f09160e01b815260040160405180910390fd5b610a1b81610b8f565b610a385760405163f1369ccb60e01b815260040160405180910390fd5b600160005411610a5b5760405163021870b960e11b815260040160405180910390fd5b610a64816124e1565b604080513081526001600160a01b03831660208201527fe594d081b4382713733fe631966432c9cea5199afb2db5c3c1931f9f9300367991015b60405180910390a150565b6000336f71727de22e5e9d8baf0edac6f37da03214610adb57604051635629665f60e11b815260040160405180910390fd5b816020850135606081901c90610af082612439565b610aff57600193505050610b75565b604051639700320360e01b81526001600160a01b03831690639700320390610b2d908a908a90600401613b77565b6020604051808303816000875af1158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190613c76565b935050505b8015610b875760003860003884335af1505b509392505050565b6001600160a01b031660009081526004602052604090205460ff1690565b610bb633610889565b610bd357604051636570ecab60e11b815260040160405180910390fd5b600254600081815260066020526040812090829003610c0557604051631dc0650160e31b815260040160405180910390fd5b610c0e82612516565b15610c2c576040516320181a3560e21b815260040160405180910390fd5b610c4e600254600090815260066020526040902054600160a01b900460ff1690565b15610c6c57604051638b19dbcb60e01b815260040160405180910390fd5b60008281526006602090815260408220600180820180549182018155845291832090910180546001600160a01b03191633179055838252600201805491610cb283613ca5565b909155505080546001600160a01b0316610ccb8361258d565b15610cfd576000838152600660205260409020805460ff60a01b1916600160a01b179055610cf8816125c7565b505050565b6000838152600660209081526040918290206002015482513081529182018690526001600160a01b0384169282019290925260608101919091527f7afa94f51443879f537b9be4f09d5d734c2c233b788d2f6af6565add34706bab906080015b60405180910390a1505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610db3576040516308e3edd160e41b815260040160405180910390fd5b610dbb6125f7565b60008080610dcb84860186613d81565b925092509250610dda836125c7565b6000826001600160a01b031682604051610df49190613de2565b600060405180830381855af49150503d8060008114610e2f576040519150601f19603f3d011682016040523d82523d6000602084013e610e34565b606091505b5050905080610e5657604051631b79777760e11b815260040160405180910390fd5b505050505050565b610e6733610b8f565b80610e7157503330145b610e8e576040516311d9f09160e01b815260040160405180910390fd5b6001600160a01b0381161580610ea85750610ea881610889565b80610eb75750610eb781610b8f565b15610ed557604051631a1aefc560e21b815260040160405180910390fd5b610ede816125c7565b604080513081526001600160a01b03831660208201527fc82bdbbf677a2462f2a7e22e4ba9abd209496b69cd7b868b3b1d28f76e09a40a9101610a9e565b610f2533610b8f565b80610f2f57503330145b610f4c576040516311d9f09160e01b815260040160405180910390fd5b610f5581610889565b610f725760405163985f453960e01b815260040160405180910390fd5b610f7b8161261b565b604080513081526001600160a01b03831660208201527fee943cdb81826d5909c559c6b1ae6908fcaf2dbc16c4b730346736b486283e8b9101610a9e565b336f71727de22e5e9d8baf0edac6f37da0321480610fd657503330145b610ff357604051635629665f60e11b815260040160405180910390fd5b3660006110036060840184613dfe565b611011916004908290613a5d565b915091506000306001600160a01b03168383604051611031929190613e44565b600060405180830381855af49150503d806000811461106c576040519150601f19603f3d011682016040523d82523d6000602084013e611071565b606091505b505090508061109357604051632b3f6d1160e21b815260040160405180910390fd5b50505050565b6110a233610889565b6110bf57604051636570ecab60e11b815260040160405180910390fd5b6001600160a01b03811615806110d957506110d981610889565b806110e857506110e881610b8f565b1561110657604051631a1aefc560e21b815260040160405180910390fd5b6003600154101561112a57604051636bb07db960e11b815260040160405180910390fd5b600254600090815260066020526040902060018101541580159061115757508054600160a01b900460ff16155b1561117557604051639fa6dc5760e01b815260040160405180910390fd5b600060025460016111869190613e54565b6000818152600660209081526040822080546001600160a01b0388166001600160a01b03199182161782556001808301805491820181558552928420909201805490921633179091558282526002018054929350906111e483613ca5565b9091555050600081815260066020908152604091829020805460ff60a01b1916815542600390910155600283905581513081529081018390526001600160a01b038516918101919091523360608201527f9fb4a8d051aad8866705f4d52eb05a29939e15ad43dd4aab82cf31806759eac390608001610d5d565b606060008061126b610831565b905061127881868661267c565b92509250505b9250929050565b336f71727de22e5e9d8baf0edac6f37da03214806112a257503330145b6112bf57604051635629665f60e11b815260040160405180910390fd5b600184036112d7576112d2838383612818565b61132c565b600284036112ea576112d2838383612894565b600384036112fd576112d28383836128ad565b60048403611310576112d2838383612ade565b60405163041c38b360e41b815260048101859052602401610277565b604080518581526001600160a01b03851660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef12391015b60405180910390a150505050565b61137d33610b8f565b8061138757503330145b6113a4576040516311d9f09160e01b815260040160405180910390fd5b600355565b6113b233610b8f565b806113bc57503330145b6113d9576040516311d9f09160e01b815260040160405180910390fd5b6001600160a01b03811615806113f357506113f381610889565b80611402575061140281610b8f565b156114205760405163053bd11560e31b815260040160405180910390fd5b61142981612b41565b604080513081526001600160a01b03831660208201527fbc3292102fa77e083913064b282926717cdfaede4d35f553d66366c0a3da755a9101610a9e565b336f71727de22e5e9d8baf0edac6f37da032148061148457503330145b6114a157604051635629665f60e11b815260040160405180910390fd5b600184036114b9576114b4838383612b73565b6114f2565b600284036114cc576114b4838383612c04565b600384036114df576114b4838383612c22565b60048403611310576114b4838383612eff565b604080518581526001600160a01b03851660208201527f341347516a9de374859dfda710fa4828b2d48cb57d4fbe4c1149612b8e02276e9101611366565b61153933610b8f565b80611548575061154833610889565b8061155257503330145b61156f576040516302d8be6160e21b815260040160405180910390fd5b60025460009081526006602052604081206003549091901561159357600354611598565b620151805b90506115bc600254600090815260066020526040902054600160a01b900460ff1690565b156115da57604051638b19dbcb60e01b815260040160405180910390fd5b60006115e533610889565b90508080156116035750428284600301546116009190613e54565b10155b156116215760405163ae18e9c760e01b815260040160405180910390fd5b825460ff60a01b1916600160a01b17835560025460408051308152602081019290925233908201527faf7f1090397448391393dc134b45d6d20e79a9d2a8f5a82fb42d1514a55ecbf990606001610d5d565b60008060608180851580611688575060025486115b156116a657604051631dc0650160e31b815260040160405180910390fd5b6000868152600660209081526040808320815160a08101835281546001600160a01b0381168252600160a01b900460ff1615158185015260018201805484518187028101870186528181529295939486019383018282801561173157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611713575b5050505050815260200160028201548152602001600382015481525050905080600001518160600151826040015183602001518460800151955095509550955095505091939590929450565b600081600881901b61179382600160f81b610855565b156117a157600192506117e4565b6117ac826000610855565b156117ba57600192506117e4565b6117cc826001600160f81b0319610855565b156117da57600192506117e4565b5060009392505050565b6117ef816000610855565b156117fd5760019250611815565b61180b81600160f81b610855565b156117da57600192505b5050919050565b60606000611828610831565b60010190506118378133612f7b565b61185657604051635c93ff2f60e11b8152336004820152602401610277565b600061186e6000805160206140888339815191525490565b90506001600160a01b038116611b2e5785600881901b61189282600160f81b610855565b1561190157863587016020810190356118ac836000610855565b156118c2576118bb8282612fb5565b96506118fa565b6118d083600160f81b610855565b156118df576118bb828261308d565b826040516308c3ee0360e11b81526004016102779190613e67565b5050611b27565b61190c826000610855565b15611a5a576000803660006119218b8b6131ba565b6040805160018082528183019092529498509296509094509250816020015b606081526020019060019003908161194057905050985060006119638682610855565b15611997576119748585858561320b565b8a60008151811061198757611987613e7c565b6020026020010181905250611a50565b6119a586600160f81b610855565b15611a35576119b685858585613241565b8b6000815181106119c9576119c9613e7c565b6020908102919091010152905080611a30577fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb760008b600081518110611a1157611a11613e7c565b6020026020010151604051611a27929190613e92565b60405180910390a15b611a50565b856040516308c3ee0360e11b81526004016102779190613e67565b5050505050611b27565b611a6c826001600160f81b0319610855565b15611b0c576000611a80601482898b613a5d565b611a8991613a87565b60601c9050366000611a9e896014818d613a5d565b9092509050611aae846000610855565b15611ac457611abe838383613272565b50611b04565b611ad284600160f81b610855565b15611ae957611ae28383836132a6565b5050611b04565b836040516308c3ee0360e11b81526004016102779190613e67565b505050611b27565b81604051632e5bf3f960e21b81526004016102779190613e67565b5050611e6a565b604051631057c74d60e11b81526000906001600160a01b038316906320af8e9a90611b6190339085903690600401613eab565b6000604051808303816000875af1158015611b80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ba89190810190613ed0565b905086600881901b611bbe82600160f81b610855565b15611c125787358801602081019035611bd8836000610855565b15611bee57611be78282612fb5565b9750611c0b565b611bfc83600160f81b610855565b156118df57611be7828261308d565b5050611dda565b611c1d826000610855565b15611d4b57600080366000611c328c8c6131ba565b6040805160018082528183019092529498509296509094509250816020015b6060815260200190600190039081611c515790505099506000611c748682610855565b15611ca857611c858585858561320b565b8b600081518110611c9857611c98613e7c565b6020026020010181905250611d41565b611cb686600160f81b610855565b15611a3557611cc785858585613241565b8c600081518110611cda57611cda613e7c565b6020908102919091010152905080611d41577fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb760008c600081518110611d2257611d22613e7c565b6020026020010151604051611d38929190613e92565b60405180910390a15b5050505050611dda565b611d5d826001600160f81b0319610855565b15611b0c576000611d716014828a8c613a5d565b611d7a91613a87565b60601c9050366000611d8f8a6014818e613a5d565b9092509050611d9f846000610855565b15611db557611daf838383613272565b50611dd6565b611dc384600160f81b610855565b15611ae957611dd38383836132a6565b50505b5050505b5050604051630b9dfbed60e11b81526001600160a01b0383169063173bf7da90611e089084906004016138e1565b6020604051808303816000875af1158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b9190613f3d565b611e685760405163546b3e6360e01b815260040160405180910390fd5b505b50509392505050565b336f71727de22e5e9d8baf0edac6f37da0321480611e9057503330145b611ead57604051635629665f60e11b815260040160405180910390fd5b6000611ec56000805160206140888339815191525490565b90506001600160a01b0381166120695783600881901b611ee982600160f81b610855565b15611f3c5784358501602081019035611f03836000610855565b15611f1857611f128282612fb5565b50611f35565b611f2683600160f81b610855565b156118df57611f12828261308d565b5050612062565b611f47826000610855565b15611fd357600080366000611f5c89896131ba565b9350935093509350611f7285600060f81b610855565b15611f8957611f838484848461320b565b50611fca565b611f9785600160f81b610855565b15611faf57611fa884848484613241565b5050611fca565b846040516308c3ee0360e11b81526004016102779190613e67565b50505050612062565b611fe5826001600160f81b0319610855565b15611b0c576000611ff96014828789613a5d565b61200291613a87565b60601c9050366000612017876014818b613a5d565b9092509050612027846000610855565b1561203d57612037838383613272565b5061205e565b61204b84600160f81b610855565b15611ae95761205b8383836132a6565b50505b5050505b5050611093565b604051631057c74d60e11b81526000906001600160a01b038316906320af8e9a9061209c90339085903690600401613eab565b6000604051808303816000875af11580156120bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120e39190810190613ed0565b905084600881901b6120f982600160f81b610855565b1561214c5785358601602081019035612113836000610855565b15612128576121228282612fb5565b50612145565b61213683600160f81b610855565b156118df57612122828261308d565b5050612253565b612157826000610855565b156121c45760008036600061216c8a8a6131ba565b935093509350935061218285600060f81b610855565b15612199576121938484848461320b565b506121bb565b6121a785600160f81b610855565b15611faf576121b884848484613241565b50505b50505050612253565b6121d6826001600160f81b0319610855565b15611b0c5760006121ea601482888a613a5d565b6121f391613a87565b60601c9050366000612208886014818c613a5d565b9092509050612218846000610855565b1561222e57612228838383613272565b5061224f565b61223c84600160f81b610855565b15611ae95761224c8383836132a6565b50505b5050505b5050604051630b9dfbed60e11b81526001600160a01b0383169063173bf7da906122819084906004016138e1565b6020604051808303816000875af11580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190613f3d565b6122e15760405163546b3e6360e01b815260040160405180910390fd5b5050505050565b60606000806122f5610831565b600101905061127881868661267c565b60408051606080820183526000808352602083015291810191909152612329610831565b6001600160e01b0319831660009081526002919091016020908152604091829020825160608101845281546001600160a01b0381168252600160a01b900460f81b6001600160f81b03191681840152600182018054855181860281018601875281815292959394938601938301828280156123cd57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116123af575b5050505050815250509050919050565b6000600182036123ef57506001919050565b600282036123ff57506001919050565b6003820361240f57506001919050565b6004820361241f57506001919050565b506000919050565b919050565b6000806109d984846132d5565b600080612444610831565b90506124508184612f7b565b9392505050565b600080612462610831565b60010190506124508184612f7b565b60008061247c610831565b6001600160e01b0319949094166000908152600290940160205250506040909120546001600160a01b0390811691161490565b6000816001600160a01b03166124d16000805160206140888339815191525490565b6001600160a01b03161492915050565b6001600160a01b0381166000908152600460205260408120805460ff191690558054908061250e83613f5f565b919050555050565b6000805b60008381526006602052604090206001015481101561258457600083815260066020526040902060010180543391908390811061255957612559613e7c565b6000918252602090912001546001600160a01b03160361257c5750600192915050565b60010161251a565b50600092915050565b6001546000828152600660205260408120600201549091610258916125b5906103e890613f76565b6125bf9190613f8d565b101592915050565b6001600160a01b0381166000908152600460205260408120805460ff191660011790558054908061250e83613ca5565b6000612601610831565b905061260f8160010161333b565b6126188161333b565b50565b6001600160a01b0381166000908152600560205260408120805460ff19169055600180549161264983613f5f565b9190505550612670600254600090815260066020526040902054600160a01b900460ff1690565b61261857612618611530565b606060006001600160a01b03841660011480159061269f575061269f8585612f7b565b156126c857604051637c84ecfb60e01b81526001600160a01b0385166004820152602401610277565b826000036126e95760405163f725081760e01b815260040160405180910390fd5b826001600160401b0381111561270157612701613cbe565b60405190808252806020026020018201604052801561272a578160200160208202803683370190505b506001600160a01b03808616600090815260208890526040812054929450911691505b6001600160a01b0382161580159061276f57506001600160a01b038216600114155b801561277a57508381105b156127d4578183828151811061279257612792613e7c565b6001600160a01b0392831660209182029290920181019190915292811660009081529287905260409092205490911690806127cc81613ca5565b91505061274d565b6001600160a01b03821660011461280c57826127f1600183613faf565b8151811061280157612801613e7c565b602002602001015191505b80835250935093915050565b6000612822610831565b905061282e8185613398565b6040516306d61fe760e41b81526001600160a01b03851690636d61fe709061285c9086908690600401613fc2565b600060405180830381600087803b15801561287657600080fd5b505af115801561288a573d6000803e3d6000fd5b5050505050505050565b600061289e610831565b600101905061282e8185613398565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051818a01356020818102601f01601f19168301909352969750893596918a018035965090945060609350915b8181101561292f57602081028381016060013590860152600101612910565b50506040810135602081830103356060818152818385016020830137935061296592508591506001600160f81b03199050610855565b1561298357604051633accf26360e11b815260040160405180910390fd5b61298c8461346e565b156129d95760405162461bcd60e51b815260206004820152601e60248201527f46756e6374696f6e2073656c6563746f7220616c7265616479207573656400006044820152606401610277565b604080516060810182526001600160a01b038a1681526001600160f81b031985166020820152908101839052612a0d610831565b6001600160e01b0319861660009081526002919091016020908152604091829020835181548584015160f81c600160a01b026001600160a81b03199091166001600160a01b0390921691909117178155918301518051612a73926001850192019061357d565b50506040516306d61fe760e41b81526001600160a01b038a169150636d61fe7090612aa29084906004016138e1565b600060405180830381600087803b158015612abc57600080fd5b505af1158015612ad0573d6000803e3d6000fd5b505050505050505050505050565b6000612af66000805160206140888339815191525490565b90506001600160a01b03811615612b2b5760405163741cbe0360e01b81526001600160a01b0382166004820152602401610277565b61282e8460008051602061408883398151915255565b6001600160a01b0381166000908152600560205260408120805460ff1916600190811790915580549161264983613ca5565b6000612b7d610831565b9050600080612b8e84860186613fd6565b9092509050612b9e8383886134a8565b604051638a91b0e360e01b81526001600160a01b03871690638a91b0e390612bca9084906004016138e1565b600060405180830381600087803b158015612be457600080fd5b505af1158015612bf8573d6000803e3d6000fd5b50505050505050505050565b6000612c0e610831565b6001019050600080612b8e84860186613fd6565b6000612c316004828486613a5d565b612c3a91614025565b90506000612c4b8360048187613a5d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350612c8e925084915061346e9050565b612cda5760405162461bcd60e51b815260206004820152601a60248201527f46756e6374696f6e2073656c6563746f72206e6f7420757365640000000000006044820152606401610277565b6000612ce4610831565b6001600160e01b0319841660009081526002919091016020908152604091829020825160608101845281546001600160a01b0381168252600160a01b900460f81b6001600160f81b0319168184015260018201805485518186028101860187528181529295939493860193830182828015612d8857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612d6a575b5050505050815250509050856001600160a01b031681600001516001600160a01b031614612e0b5760405162461bcd60e51b815260206004820152602a60248201527f46756e6374696f6e2073656c6563746f72206e6f74207573656420627920746860448201526934b9903430b7323632b960b11b6064820152608401610277565b6020810151612e22816001600160f81b0319610855565b15612e4057604051633accf26360e11b815260040160405180910390fd5b60408051600080825260808201835260208201818152928201526060810181905290612e6a610831565b6001600160e01b0319871660009081526002919091016020908152604091829020835181548584015160f81c600160a01b026001600160a81b03199091166001600160a01b0390921691909117178155918301518051612ed0926001850192019061357d565b5050604051638a91b0e360e01b81526001600160a01b038a169150638a91b0e390612aa29087906004016138e1565b612f16600060008051602061408883398151915255565b604051638a91b0e360e01b81526001600160a01b03841690638a91b0e390612f449085908590600401613fc2565b600060405180830381600087803b158015612f5e57600080fd5b505af1158015612f72573d6000803e3d6000fd5b50505050505050565b600060016001600160a01b038316148015906124505750506001600160a01b03908116600090815260209290925260409091205416151590565b606081806001600160401b03811115612fd057612fd0613cbe565b60405190808252806020026020018201604052801561300357816020015b6060815260200190600190039081612fee5790505b50915060005b81811015613085573685858381811061302457613024613e7c565b90506020028101906130369190614053565b905061305f6130486020830183613617565b602083013561305a6040850185613dfe565b61320b565b84838151811061307157613071613e7c565b602090810291909101015250600101613009565b505092915050565b606081806001600160401b038111156130a8576130a8613cbe565b6040519080825280602002602001820160405280156130db57816020015b60608152602001906001900390816130c65790505b50915060005b8181101561308557368585838181106130fc576130fc613e7c565b905060200281019061310e9190614053565b905060006131396131226020840184613617565b60208401356131346040860186613dfe565b613241565b86858151811061314b5761314b613e7c565b60209081029190910101529050806131b0577fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb78386858151811061319157613191613e7c565b60200260200101516040516131a7929190613e92565b60405180910390a15b50506001016130e1565b60008036816131cc6014828789613a5d565b6131d591613a87565b60601c93506131e8603460148789613a5d565b6131f191614069565b92506132008560348189613a5d565b949793965094505050565b60405181838237600038838387895af1613228573d6000823e3d81fd5b3d8152602081013d6000823e3d01604052949350505050565b604051600090828482376000388483888a5af191503d8152602081013d6000823e3d81016040525094509492505050565b604051818382376000388383875af461328e573d6000823e3d81fd5b3d8152602081013d6000823e3d016040529392505050565b604051600090828482376000388483885af491503d8152602081013d6000823e3d810160405250935093915050565b81516000908190815b8181101561332d57846001600160a01b031686828151811061330257613302613e7c565b60200260200101516001600160a01b0316036133255792506001915061127e9050565b6001016132de565b506000958695509350505050565b60016000908152602082905260409020546001600160a01b031615613373576040516329e42f3360e11b815260040160405180910390fd5b60016000818152602092909252604090912080546001600160a01b0319169091179055565b6001600160a01b03811615806133b757506001600160a01b0381166001145b156133e057604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610277565b6001600160a01b03818116600090815260208490526040902054161561342457604051631034f46960e21b81526001600160a01b0382166004820152602401610277565b60016000818152602093909352604080842080546001600160a01b039485168087529286208054959091166001600160a01b03199586161790559190935280549091169091179055565b600080613479610831565b6001600160e01b03199093166000908152600293909301602052505060409020546001600160a01b0316151590565b6001600160a01b03811615806134c757506001600160a01b0381166001145b156134f057604051637c84ecfb60e01b81526001600160a01b0383166004820152602401610277565b6001600160a01b0382811660009081526020859052604090205481169082161461353857604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610277565b6001600160a01b0390811660008181526020949094526040808520805494841686529085208054949093166001600160a01b0319948516179092559092528154169055565b8280548282559060005260206000209081019282156135d2579160200282015b828111156135d257825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061359d565b506135de9291506135e2565b5090565b5b808211156135de57600081556001016135e3565b6001600160a01b038116811461261857600080fd5b8035612427816135f7565b60006020828403121561362957600080fd5b8135612450816135f7565b60008083601f84011261364657600080fd5b5081356001600160401b0381111561365d57600080fd5b60208301915083602082850101111561127e57600080fd5b6000806000806060858703121561368b57600080fd5b84359350602085013561369d816135f7565b925060408501356001600160401b038111156136b857600080fd5b6136c487828801613634565b95989497509550505050565b6000806000604084860312156136e557600080fd5b8335925060208401356001600160401b0381111561370257600080fd5b61370e86828701613634565b9497909650939450505050565b6000610120828403121561372e57600080fd5b50919050565b60008060006060848603121561374957600080fd5b83356001600160401b0381111561375f57600080fd5b61376b8682870161371b565b9660208601359650604090950135949350505050565b6000806020838503121561379457600080fd5b82356001600160401b038111156137aa57600080fd5b6137b685828601613634565b90969095509350505050565b6000602082840312156137d457600080fd5b81356001600160401b038111156137ea57600080fd5b6109048482850161371b565b6000806040838503121561380957600080fd5b8235613814816135f7565b946020939093013593505050565b60008151808452602080850194506020840160005b8381101561385c5781516001600160a01b031687529582019590820190600101613837565b509495945050505050565b60408152600061387a6040830185613822565b905060018060a01b03831660208301529392505050565b60005b838110156138ac578181015183820152602001613894565b50506000910152565b600081518084526138cd816020860160208601613891565b601f01601f19169290920160200192915050565b60208152600061245060208301846138b5565b60006020828403121561390657600080fd5b5035919050565b60018060a01b038616815284602082015260a06040820152600061393460a0830186613822565b931515606083015250608001529392505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b8281101561399f57603f1988860301845261398d8583516138b5565b94509285019290850190600101613971565b5092979650505050505050565b6001600160e01b03198116811461261857600080fd5b6000602082840312156139d457600080fd5b8135612450816139ac565b602080825282516001600160a01b0390811683830152838201516001600160f81b031916604080850191909152840151606080850152805160808501819052600093929183019190849060a08701905b80831015613a5157845184168252938501936001929092019190850190613a2f565b50979650505050505050565b60008085851115613a6d57600080fd5b83861115613a7a57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156130855760149490940360031b84901b1690921692915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b0385168152836020820152606060408201526000613b0b606083018486613aba565b9695505050505050565b600060208284031215613b2757600080fd5b8151612450816139ac565b6000808335601e19843603018112613b4957600080fd5b83016020810192503590506001600160401b03811115613b6857600080fd5b80360382131561127e57600080fd5b60408152613b9860408201613b8b8561360c565b6001600160a01b03169052565b602083013560608201526000613bb16040850185613b32565b610120806080860152613bc961016086018385613aba565b9250613bd86060880188613b32565b9250603f19808786030160a0880152613bf2858584613aba565b9450608089013560c088015260a089013560e0880152610100935060c089013584880152613c2360e08a018a613b32565b9250818887030184890152613c39868483613aba565b955050613c48848a018a613b32565b9450925080878603016101408801525050613c64838383613aba565b93505050508260208301529392505050565b600060208284031215613c8857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600060018201613cb757613cb7613c8f565b5060010190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613cfc57613cfc613cbe565b604052919050565b60006001600160401b03821115613d1d57613d1d613cbe565b50601f01601f191660200190565b600082601f830112613d3c57600080fd5b8135613d4f613d4a82613d04565b613cd4565b818152846020838601011115613d6457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613d9657600080fd5b8335613da1816135f7565b92506020840135613db1816135f7565b915060408401356001600160401b03811115613dcc57600080fd5b613dd886828701613d2b565b9150509250925092565b60008251613df4818460208701613891565b9190910192915050565b6000808335601e19843603018112613e1557600080fd5b8301803591506001600160401b03821115613e2f57600080fd5b60200191503681900382131561127e57600080fd5b8183823760009101908152919050565b8082018082111561086657610866613c8f565b6001600160f81b031991909116815260200190565b634e487b7160e01b600052603260045260246000fd5b82815260406020820152600061090460408301846138b5565b6001600160a01b03841681526040602082018190526000906109d99083018486613aba565b600060208284031215613ee257600080fd5b81516001600160401b03811115613ef857600080fd5b8201601f81018413613f0957600080fd5b8051613f17613d4a82613d04565b818152856020838501011115613f2c57600080fd5b6109d9826020830160208601613891565b600060208284031215613f4f57600080fd5b8151801515811461245057600080fd5b600081613f6e57613f6e613c8f565b506000190190565b808202811582820484141761086657610866613c8f565b600082613faa57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561086657610866613c8f565b602081526000610904602083018486613aba565b60008060408385031215613fe957600080fd5b8235613ff4816135f7565b915060208301356001600160401b0381111561400f57600080fd5b61401b85828601613d2b565b9150509250929050565b6001600160e01b031981358181169160048510156130855760049490940360031b84901b1690921692915050565b60008235605e19833603018112613df457600080fd5b8035602083101561086657600019602084900360031b1b169291505056fe36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb28431608a26469706673582212200e9d8fa1e71878c2dfec2573076fa2365235920bb8d728db041006fbfbfa65af64736f6c63430008170033" + "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a7360a06040523060805234801561001457600080fd5b506080516140c4610037600039600081816104ca0152610d7401526140c46000f3fe6080604052600436106101f25760003560e01c80637dcab4ce1161010d578063bf57159b116100a0578063d691c9641161006f578063d691c964146106de578063e9ae5c53146106fe578063ea5f61d014610711578063eac9b20d14610731578063f2dc691d1461075e576101f9565b8063bf57159b14610662578063c3db883814610678578063c7f758a81461068d578063d03c7914146106be576101f9565b8063a1c0d459116100dc578063a1c0d459146105ec578063a526d83b1461060c578063a71763a81461062c578063b0d691fe1461063f576101f9565b80637dcab4ce1461053f578063855713681461055f5780639517e29f1461058d5780639cfd7cff146105a0576101f9565b80632f54bf6e116101855780635c60da1b116101545780635c60da1b146104b85780637065cb48146104ec578063714041561461050c57806372aea6541461052c576101f9565b80632f54bf6e1461045a57806341c9ddff1461047a5780634b6a14191461048f57806354387ad7146104a2576101f9565b80631626ba7e116101c15780631626ba7e146103d8578063173825d91461041157806319822f7c146104315780632dfca44514610444576101f9565b80630a664dba146103325780630c68ba21146103645780630db0262214610394578063112d3a7d146103b8576101f9565b366101f957005b61020e6000356001600160e01b03191661077e565b6000610218610831565b600080356001600160e01b03191681526002919091016020526040902080549091506001600160a01b03811690600160a01b900460f81b8161028057604051632464e76d60e11b81526001600160e01b03196000351660048201526024015b60405180910390fd5b61028e81607f60f91b610855565b156102e25760408051368101909152366000823760408051601481019091523360601b90526000803660140183865afa90506102d03d60408051918201905290565b3d6000823e816102de573d81fd5b3d81f35b6102ed816000610855565b156103305760408051368101909152366000823760408051601481019091523360601b9052600080366014018382875af190506102d03d60408051918201905290565b005b34801561033e57600080fd5b5061034761086c565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561037057600080fd5b5061038461037f366004613627565b610889565b604051901515815260200161035b565b3480156103a057600080fd5b506103aa60005481565b60405190815260200161035b565b3480156103c457600080fd5b506103846103d3366004613685565b6108a7565b3480156103e457600080fd5b506103f86103f33660046136e0565b61090c565b6040516001600160e01b0319909116815260200161035b565b34801561041d57600080fd5b5061033061042c366004613627565b6109e2565b6103aa61043f366004613744565b610aa9565b34801561045057600080fd5b506103aa60025481565b34801561046657600080fd5b50610384610475366004613627565b610b8f565b34801561048657600080fd5b50610330610bad565b61033061049d366004613791565b610d6a565b3480156104ae57600080fd5b506103aa60015481565b3480156104c457600080fd5b506103477f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f857600080fd5b50610330610507366004613627565b610e5e565b34801561051857600080fd5b50610330610527366004613627565b610f1c565b61033061053a3660046137d2565b610fb9565b34801561054b57600080fd5b5061033061055a366004613627565b611099565b34801561056b57600080fd5b5061057f61057a366004613806565b61125e565b60405161035b929190613877565b61033061059b366004613685565b611285565b3480156105ac57600080fd5b50604080518082018252601e81527f657468657273706f7477616c6c65742e6d6f64756c61722e76312e302e3000006020820152905161035b91906138f1565b3480156105f857600080fd5b50610330610607366004613904565b611374565b34801561061857600080fd5b50610330610627366004613627565b6113a9565b61033061063a366004613685565b611467565b34801561064b57600080fd5b506f71727de22e5e9d8baf0edac6f37da032610347565b34801561066e57600080fd5b506103aa60035481565b34801561068457600080fd5b50610330611530565b34801561069957600080fd5b506106ad6106a8366004613904565b611673565b60405161035b95949392919061391d565b3480156106ca57600080fd5b506103846106d9366004613904565b61177d565b6106f16106ec3660046136e0565b61181c565b60405161035b9190613958565b61033061070c3660046136e0565b611e73565b34801561071d57600080fd5b5061057f61072c366004613806565b6122e8565b34801561073d57600080fd5b5061075161074c3660046139d2565b612305565b60405161035b91906139ef565b34801561076a57600080fd5b50610384610779366004613904565b6123dd565b6000610788610831565b6001600160e01b0319831660009081526002919091016020908152604091829020600101805483518184028101840190945280845290918301828280156107f857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107da575b50505050509050610809813361242c565b151560000361082d576040516332cf492b60e11b8152336004820152602401610277565b5050565b7ff88ce1fdb7fb1cbd3282e49729100fa3f2d6ee9f797961fe4fb1871cea89ea0290565b6001600160f81b0319828116908216145b92915050565b60006108846000805160206140988339815191525490565b905090565b6001600160a01b031660009081526005602052604090205460ff1690565b6000600185036108c1576108ba84612439565b9050610904565b600285036108d2576108ba84612457565b600385036108ef576108ba6108e9838501856139d2565b85612471565b60048503610900576108ba846124af565b5060005b949350505050565b60008061091c6014828587613a6d565b61092591613a97565b60601c905061093381612439565b61095b57604051635c93ff2f60e11b81526001600160a01b0382166004820152602401610277565b6001600160a01b03811663f551e2ee3387610979876014818b613a6d565b6040518563ffffffff1660e01b81526004016109989493929190613af3565b602060405180830381865afa1580156109b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d99190613b25565b95945050505050565b6109eb33610b8f565b806109f557503330145b610a12576040516311d9f09160e01b815260040160405180910390fd5b610a1b81610b8f565b610a385760405163f1369ccb60e01b815260040160405180910390fd5b600160005411610a5b5760405163021870b960e11b815260040160405180910390fd5b610a64816124e1565b604080513081526001600160a01b03831660208201527fe594d081b4382713733fe631966432c9cea5199afb2db5c3c1931f9f9300367991015b60405180910390a150565b6000336f71727de22e5e9d8baf0edac6f37da03214610adb57604051635629665f60e11b815260040160405180910390fd5b816020850135606081901c90610af082612439565b610aff57600193505050610b75565b604051639700320360e01b81526001600160a01b03831690639700320390610b2d908a908a90600401613b87565b6020604051808303816000875af1158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190613c86565b935050505b8015610b875760003860003884335af1505b509392505050565b6001600160a01b031660009081526004602052604090205460ff1690565b610bb633610889565b610bd357604051636570ecab60e11b815260040160405180910390fd5b600254600081815260066020526040812090829003610c0557604051631dc0650160e31b815260040160405180910390fd5b610c0e82612516565b15610c2c576040516320181a3560e21b815260040160405180910390fd5b610c4e600254600090815260066020526040902054600160a01b900460ff1690565b15610c6c57604051638b19dbcb60e01b815260040160405180910390fd5b60008281526006602090815260408220600180820180549182018155845291832090910180546001600160a01b03191633179055838252600201805491610cb283613cb5565b909155505080546001600160a01b0316610ccb8361258d565b15610cfd576000838152600660205260409020805460ff60a01b1916600160a01b179055610cf8816125c7565b505050565b6000838152600660209081526040918290206002015482513081529182018690526001600160a01b0384169282019290925260608101919091527f7afa94f51443879f537b9be4f09d5d734c2c233b788d2f6af6565add34706bab906080015b60405180910390a1505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610db3576040516308e3edd160e41b815260040160405180910390fd5b610dbb6125f7565b60008080610dcb84860186613d91565b925092509250610dda836125c7565b6000826001600160a01b031682604051610df49190613df2565b600060405180830381855af49150503d8060008114610e2f576040519150601f19603f3d011682016040523d82523d6000602084013e610e34565b606091505b5050905080610e5657604051631b79777760e11b815260040160405180910390fd5b505050505050565b610e6733610b8f565b80610e7157503330145b610e8e576040516311d9f09160e01b815260040160405180910390fd5b6001600160a01b0381161580610ea85750610ea881610889565b80610eb75750610eb781610b8f565b15610ed557604051631a1aefc560e21b815260040160405180910390fd5b610ede816125c7565b604080513081526001600160a01b03831660208201527fc82bdbbf677a2462f2a7e22e4ba9abd209496b69cd7b868b3b1d28f76e09a40a9101610a9e565b610f2533610b8f565b80610f2f57503330145b610f4c576040516311d9f09160e01b815260040160405180910390fd5b610f5581610889565b610f725760405163985f453960e01b815260040160405180910390fd5b610f7b8161261b565b604080513081526001600160a01b03831660208201527fee943cdb81826d5909c559c6b1ae6908fcaf2dbc16c4b730346736b486283e8b9101610a9e565b336f71727de22e5e9d8baf0edac6f37da0321480610fd657503330145b610ff357604051635629665f60e11b815260040160405180910390fd5b3660006110036060840184613e0e565b611011916004908290613a6d565b915091506000306001600160a01b03168383604051611031929190613e54565b600060405180830381855af49150503d806000811461106c576040519150601f19603f3d011682016040523d82523d6000602084013e611071565b606091505b505090508061109357604051632b3f6d1160e21b815260040160405180910390fd5b50505050565b6110a233610889565b6110bf57604051636570ecab60e11b815260040160405180910390fd5b6001600160a01b03811615806110d957506110d981610889565b806110e857506110e881610b8f565b1561110657604051631a1aefc560e21b815260040160405180910390fd5b6003600154101561112a57604051636bb07db960e11b815260040160405180910390fd5b600254600090815260066020526040902060018101541580159061115757508054600160a01b900460ff16155b1561117557604051639fa6dc5760e01b815260040160405180910390fd5b600060025460016111869190613e64565b6000818152600660209081526040822080546001600160a01b0388166001600160a01b03199182161782556001808301805491820181558552928420909201805490921633179091558282526002018054929350906111e483613cb5565b9091555050600081815260066020908152604091829020805460ff60a01b1916815542600390910155600283905581513081529081018390526001600160a01b038516918101919091523360608201527f9fb4a8d051aad8866705f4d52eb05a29939e15ad43dd4aab82cf31806759eac390608001610d5d565b606060008061126b610831565b905061127881868661267c565b92509250505b9250929050565b336f71727de22e5e9d8baf0edac6f37da03214806112a257503330145b6112bf57604051635629665f60e11b815260040160405180910390fd5b600184036112d7576112d2838383612828565b61132c565b600284036112ea576112d28383836128a4565b600384036112fd576112d28383836128bd565b60048403611310576112d2838383612aee565b60405163041c38b360e41b815260048101859052602401610277565b604080518581526001600160a01b03851660208201527fd21d0b289f126c4b473ea641963e766833c2f13866e4ff480abd787c100ef12391015b60405180910390a150505050565b61137d33610b8f565b8061138757503330145b6113a4576040516311d9f09160e01b815260040160405180910390fd5b600355565b6113b233610b8f565b806113bc57503330145b6113d9576040516311d9f09160e01b815260040160405180910390fd5b6001600160a01b03811615806113f357506113f381610889565b80611402575061140281610b8f565b156114205760405163053bd11560e31b815260040160405180910390fd5b61142981612b51565b604080513081526001600160a01b03831660208201527fbc3292102fa77e083913064b282926717cdfaede4d35f553d66366c0a3da755a9101610a9e565b336f71727de22e5e9d8baf0edac6f37da032148061148457503330145b6114a157604051635629665f60e11b815260040160405180910390fd5b600184036114b9576114b4838383612b83565b6114f2565b600284036114cc576114b4838383612c14565b600384036114df576114b4838383612c32565b60048403611310576114b4838383612f0f565b604080518581526001600160a01b03851660208201527f341347516a9de374859dfda710fa4828b2d48cb57d4fbe4c1149612b8e02276e9101611366565b61153933610b8f565b80611548575061154833610889565b8061155257503330145b61156f576040516302d8be6160e21b815260040160405180910390fd5b60025460009081526006602052604081206003549091901561159357600354611598565b620151805b90506115bc600254600090815260066020526040902054600160a01b900460ff1690565b156115da57604051638b19dbcb60e01b815260040160405180910390fd5b60006115e533610889565b90508080156116035750428284600301546116009190613e64565b10155b156116215760405163ae18e9c760e01b815260040160405180910390fd5b825460ff60a01b1916600160a01b17835560025460408051308152602081019290925233908201527faf7f1090397448391393dc134b45d6d20e79a9d2a8f5a82fb42d1514a55ecbf990606001610d5d565b60008060608180851580611688575060025486115b156116a657604051631dc0650160e31b815260040160405180910390fd5b6000868152600660209081526040808320815160a08101835281546001600160a01b0381168252600160a01b900460ff1615158185015260018201805484518187028101870186528181529295939486019383018282801561173157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611713575b5050505050815260200160028201548152602001600382015481525050905080600001518160600151826040015183602001518460800151955095509550955095505091939590929450565b600081600881901b61179382600160f81b610855565b156117a157600192506117e4565b6117ac826000610855565b156117ba57600192506117e4565b6117cc826001600160f81b0319610855565b156117da57600192506117e4565b5060009392505050565b6117ef816000610855565b156117fd5760019250611815565b61180b81600160f81b610855565b156117da57600192505b5050919050565b60606000611828610831565b60010190506118378133612f8b565b61185657604051635c93ff2f60e11b8152336004820152602401610277565b600061186e6000805160206140988339815191525490565b90506001600160a01b038116611b2e5785600881901b61189282600160f81b610855565b1561190157863587016020810190356118ac836000610855565b156118c2576118bb8282612fc5565b96506118fa565b6118d083600160f81b610855565b156118df576118bb828261309d565b826040516308c3ee0360e11b81526004016102779190613e77565b5050611b27565b61190c826000610855565b15611a5a576000803660006119218b8b6131ca565b6040805160018082528183019092529498509296509094509250816020015b606081526020019060019003908161194057905050985060006119638682610855565b15611997576119748585858561321b565b8a60008151811061198757611987613e8c565b6020026020010181905250611a50565b6119a586600160f81b610855565b15611a35576119b685858585613251565b8b6000815181106119c9576119c9613e8c565b6020908102919091010152905080611a30577fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb760008b600081518110611a1157611a11613e8c565b6020026020010151604051611a27929190613ea2565b60405180910390a15b611a50565b856040516308c3ee0360e11b81526004016102779190613e77565b5050505050611b27565b611a6c826001600160f81b0319610855565b15611b0c576000611a80601482898b613a6d565b611a8991613a97565b60601c9050366000611a9e896014818d613a6d565b9092509050611aae846000610855565b15611ac457611abe838383613282565b50611b04565b611ad284600160f81b610855565b15611ae957611ae28383836132b6565b5050611b04565b836040516308c3ee0360e11b81526004016102779190613e77565b505050611b27565b81604051632e5bf3f960e21b81526004016102779190613e77565b5050611e6a565b604051631057c74d60e11b81526000906001600160a01b038316906320af8e9a90611b6190339085903690600401613ebb565b6000604051808303816000875af1158015611b80573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ba89190810190613ee0565b905086600881901b611bbe82600160f81b610855565b15611c125787358801602081019035611bd8836000610855565b15611bee57611be78282612fc5565b9750611c0b565b611bfc83600160f81b610855565b156118df57611be7828261309d565b5050611dda565b611c1d826000610855565b15611d4b57600080366000611c328c8c6131ca565b6040805160018082528183019092529498509296509094509250816020015b6060815260200190600190039081611c515790505099506000611c748682610855565b15611ca857611c858585858561321b565b8b600081518110611c9857611c98613e8c565b6020026020010181905250611d41565b611cb686600160f81b610855565b15611a3557611cc785858585613251565b8c600081518110611cda57611cda613e8c565b6020908102919091010152905080611d41577fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb760008c600081518110611d2257611d22613e8c565b6020026020010151604051611d38929190613ea2565b60405180910390a15b5050505050611dda565b611d5d826001600160f81b0319610855565b15611b0c576000611d716014828a8c613a6d565b611d7a91613a97565b60601c9050366000611d8f8a6014818e613a6d565b9092509050611d9f846000610855565b15611db557611daf838383613282565b50611dd6565b611dc384600160f81b610855565b15611ae957611dd38383836132b6565b50505b5050505b5050604051630b9dfbed60e11b81526001600160a01b0383169063173bf7da90611e089084906004016138f1565b6020604051808303816000875af1158015611e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4b9190613f4d565b611e685760405163546b3e6360e01b815260040160405180910390fd5b505b50509392505050565b336f71727de22e5e9d8baf0edac6f37da0321480611e9057503330145b611ead57604051635629665f60e11b815260040160405180910390fd5b6000611ec56000805160206140988339815191525490565b90506001600160a01b0381166120695783600881901b611ee982600160f81b610855565b15611f3c5784358501602081019035611f03836000610855565b15611f1857611f128282612fc5565b50611f35565b611f2683600160f81b610855565b156118df57611f12828261309d565b5050612062565b611f47826000610855565b15611fd357600080366000611f5c89896131ca565b9350935093509350611f7285600060f81b610855565b15611f8957611f838484848461321b565b50611fca565b611f9785600160f81b610855565b15611faf57611fa884848484613251565b5050611fca565b846040516308c3ee0360e11b81526004016102779190613e77565b50505050612062565b611fe5826001600160f81b0319610855565b15611b0c576000611ff96014828789613a6d565b61200291613a97565b60601c9050366000612017876014818b613a6d565b9092509050612027846000610855565b1561203d57612037838383613282565b5061205e565b61204b84600160f81b610855565b15611ae95761205b8383836132b6565b50505b5050505b5050611093565b604051631057c74d60e11b81526000906001600160a01b038316906320af8e9a9061209c90339085903690600401613ebb565b6000604051808303816000875af11580156120bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120e39190810190613ee0565b905084600881901b6120f982600160f81b610855565b1561214c5785358601602081019035612113836000610855565b15612128576121228282612fc5565b50612145565b61213683600160f81b610855565b156118df57612122828261309d565b5050612253565b612157826000610855565b156121c45760008036600061216c8a8a6131ca565b935093509350935061218285600060f81b610855565b15612199576121938484848461321b565b506121bb565b6121a785600160f81b610855565b15611faf576121b884848484613251565b50505b50505050612253565b6121d6826001600160f81b0319610855565b15611b0c5760006121ea601482888a613a6d565b6121f391613a97565b60601c9050366000612208886014818c613a6d565b9092509050612218846000610855565b1561222e57612228838383613282565b5061224f565b61223c84600160f81b610855565b15611ae95761224c8383836132b6565b50505b5050505b5050604051630b9dfbed60e11b81526001600160a01b0383169063173bf7da906122819084906004016138f1565b6020604051808303816000875af11580156122a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c49190613f4d565b6122e15760405163546b3e6360e01b815260040160405180910390fd5b5050505050565b60606000806122f5610831565b600101905061127881868661267c565b60408051606080820183526000808352602083015291810191909152612329610831565b6001600160e01b0319831660009081526002919091016020908152604091829020825160608101845281546001600160a01b0381168252600160a01b900460f81b6001600160f81b03191681840152600182018054855181860281018601875281815292959394938601938301828280156123cd57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116123af575b5050505050815250509050919050565b6000600182036123ef57506001919050565b600282036123ff57506001919050565b6003820361240f57506001919050565b6004820361241f57506001919050565b506000919050565b919050565b6000806109d984846132e5565b600080612444610831565b90506124508184612f8b565b9392505050565b600080612462610831565b60010190506124508184612f8b565b60008061247c610831565b6001600160e01b0319949094166000908152600290940160205250506040909120546001600160a01b0390811691161490565b6000816001600160a01b03166124d16000805160206140988339815191525490565b6001600160a01b03161492915050565b6001600160a01b0381166000908152600460205260408120805460ff191690558054908061250e83613f6f565b919050555050565b6000805b60008381526006602052604090206001015481101561258457600083815260066020526040902060010180543391908390811061255957612559613e8c565b6000918252602090912001546001600160a01b03160361257c5750600192915050565b60010161251a565b50600092915050565b6001546000828152600660205260408120600201549091610258916125b5906103e890613f86565b6125bf9190613f9d565b101592915050565b6001600160a01b0381166000908152600460205260408120805460ff191660011790558054908061250e83613cb5565b6000612601610831565b905061260f8160010161334b565b6126188161334b565b50565b6001600160a01b0381166000908152600560205260408120805460ff19169055600180549161264983613f6f565b9190505550612670600254600090815260066020526040902054600160a01b900460ff1690565b61261857612618611530565b606060006001600160a01b0384166001148015906126a1575061269f8585612f8b565b155b156126ca57604051637c84ecfb60e01b81526001600160a01b0385166004820152602401610277565b826000036126eb5760405163f725081760e01b815260040160405180910390fd5b826001600160401b0381111561270357612703613cce565b60405190808252806020026020018201604052801561272c578160200160208202803683370190505b506001600160a01b03808616600090815260208890526040812054929450911691505b6001600160a01b0382161580159061277157506001600160a01b038216600114155b801561277c57508381105b156127d6578183828151811061279457612794613e8c565b6001600160a01b0392831660209182029290920181019190915292811660009081529287905260409092205490911690806127ce81613cb5565b91505061274f565b6001600160a01b0382166001148015906127f05750600081115b1561281c5782612801600183613fbf565b8151811061281157612811613e8c565b602002602001015191505b80835250935093915050565b6000612832610831565b905061283e81856133a8565b6040516306d61fe760e41b81526001600160a01b03851690636d61fe709061286c9086908690600401613fd2565b600060405180830381600087803b15801561288657600080fd5b505af115801561289a573d6000803e3d6000fd5b5050505050505050565b60006128ae610831565b600101905061283e81856133a8565b600082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525060408051818a01356020818102601f01601f19168301909352969750893596918a018035965090945060609350915b8181101561293f57602081028381016060013590860152600101612920565b50506040810135602081830103356060818152818385016020830137935061297592508591506001600160f81b03199050610855565b1561299357604051633accf26360e11b815260040160405180910390fd5b61299c8461347e565b156129e95760405162461bcd60e51b815260206004820152601e60248201527f46756e6374696f6e2073656c6563746f7220616c7265616479207573656400006044820152606401610277565b604080516060810182526001600160a01b038a1681526001600160f81b031985166020820152908101839052612a1d610831565b6001600160e01b0319861660009081526002919091016020908152604091829020835181548584015160f81c600160a01b026001600160a81b03199091166001600160a01b0390921691909117178155918301518051612a83926001850192019061358d565b50506040516306d61fe760e41b81526001600160a01b038a169150636d61fe7090612ab29084906004016138f1565b600060405180830381600087803b158015612acc57600080fd5b505af1158015612ae0573d6000803e3d6000fd5b505050505050505050505050565b6000612b066000805160206140988339815191525490565b90506001600160a01b03811615612b3b5760405163741cbe0360e01b81526001600160a01b0382166004820152602401610277565b61283e8460008051602061409883398151915255565b6001600160a01b0381166000908152600560205260408120805460ff1916600190811790915580549161264983613cb5565b6000612b8d610831565b9050600080612b9e84860186613fe6565b9092509050612bae8383886134b8565b604051638a91b0e360e01b81526001600160a01b03871690638a91b0e390612bda9084906004016138f1565b600060405180830381600087803b158015612bf457600080fd5b505af1158015612c08573d6000803e3d6000fd5b50505050505050505050565b6000612c1e610831565b6001019050600080612b9e84860186613fe6565b6000612c416004828486613a6d565b612c4a91614035565b90506000612c5b8360048187613a6d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350612c9e925084915061347e9050565b612cea5760405162461bcd60e51b815260206004820152601a60248201527f46756e6374696f6e2073656c6563746f72206e6f7420757365640000000000006044820152606401610277565b6000612cf4610831565b6001600160e01b0319841660009081526002919091016020908152604091829020825160608101845281546001600160a01b0381168252600160a01b900460f81b6001600160f81b0319168184015260018201805485518186028101860187528181529295939493860193830182828015612d9857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612d7a575b5050505050815250509050856001600160a01b031681600001516001600160a01b031614612e1b5760405162461bcd60e51b815260206004820152602a60248201527f46756e6374696f6e2073656c6563746f72206e6f74207573656420627920746860448201526934b9903430b7323632b960b11b6064820152608401610277565b6020810151612e32816001600160f81b0319610855565b15612e5057604051633accf26360e11b815260040160405180910390fd5b60408051600080825260808201835260208201818152928201526060810181905290612e7a610831565b6001600160e01b0319871660009081526002919091016020908152604091829020835181548584015160f81c600160a01b026001600160a81b03199091166001600160a01b0390921691909117178155918301518051612ee0926001850192019061358d565b5050604051638a91b0e360e01b81526001600160a01b038a169150638a91b0e390612ab29087906004016138f1565b612f26600060008051602061409883398151915255565b604051638a91b0e360e01b81526001600160a01b03841690638a91b0e390612f549085908590600401613fd2565b600060405180830381600087803b158015612f6e57600080fd5b505af1158015612f82573d6000803e3d6000fd5b50505050505050565b600060016001600160a01b038316148015906124505750506001600160a01b03908116600090815260209290925260409091205416151590565b606081806001600160401b03811115612fe057612fe0613cce565b60405190808252806020026020018201604052801561301357816020015b6060815260200190600190039081612ffe5790505b50915060005b81811015613095573685858381811061303457613034613e8c565b90506020028101906130469190614063565b905061306f6130586020830183613627565b602083013561306a6040850185613e0e565b61321b565b84838151811061308157613081613e8c565b602090810291909101015250600101613019565b505092915050565b606081806001600160401b038111156130b8576130b8613cce565b6040519080825280602002602001820160405280156130eb57816020015b60608152602001906001900390816130d65790505b50915060005b81811015613095573685858381811061310c5761310c613e8c565b905060200281019061311e9190614063565b905060006131496131326020840184613627565b60208401356131446040860186613e0e565b613251565b86858151811061315b5761315b613e8c565b60209081029190910101529050806131c0577fe723f28f104e46b47fd3531f3608374ac226bcf3ddda334a23a266453e0efdb7838685815181106131a1576131a1613e8c565b60200260200101516040516131b7929190613ea2565b60405180910390a15b50506001016130f1565b60008036816131dc6014828789613a6d565b6131e591613a97565b60601c93506131f8603460148789613a6d565b61320191614079565b92506132108560348189613a6d565b949793965094505050565b60405181838237600038838387895af1613238573d6000823e3d81fd5b3d8152602081013d6000823e3d01604052949350505050565b604051600090828482376000388483888a5af191503d8152602081013d6000823e3d81016040525094509492505050565b604051818382376000388383875af461329e573d6000823e3d81fd5b3d8152602081013d6000823e3d016040529392505050565b604051600090828482376000388483885af491503d8152602081013d6000823e3d810160405250935093915050565b81516000908190815b8181101561333d57846001600160a01b031686828151811061331257613312613e8c565b60200260200101516001600160a01b0316036133355792506001915061127e9050565b6001016132ee565b506000958695509350505050565b60016000908152602082905260409020546001600160a01b031615613383576040516329e42f3360e11b815260040160405180910390fd5b60016000818152602092909252604090912080546001600160a01b0319169091179055565b6001600160a01b03811615806133c757506001600160a01b0381166001145b156133f057604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610277565b6001600160a01b03818116600090815260208490526040902054161561343457604051631034f46960e21b81526001600160a01b0382166004820152602401610277565b60016000818152602093909352604080842080546001600160a01b039485168087529286208054959091166001600160a01b03199586161790559190935280549091169091179055565b600080613489610831565b6001600160e01b03199093166000908152600293909301602052505060409020546001600160a01b0316151590565b6001600160a01b03811615806134d757506001600160a01b0381166001145b1561350057604051637c84ecfb60e01b81526001600160a01b0383166004820152602401610277565b6001600160a01b0382811660009081526020859052604090205481169082161461354857604051637c84ecfb60e01b81526001600160a01b0382166004820152602401610277565b6001600160a01b0390811660008181526020949094526040808520805494841686529085208054949093166001600160a01b0319948516179092559092528154169055565b8280548282559060005260206000209081019282156135e2579160200282015b828111156135e257825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906135ad565b506135ee9291506135f2565b5090565b5b808211156135ee57600081556001016135f3565b6001600160a01b038116811461261857600080fd5b803561242781613607565b60006020828403121561363957600080fd5b813561245081613607565b60008083601f84011261365657600080fd5b5081356001600160401b0381111561366d57600080fd5b60208301915083602082850101111561127e57600080fd5b6000806000806060858703121561369b57600080fd5b8435935060208501356136ad81613607565b925060408501356001600160401b038111156136c857600080fd5b6136d487828801613644565b95989497509550505050565b6000806000604084860312156136f557600080fd5b8335925060208401356001600160401b0381111561371257600080fd5b61371e86828701613644565b9497909650939450505050565b6000610120828403121561373e57600080fd5b50919050565b60008060006060848603121561375957600080fd5b83356001600160401b0381111561376f57600080fd5b61377b8682870161372b565b9660208601359650604090950135949350505050565b600080602083850312156137a457600080fd5b82356001600160401b038111156137ba57600080fd5b6137c685828601613644565b90969095509350505050565b6000602082840312156137e457600080fd5b81356001600160401b038111156137fa57600080fd5b6109048482850161372b565b6000806040838503121561381957600080fd5b823561382481613607565b946020939093013593505050565b60008151808452602080850194506020840160005b8381101561386c5781516001600160a01b031687529582019590820190600101613847565b509495945050505050565b60408152600061388a6040830185613832565b905060018060a01b03831660208301529392505050565b60005b838110156138bc5781810151838201526020016138a4565b50506000910152565b600081518084526138dd8160208601602086016138a1565b601f01601f19169290920160200192915050565b60208152600061245060208301846138c5565b60006020828403121561391657600080fd5b5035919050565b60018060a01b038616815284602082015260a06040820152600061394460a0830186613832565b931515606083015250608001529392505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156139af57603f1988860301845261399d8583516138c5565b94509285019290850190600101613981565b5092979650505050505050565b6001600160e01b03198116811461261857600080fd5b6000602082840312156139e457600080fd5b8135612450816139bc565b602080825282516001600160a01b0390811683830152838201516001600160f81b031916604080850191909152840151606080850152805160808501819052600093929183019190849060a08701905b80831015613a6157845184168252938501936001929092019190850190613a3f565b50979650505050505050565b60008085851115613a7d57600080fd5b83861115613a8a57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff1981358181169160148510156130955760149490940360031b84901b1690921692915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b0385168152836020820152606060408201526000613b1b606083018486613aca565b9695505050505050565b600060208284031215613b3757600080fd5b8151612450816139bc565b6000808335601e19843603018112613b5957600080fd5b83016020810192503590506001600160401b03811115613b7857600080fd5b80360382131561127e57600080fd5b60408152613ba860408201613b9b8561361c565b6001600160a01b03169052565b602083013560608201526000613bc16040850185613b42565b610120806080860152613bd961016086018385613aca565b9250613be86060880188613b42565b9250603f19808786030160a0880152613c02858584613aca565b9450608089013560c088015260a089013560e0880152610100935060c089013584880152613c3360e08a018a613b42565b9250818887030184890152613c49868483613aca565b955050613c58848a018a613b42565b9450925080878603016101408801525050613c74838383613aca565b93505050508260208301529392505050565b600060208284031215613c9857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600060018201613cc757613cc7613c9f565b5060010190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613d0c57613d0c613cce565b604052919050565b60006001600160401b03821115613d2d57613d2d613cce565b50601f01601f191660200190565b600082601f830112613d4c57600080fd5b8135613d5f613d5a82613d14565b613ce4565b818152846020838601011115613d7457600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613da657600080fd5b8335613db181613607565b92506020840135613dc181613607565b915060408401356001600160401b03811115613ddc57600080fd5b613de886828701613d3b565b9150509250925092565b60008251613e048184602087016138a1565b9190910192915050565b6000808335601e19843603018112613e2557600080fd5b8301803591506001600160401b03821115613e3f57600080fd5b60200191503681900382131561127e57600080fd5b8183823760009101908152919050565b8082018082111561086657610866613c9f565b6001600160f81b031991909116815260200190565b634e487b7160e01b600052603260045260246000fd5b82815260406020820152600061090460408301846138c5565b6001600160a01b03841681526040602082018190526000906109d99083018486613aca565b600060208284031215613ef257600080fd5b81516001600160401b03811115613f0857600080fd5b8201601f81018413613f1957600080fd5b8051613f27613d5a82613d14565b818152856020838501011115613f3c57600080fd5b6109d98260208301602086016138a1565b600060208284031215613f5f57600080fd5b8151801515811461245057600080fd5b600081613f7e57613f7e613c9f565b506000190190565b808202811582820484141761086657610866613c9f565b600082613fba57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561086657610866613c9f565b602081526000610904602083018486613aca565b60008060408385031215613ff957600080fd5b823561400481613607565b915060208301356001600160401b0381111561401f57600080fd5b61402b85828601613d3b565b9150509250929050565b6001600160e01b031981358181169160048510156130955760049490940360031b84901b1690921692915050565b60008235605e19833603018112613e0457600080fd5b8035602083101561086657600019602084900360031b1b169291505056fe36e05829dd1b9a4411d96a3549582172d7f071c1c0db5c573fcf94eb28431608a164736f6c6343000817000a" export const ETHERSPOT_MULTIPLE_OWNER_ECDSA_VALIDATOR_CREATECALL: Hex = - "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a73608060405234801561001057600080fd5b50610948806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80636d61fe70146100675780638a91b0e31461007c578063970032031461008f578063d60b347f146100b5578063ecd05961146100f1578063f551e2ee14610105575b600080fd5b61007a6100753660046106aa565b610131565b005b61007a61008a3660046106aa565b610187565b6100a261009d3660046106ec565b6101d4565b6040519081526020015b60405180910390f35b6100e16100c3366004610753565b6001600160a01b031660009081526020819052604090205460ff1690565b60405190151581526020016100ac565b6100e16100ff366004610775565b60011490565b61011861011336600461078e565b6103ad565b6040516001600160e01b031990911681526020016100ac565b3360009081526020819052604090205460ff1615610169576040516393360fbf60e01b81523360048201526024015b60405180910390fd5b5050336000908152602081905260409020805460ff19166001179055565b3360009081526020819052604090205460ff166101b95760405163f91bd6f160e01b8152336004820152602401610160565b5050336000908152602081905260409020805460ff19169055565b600080610206836020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9050600061025861021b6101008701876107e8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061057f9050565b90506001600160a01b03811615806102d557506040516317aa5fb760e11b81526001600160a01b03821660048201523390632f54bf6e90602401602060405180830381865afa1580156102af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d3919061082f565b155b156102e5576001925050506103a7565b60006102f460608701876107e8565b61030391600491600091610851565b61030c9161087b565b9050600061031d60608801886107e8565b600481811061032e5761032e6108ab565b909101356001600160f81b0319169150369050600061035060608a018a6107e8565b61035e916024908290610851565b9092509050600160f81b6001600160f81b03198416146103a0576001600160f81b031983166103a0576000803660006103978686610610565b50505050505050505b5050505050505b92915050565b6000806103f08585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061057f92505050565b6040516317aa5fb760e11b81526001600160a01b03821660048201529091503390632f54bf6e90602401602060405180830381865afa158015610437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045b919061082f565b156104705750630b135d3f60e11b9050610577565b60006104a1866020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b905060006104e58287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061057f92505050565b6040516317aa5fb760e11b81526001600160a01b03821660048201529091503390632f54bf6e90602401602060405180830381865afa15801561052c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610550919061082f565b156105685750630b135d3f60e11b9250610577915050565b506001600160e01b0319925050505b949350505050565b60405160019083600052602083015160405260408351036105bb57604083015160ff81901c601b016020526001600160ff1b03166060526105e1565b60418351036105dc57606083015160001a60205260408301516060526105e1565b600091505b6020600160806000855afa5191503d61060257638baa579f6000526004601cfd5b600060605260405292915050565b60008036816106226014828789610851565b61062b916108c1565b60601c935061063e603460148789610851565b610647916108f4565b92506106568560348189610851565b949793965094505050565b60008083601f84011261067357600080fd5b50813567ffffffffffffffff81111561068b57600080fd5b6020830191508360208285010111156106a357600080fd5b9250929050565b600080602083850312156106bd57600080fd5b823567ffffffffffffffff8111156106d457600080fd5b6106e085828601610661565b90969095509350505050565b600080604083850312156106ff57600080fd5b823567ffffffffffffffff81111561071657600080fd5b8301610120818603121561072957600080fd5b946020939093013593505050565b80356001600160a01b038116811461074e57600080fd5b919050565b60006020828403121561076557600080fd5b61076e82610737565b9392505050565b60006020828403121561078757600080fd5b5035919050565b600080600080606085870312156107a457600080fd5b6107ad85610737565b935060208501359250604085013567ffffffffffffffff8111156107d057600080fd5b6107dc87828801610661565b95989497509550505050565b6000808335601e198436030181126107ff57600080fd5b83018035915067ffffffffffffffff82111561081a57600080fd5b6020019150368190038213156106a357600080fd5b60006020828403121561084157600080fd5b8151801515811461076e57600080fd5b6000808585111561086157600080fd5b8386111561086e57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156108a35780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052603260045260246000fd5b6bffffffffffffffffffffffff1981358181169160148510156108a35760149490940360031b84901b1690921692915050565b803560208310156103a757600019602084900360031b1b169291505056fea2646970667358221220cf50a432d078d95e4c4634ecba8b551dafcfbcd111305e547d4efbad316f8e9264736f6c63430008170033" + "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a73608060405234801561001057600080fd5b5061091f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80636d61fe70146100675780638a91b0e31461007c578063970032031461008f578063d60b347f146100b5578063ecd05961146100f1578063f551e2ee14610105575b600080fd5b61007a6100753660046106aa565b610131565b005b61007a61008a3660046106aa565b610187565b6100a261009d3660046106ec565b6101d4565b6040519081526020015b60405180910390f35b6100e16100c3366004610753565b6001600160a01b031660009081526020819052604090205460ff1690565b60405190151581526020016100ac565b6100e16100ff366004610775565b60011490565b61011861011336600461078e565b6103ad565b6040516001600160e01b031990911681526020016100ac565b3360009081526020819052604090205460ff1615610169576040516393360fbf60e01b81523360048201526024015b60405180910390fd5b5050336000908152602081905260409020805460ff19166001179055565b3360009081526020819052604090205460ff166101b95760405163f91bd6f160e01b8152336004820152602401610160565b5050336000908152602081905260409020805460ff19169055565b600080610206836020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b9050600061025861021b6101008701876107e8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250869392505061057f9050565b90506001600160a01b03811615806102d557506040516317aa5fb760e11b81526001600160a01b03821660048201523390632f54bf6e90602401602060405180830381865afa1580156102af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d3919061082f565b155b156102e5576001925050506103a7565b60006102f460608701876107e8565b61030391600491600091610851565b61030c9161087b565b9050600061031d60608801886107e8565b600481811061032e5761032e6108ab565b909101356001600160f81b0319169150369050600061035060608a018a6107e8565b61035e916024908290610851565b9092509050600160f81b6001600160f81b03198416146103a0576001600160f81b031983166103a0576000803660006103978686610610565b50505050505050505b5050505050505b92915050565b6000806103f08585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061057f92505050565b6040516317aa5fb760e11b81526001600160a01b03821660048201529091503390632f54bf6e90602401602060405180830381865afa158015610437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045b919061082f565b156104705750630b135d3f60e11b9050610577565b60006104a1866020527b19457468657265756d205369676e6564204d6573736167653a0a3332600052603c60042090565b905060006104e58287878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061057f92505050565b6040516317aa5fb760e11b81526001600160a01b03821660048201529091503390632f54bf6e90602401602060405180830381865afa15801561052c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610550919061082f565b156105685750630b135d3f60e11b9250610577915050565b506001600160e01b0319925050505b949350505050565b60405160019083600052602083015160405260408351036105bb57604083015160ff81901c601b016020526001600160ff1b03166060526105e1565b60418351036105dc57606083015160001a60205260408301516060526105e1565b600091505b6020600160806000855afa5191503d61060257638baa579f6000526004601cfd5b600060605260405292915050565b60008036816106226014828789610851565b61062b916108c1565b60601c935061063e603460148789610851565b610647916108f4565b92506106568560348189610851565b949793965094505050565b60008083601f84011261067357600080fd5b50813567ffffffffffffffff81111561068b57600080fd5b6020830191508360208285010111156106a357600080fd5b9250929050565b600080602083850312156106bd57600080fd5b823567ffffffffffffffff8111156106d457600080fd5b6106e085828601610661565b90969095509350505050565b600080604083850312156106ff57600080fd5b823567ffffffffffffffff81111561071657600080fd5b8301610120818603121561072957600080fd5b946020939093013593505050565b80356001600160a01b038116811461074e57600080fd5b919050565b60006020828403121561076557600080fd5b61076e82610737565b9392505050565b60006020828403121561078757600080fd5b5035919050565b600080600080606085870312156107a457600080fd5b6107ad85610737565b935060208501359250604085013567ffffffffffffffff8111156107d057600080fd5b6107dc87828801610661565b95989497509550505050565b6000808335601e198436030181126107ff57600080fd5b83018035915067ffffffffffffffff82111561081a57600080fd5b6020019150368190038213156106a357600080fd5b60006020828403121561084157600080fd5b8151801515811461076e57600080fd5b6000808585111561086157600080fd5b8386111561086e57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156108a35780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052603260045260246000fd5b6bffffffffffffffffffffffff1981358181169160148510156108a35760149490940360031b84901b1690921692915050565b803560208310156103a757600019602084900360031b1b169291505056fea164736f6c6343000817000a" export const ETHERSPOT_WALLET_FACTORY_CREATECALL: Hex = - "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a7360a060405234801561001057600080fd5b50604051610b0e380380610b0e83398101604081905261002f916100a4565b806100398161004c565b50506001600160a01b03166080526100d7565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b80516001600160a01b038116811461009f57600080fd5b919050565b600080604083850312156100b757600080fd5b6100c083610088565b91506100ce60208401610088565b90509250929050565b608051610a0e6101006000396000818161016c0152818161050401526105b30152610a0e6000f3fe6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063f04e283e11610059578063f04e283e14610207578063f2fde38b1461021a578063f8a593701461022d578063fee81cf41461024057600080fd5b80638da5cb5b146101ae578063b36f9705146101c7578063d959fd0e146101e757600080fd5b806354d1f13d116100bb57806354d1f13d1461011f57806356c717f5146101275780635c60da1b1461015a578063715018a6146101a657600080fd5b806325692962146100e257806345171159146100ec5780634a1ce599146100ff575b600080fd5b6100ea610273565b005b6100ea6100fa36600461087f565b6102c3565b34801561010b57600080fd5b506100ea61011a3660046108c1565b610356565b6100ea6103db565b34801561013357600080fd5b506101476101423660046108e5565b610417565b6040519081526020015b60405180910390f35b34801561016657600080fd5b5061018e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610151565b6100ea61044d565b3480156101ba57600080fd5b50638b78c6d8195461018e565b3480156101d357600080fd5b506100ea6101e2366004610961565b610461565b3480156101f357600080fd5b5061018e6102023660046108e5565b6104ef565b6100ea6102153660046108c1565b610533565b6100ea6102283660046108c1565b610573565b61018e61023b3660046108e5565b61059a565b34801561024c57600080fd5b5061014761025b3660046108c1565b63389a75e1600c908152600091909152602090205490565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6102cb610682565b6001600160a01b0382166102f2576040516301650c7760e51b815260040160405180910390fd5b604051621cb65b60e51b815263ffffffff821660048201526001600160a01b03831690630396cb609034906024016000604051808303818588803b15801561033957600080fd5b505af115801561034d573d6000803e3d6000fd5b50505050505050565b61035e610682565b6001600160a01b038116610385576040516301650c7760e51b815260040160405180910390fd5b806001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103c057600080fd5b505af11580156103d4573d6000803e3d6000fd5b5050505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b600083838360405160200161042e9392919061098f565b6040516020818303038152906040528051906020012090509392505050565b610455610682565b61045f600061069d565b565b610469610682565b6001600160a01b038216610490576040516301650c7760e51b815260040160405180910390fd5b60405163611d2e7560e11b81526001600160a01b03828116600483015283169063c23a5cea90602401600060405180830381600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050505050565b6000806104fd858585610417565b905061052a7f000000000000000000000000000000000000000000000000000000000000000082306106db565b95945050505050565b61053b610682565b63389a75e1600c52806000526020600c20805442111561056357636f5e88186000526004601cfd5b600090556105708161069d565b50565b61057b610682565b8060601b61059157637448fbae6000526004601cfd5b6105708161069d565b6000806105a8858585610417565b90506000806105d8347f000000000000000000000000000000000000000000000000000000000000000085610764565b915091508161067857604051634b6a141960e01b81526001600160a01b03821690634b6a14199061060f90899089906004016109a9565b600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b50506040513392506001600160a01b03841691507f1637bbe505dfa57dd508725e4a807eafc818ed7f588e2bae3e57f195ea53ad7090600090a35b9695505050505050565b638b78c6d81954331461045f576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60008061075785604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20768352616009602052601e9390935268603d3d8160223d3973600a52605f6021209152600090915290565b905061052a818585610848565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b6108105783605f602188f591508161080b5763301164256000526004601cfd5b610836565b6001925085156108365760003860003889865af16108365763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6001600160a01b038116811461057057600080fd5b6000806040838503121561089257600080fd5b823561089d8161086a565b9150602083013563ffffffff811681146108b657600080fd5b809150509250929050565b6000602082840312156108d357600080fd5b81356108de8161086a565b9392505050565b6000806000604084860312156108fa57600080fd5b83359250602084013567ffffffffffffffff8082111561091957600080fd5b818601915086601f83011261092d57600080fd5b81358181111561093c57600080fd5b87602082850101111561094e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561097457600080fd5b823561097f8161086a565b915060208301356108b68161086a565b838152818360208301376000910160200190815292915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea26469706673582212204c4bf9d68187fb7cd2fde5d6423e331a1970029a223f4658090d1ff58ff83f7964736f6c63430008170033000000000000000000000000202a5598bdba2ce62bffa13ecccb04969719fad900000000000000000000000009fd4f6088f2025427ab1e89257a44747081ed59" + "0x4d6f64756c6172457468657273706f7457616c6c65743a437265617465323a7360a060405234801561001057600080fd5b50604051610ae5380380610ae583398101604081905261002f916100a4565b806100398161004c565b50506001600160a01b03166080526100d7565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b80516001600160a01b038116811461009f57600080fd5b919050565b600080604083850312156100b757600080fd5b6100c083610088565b91506100ce60208401610088565b90509250929050565b6080516109e56101006000396000818161016c0152818161050401526105b301526109e56000f3fe6080604052600436106100dd5760003560e01c80638da5cb5b1161007f578063f04e283e11610059578063f04e283e14610207578063f2fde38b1461021a578063f8a593701461022d578063fee81cf41461024057600080fd5b80638da5cb5b146101ae578063b36f9705146101c7578063d959fd0e146101e757600080fd5b806354d1f13d116100bb57806354d1f13d1461011f57806356c717f5146101275780635c60da1b1461015a578063715018a6146101a657600080fd5b806325692962146100e257806345171159146100ec5780634a1ce599146100ff575b600080fd5b6100ea610273565b005b6100ea6100fa36600461087f565b6102c3565b34801561010b57600080fd5b506100ea61011a3660046108c1565b610356565b6100ea6103db565b34801561013357600080fd5b506101476101423660046108e5565b610417565b6040519081526020015b60405180910390f35b34801561016657600080fd5b5061018e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610151565b6100ea61044d565b3480156101ba57600080fd5b50638b78c6d8195461018e565b3480156101d357600080fd5b506100ea6101e2366004610961565b610461565b3480156101f357600080fd5b5061018e6102023660046108e5565b6104ef565b6100ea6102153660046108c1565b610533565b6100ea6102283660046108c1565b610573565b61018e61023b3660046108e5565b61059a565b34801561024c57600080fd5b5061014761025b3660046108c1565b63389a75e1600c908152600091909152602090205490565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6102cb610682565b6001600160a01b0382166102f2576040516301650c7760e51b815260040160405180910390fd5b604051621cb65b60e51b815263ffffffff821660048201526001600160a01b03831690630396cb609034906024016000604051808303818588803b15801561033957600080fd5b505af115801561034d573d6000803e3d6000fd5b50505050505050565b61035e610682565b6001600160a01b038116610385576040516301650c7760e51b815260040160405180910390fd5b806001600160a01b031663bb9fe6bf6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156103c057600080fd5b505af11580156103d4573d6000803e3d6000fd5b5050505050565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b600083838360405160200161042e9392919061098f565b6040516020818303038152906040528051906020012090509392505050565b610455610682565b61045f600061069d565b565b610469610682565b6001600160a01b038216610490576040516301650c7760e51b815260040160405180910390fd5b60405163611d2e7560e11b81526001600160a01b03828116600483015283169063c23a5cea90602401600060405180830381600087803b1580156104d357600080fd5b505af11580156104e7573d6000803e3d6000fd5b505050505050565b6000806104fd858585610417565b905061052a7f000000000000000000000000000000000000000000000000000000000000000082306106db565b95945050505050565b61053b610682565b63389a75e1600c52806000526020600c20805442111561056357636f5e88186000526004601cfd5b600090556105708161069d565b50565b61057b610682565b8060601b61059157637448fbae6000526004601cfd5b6105708161069d565b6000806105a8858585610417565b90506000806105d8347f000000000000000000000000000000000000000000000000000000000000000085610764565b915091508161067857604051634b6a141960e01b81526001600160a01b03821690634b6a14199061060f90899089906004016109a9565b600060405180830381600087803b15801561062957600080fd5b505af115801561063d573d6000803e3d6000fd5b50506040513392506001600160a01b03841691507f1637bbe505dfa57dd508725e4a807eafc818ed7f588e2bae3e57f195ea53ad7090600090a35b9695505050505050565b638b78c6d81954331461045f576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60008061075785604080517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f360609081527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e20768352616009602052601e9390935268603d3d8160223d3973600a52605f6021209152600090915290565b905061052a818585610848565b6000806040517fcc3735a920a3ca505d382bbc545af43d6000803e6038573d6000fd5b3d6000f36060527f5155f3363d3d373d3d363d7f360894a13ba1a3210667c828492db98dca3e207660405261600960205284601e5268603d3d8160223d3973600a52605f60212060358201523060581b815260ff8153836015820152605581209150813b6108105783605f602188f591508161080b5763301164256000526004601cfd5b610836565b6001925085156108365760003860003889865af16108365763b12d13eb6000526004601cfd5b80604052506000606052935093915050565b600060ff60005350603592835260601b60015260155260556000908120915290565b6001600160a01b038116811461057057600080fd5b6000806040838503121561089257600080fd5b823561089d8161086a565b9150602083013563ffffffff811681146108b657600080fd5b809150509250929050565b6000602082840312156108d357600080fd5b81356108de8161086a565b9392505050565b6000806000604084860312156108fa57600080fd5b83359250602084013567ffffffffffffffff8082111561091957600080fd5b818601915086601f83011261092d57600080fd5b81358181111561093c57600080fd5b87602082850101111561094e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561097457600080fd5b823561097f8161086a565b915060208301356108b68161086a565b838152818360208301376000910160200190815292915050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f1916010191905056fea164736f6c6343000817000a000000000000000000000000339eab59e54fe25125acec3225254a0cbd305a7b00000000000000000000000009fd4f6088f2025427ab1e89257a44747081ed59" diff --git a/packages/permissionless-test/mock-aa-infra/alto/index.ts b/packages/permissionless-test/mock-aa-infra/alto/index.ts index a500a8ae..8d588f83 100644 --- a/packages/permissionless-test/mock-aa-infra/alto/index.ts +++ b/packages/permissionless-test/mock-aa-infra/alto/index.ts @@ -767,10 +767,10 @@ export const setupContracts = async (rpc: string) => { "0x3143E1C0Af0Cdc153423863923Cf4e3818e34Daa", // Trust TokenReceiverFacet "0xCe36b85d12D81cd619C745c7717f3396E184Ac7C", // Trust DiamondLoupeFacet "0x2e7f1dAe1F3799d20f5c31bEFdc7A620f664728D", // Trust DefaultFallbackHandler - "0x93FB56A4a0B7160fbf8903d251Cc7A3fb9bA0933", // Etherspot Factory - "0x1baCB2F1ef4fD02f02e32cCF70888D9Caeb5f066", // Etherspot Bootstrap - "0x7aCEE15c9FFc1e8f287C26E0f4C8244A0729F557", // Etherspot Multiple Owner ECDSA Validator - "0x202A5598bDba2cE62bFfA13EcccB04969719Fad9", // Etherspot implementation + "0x2A40091f044e48DEB5C0FCbc442E443F3341B451", // Etherspot Factory + "0x0D5154d7751b6e2fDaa06F0cC9B400549394C8AA", // Etherspot Bootstrap + "0x0740Ed7c11b9da33d9C80Bd76b826e4E90CC1906", // Etherspot Multiple Owner ECDSA Validator + "0x339eAB59e54fE25125AceC3225254a0cBD305A7b", // Etherspot implementation "0x4Fd8d57b94966982B62e9588C27B4171B55E8354", // ERC7579 Test Module "0x85e23b94e7F5E9cC1fF78BCe78cfb15B81f0DF00", // Thirdweb factory 0.6 "0x4be0ddfebca9a5a4a617dee4dece99e7c862dceb", // Thirdweb factory 0.7 diff --git a/packages/permissionless/accounts/etherspot/constants.ts b/packages/permissionless/accounts/etherspot/constants.ts index 92b4139b..4caa3948 100644 --- a/packages/permissionless/accounts/etherspot/constants.ts +++ b/packages/permissionless/accounts/etherspot/constants.ts @@ -21,7 +21,7 @@ export type NetworkAddresses = { } export const DEFAULT_CONTRACT_ADDRESS: NetworkAddresses = { - metaFactoryAddress: "0x93FB56A4a0B7160fbf8903d251Cc7A3fb9bA0933", // modularEtherspotWalletFactory - bootstrapAddress: "0x1baCB2F1ef4fD02f02e32cCF70888D9Caeb5f066", - validatorAddress: "0x7aCEE15c9FFc1e8f287C26E0f4C8244A0729F557" // multipleOwnerECDSAValidator + metaFactoryAddress: "0x2A40091f044e48DEB5C0FCbc442E443F3341B451", // modularEtherspotWalletFactory + bootstrapAddress: "0x0D5154d7751b6e2fDaa06F0cC9B400549394C8AA", + validatorAddress: "0x0740Ed7c11b9da33d9C80Bd76b826e4E90CC1906" // multipleOwnerECDSAValidator }