bsc/core/systemcontracts/feynman/chapel/TokenHubContract

1 line
42 KiB
Plaintext

6080604052600436106104405760003560e01c80639509b98011610234578063c81b16621161012e578063ebf71d53116100b6578063fb063e8f1161007a578063fb063e8f146110d3578063fc1a598f146110e8578063fc3e590814610cca578063fd6a68791461111b578063ff9c0027146108a057610488565b8063ebf71d531461106a578063f01484721461107f578063f1fad10414611094578063f9a2bbc7146110a9578063fa9e9159146110be57610488565b8063dc927faf116100fd578063dc927faf14610fce578063df8079e914610fe3578063e04c83a714610ff8578063e1c7392a14611022578063e8f35cea1461103757610488565b8063c81b166214610ef9578063c8509d8114610f0e578063cf41984414610f93578063d9e6dae91461080d57610488565b8063aa7415f5116101bc578063b99328c511610180578063b99328c514610e30578063b9fd21e314610e69578063ba35ead614610e7e578063bbface1f14610e93578063bd46646114610ec657610488565b8063aa7415f514610cdf578063aa82dce114610d26578063aad5606314610d3b578063ab51bb9614610d50578063ac43175114610d6557610488565b80639dc09262116102035780639dc0926214610c76578063a1a11bf514610c8b578063a496fba214610ca0578063a78abc1614610cb5578063a7c9f02d14610cca57610488565b80639509b98014610bda57806396713da914610c135780639a854bbd14610c285780639a99b4f014610c3d57610488565b806359b9278911610345578063727be1f8116102cd578063831d65d111610291578063831d65d114610ac85780638525db0314610b4d5780638b87b21f146107625780638eff336c14610b8657806393ab703f14610bc557610488565b8063727be1f814610a2057806375d47a0a14610a4a5780637942fd0514610a5f578063799758b914610a745780637e434d5414610ab357610488565b80636e056520116103145780636e056520146108b55780636e47b482146109e157806370fd5bad146108a0578063718a8aa8146109f657806371d3086314610a0b57610488565b806359b92789146108615780635d499b1b1461088b578063613684751461080d57806366dea52a146108a057610488565b80633fd8b02f116103c85780634a3acdf4116103975780634a3acdf4146107f85780634bf6c8821461080d57806350432d321461082257806351b4dce31461083757806351e806721461084c57610488565b80633fd8b02f1461078d57806343756e5c146107a257806343a368b9146107b7578063493279b1146107cc57610488565b8063149d14d91161040f578063149d14d91461062157806328087028146106485780632ae454831461065d5780633d713223146106b15780633dffc3871461076257610488565b80630bee7a671461048d5780630e2374a5146104bb5780631182b875146104ec57806312234582146105e657610488565b36610488573415610486576040805133815234602082015281517f6c98249d85d88c3753a04a22230f595e4dc8d3dc86c34af35deeeedc861b89db929181900390910190a15b005b600080fd5b34801561049957600080fd5b506104a2611130565b6040805163ffffffff9092168252519081900360200190f35b3480156104c757600080fd5b506104d0611135565b604080516001600160a01b039092168252519081900360200190f35b3480156104f857600080fd5b506105716004803603604081101561050f57600080fd5b60ff8235169190810190604081016020820135600160201b81111561053357600080fd5b82018360208201111561054557600080fd5b803590602001918460018302840111600160201b8311171561056657600080fd5b50909250905061113b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156105ab578181015183820152602001610593565b50505050905090810190601f1680156105d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105f257600080fd5b506104866004803603604081101561060957600080fd5b506001600160a01b0381358116916020013516611269565b34801561062d57600080fd5b50610636611363565b60408051918252519081900360200190f35b34801561065457600080fd5b506104d0611369565b34801561066957600080fd5b506106986004803603604081101561068057600080fd5b506001600160a01b038135811691602001351661136f565b6040805192835260208301919091528051918290030190f35b3480156106bd57600080fd5b506104d0600480360360208110156106d457600080fd5b810190602081018135600160201b8111156106ee57600080fd5b82018360208201111561070057600080fd5b803590602001918460018302840111600160201b8311171561072157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611393945050505050565b34801561076e57600080fd5b506107776113b7565b6040805160ff9092168252519081900360200190f35b34801561079957600080fd5b506106366113bc565b3480156107ae57600080fd5b506104d06113c2565b3480156107c357600080fd5b506106366113c8565b3480156107d857600080fd5b506107e16113d4565b6040805161ffff9092168252519081900360200190f35b34801561080457600080fd5b506106366113d9565b34801561081957600080fd5b506107776113df565b34801561082e57600080fd5b506106366113e4565b34801561084357600080fd5b506104d06113ef565b34801561085857600080fd5b506104d06113f5565b34801561086d57600080fd5b506104d06004803603602081101561088457600080fd5b50356113fb565b34801561089757600080fd5b50610636611416565b3480156108ac57600080fd5b5061077761141f565b6109cd600480360360808110156108cb57600080fd5b810190602081018135600160201b8111156108e557600080fd5b8201836020820111156108f757600080fd5b803590602001918460208302840111600160201b8311171561091857600080fd5b919390929091602081019035600160201b81111561093557600080fd5b82018360208201111561094757600080fd5b803590602001918460208302840111600160201b8311171561096857600080fd5b919390929091602081019035600160201b81111561098557600080fd5b82018360208201111561099757600080fd5b803590602001918460208302840111600160201b831117156109b857600080fd5b91935091503567ffffffffffffffff16611424565b604080519115158252519081900360200190f35b3480156109ed57600080fd5b506104d06118f9565b348015610a0257600080fd5b506107776118ff565b348015610a1757600080fd5b50610636611904565b348015610a2c57600080fd5b506109cd60048036036020811015610a4357600080fd5b503561190a565b348015610a5657600080fd5b506104d061198b565b348015610a6b57600080fd5b50610777611991565b348015610a8057600080fd5b5061048660048036036060811015610a9757600080fd5b508035906001600160a01b036020820135169060400135611996565b348015610abf57600080fd5b506104d0611c46565b348015610ad457600080fd5b5061048660048036036040811015610aeb57600080fd5b60ff8235169190810190604081016020820135600160201b811115610b0f57600080fd5b820183602082011115610b2157600080fd5b803590602001918460018302840111600160201b83111715610b4257600080fd5b509092509050611c4c565b348015610b5957600080fd5b5061048660048036036040811015610b7057600080fd5b50803590602001356001600160a01b0316611d94565b348015610b9257600080fd5b5061048660048036036060811015610ba957600080fd5b508035906001600160a01b036020820135169060400135611efd565b348015610bd157600080fd5b50610636611f83565b348015610be657600080fd5b5061048660048036036040811015610bfd57600080fd5b506001600160a01b038135169060200135611f8a565b348015610c1f57600080fd5b50610777612147565b348015610c3457600080fd5b5061063661214c565b348015610c4957600080fd5b5061063660048036036040811015610c6057600080fd5b506001600160a01b038135169060200135612158565b348015610c8257600080fd5b506104d0612296565b348015610c9757600080fd5b506104d061229c565b348015610cac57600080fd5b506107776122a2565b348015610cc157600080fd5b506109cd6122a7565b348015610cd657600080fd5b506107776122b0565b6109cd60048036036080811015610cf557600080fd5b5080356001600160a01b03908116916020810135909116906040810135906060013567ffffffffffffffff166122b5565b348015610d3257600080fd5b506104d0612335565b348015610d4757600080fd5b506104d061233b565b348015610d5c57600080fd5b506104a26122a2565b348015610d7157600080fd5b5061048660048036036040811015610d8857600080fd5b810190602081018135600160201b811115610da257600080fd5b820183602082011115610db457600080fd5b803590602001918460018302840111600160201b83111715610dd557600080fd5b919390929091602081019035600160201b811115610df257600080fd5b820183602082011115610e0457600080fd5b803590602001918460018302840111600160201b83111715610e2557600080fd5b509092509050612341565b348015610e3c57600080fd5b5061048660048036036040811015610e5357600080fd5b50803590602001356001600160a01b03166127e9565b348015610e7557600080fd5b50610636612869565b348015610e8a57600080fd5b50610636612873565b348015610e9f57600080fd5b5061063660048036036020811015610eb657600080fd5b50356001600160a01b0316612879565b348015610ed257600080fd5b5061063660048036036020811015610ee957600080fd5b50356001600160a01b031661288b565b348015610f0557600080fd5b506104d06128a6565b348015610f1a57600080fd5b5061048660048036036040811015610f3157600080fd5b60ff8235169190810190604081016020820135600160201b811115610f5557600080fd5b820183602082011115610f6757600080fd5b803590602001918460018302840111600160201b83111715610f8857600080fd5b5090925090506128ac565b348015610f9f57600080fd5b5061048660048036036040811015610fb657600080fd5b506001600160a01b038135811691602001351661297c565b348015610fda57600080fd5b506104d0612c50565b348015610fef57600080fd5b506104d0612c56565b34801561100457600080fd5b506109cd6004803603602081101561101b57600080fd5b5035612c5c565b34801561102e57600080fd5b50610486612cfc565b34801561104357600080fd5b506106366004803603602081101561105a57600080fd5b50356001600160a01b0316612d9c565b34801561107657600080fd5b50610777612dae565b34801561108b57600080fd5b50610777612db3565b3480156110a057600080fd5b50610777612db8565b3480156110b557600080fd5b506104d0612dbd565b3480156110ca57600080fd5b50610636612dc3565b3480156110df57600080fd5b50610636612dc9565b3480156110f457600080fd5b506105716004803603602081101561110b57600080fd5b50356001600160a01b0316612dd7565b34801561112757600080fd5b506104d0612efe565b606481565b61200181565b60005460609060ff16611183576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b33612000146111c35760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b60ff8416600214156112155761120e83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612f0492505050565b9050611262565b6040805162461bcd60e51b815260206004820152601860248201527f756e7265636f676e697a65642073796e207061636b6167650000000000000000604482015290519081900360640190fd5b9392505050565b33612000146112a95760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b6001600160a01b0380831660009081526007602090815260408083209385168352929052208054611314576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b0380861692908716917f152fb15aa5d80f843e1e4bd5f2fc9161714f169945024decec7e84fb910fdd519181900360200190a350505050565b60015490565b61200581565b60076020908152600092835260408084209091529082529020805460019091015482565b6020818101516000908152600490915260409020546001600160a01b03165b919050565b600181565b60055481565b61100181565b670de0b6b3a764000081565b606181565b61a8c081565b600881565b66071afd498d000081565b61200681565b61200081565b6000908152600460205260409020546001600160a01b031690565b6402540be40081565b600281565b6000805460ff1661146a576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b8685146114a85760405162461bcd60e51b815260040180806020018281038252603b815260200180615357603b913960400191505060405180910390fd5b8683146114e65760405162461bcd60e51b815260040180806020018281038252603f815260200180615269603f913960400191505060405180910390fd5b426078018267ffffffffffffffff1610156115325760405162461bcd60e51b81526004018080602001828103825260248152602001806151e56024913960400191505060405180910390fd5b6402540be4003406156115765760405162461bcd60e51b815260040180806020018281038252604081526020018061545a6040913960400191505060405180910390fd5b604080518681526020808802820101909152859060009081906060908480156115a9578160200160208202803683370190505b50905060005b84811015611684576402540be4008b8b838181106115c957fe5b90506020020135816115d757fe5b06156116145760405162461bcd60e51b815260040180806020018281038252603c8152602001806152a8603c913960400191505060405180910390fd5b6116398b8b8381811061162357fe5b905060200201358561302890919063ffffffff16565b93506116656402540be4008c8c8481811061165057fe5b9050602002013561308290919063ffffffff16565b82828151811061167157fe5b60209081029190910101526001016115af565b506001546116a99061169c908663ffffffff6130c416565b849063ffffffff61302816565b3410156116e75760405162461bcd60e51b81526004018080602001828103825260568152602001806154046056913960600191505060405180910390fd5b6116f7348463ffffffff61311d16565b9150611701615023565b6040518060c001604052806221272160e91b60001b815260200160006001600160a01b031681526020018381526020018e8e808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050908252506040805160208c810282810182019093528c82529283019290918d918d91829185019084908082843760009201919091525050509082525067ffffffffffffffff8916602090910152905061200063f7a251d760036117c58461315f565b6117da876402540be40063ffffffff61308216565b6040518463ffffffff1660e01b8152600401808460ff1660ff16815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611838578181015183820152602001611820565b50505050905090810190601f1680156118655780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561188657600080fd5b505af115801561189a573d6000803e3d6000fd5b505060408051600081523360208201528082018890526060810187905290517f74eab09b0e53aefc23f2e1b16da593f95c2dd49c6f5a23720463d10d9c330b2a9350908190036080019150a15060019c9b505050505050505050505050565b61100581565b601081565b60015481565b6000336120011461194c5760405162461bcd60e51b815260040180806020018281038252603381526020018061513d6033913960400191505060405180910390fd5b8115611983576040516120019083156108fc029084906000818181858888f19350505050158015611981573d6000803e3d6000fd5b505b506001919050565b61100881565b600b81565b60005460ff166119db576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b3361300014611a1b5760405162461bcd60e51b815260040180806020018281038252602b81526020018061523e602b913960400191505060405180910390fd5b677ce66c50e2840000811115611a625760405162461bcd60e51b81526004018080602001828103825260358152602001806152096035913960400191505060405180910390fd5b60006221272160e91b8414611bcc576000848152600460205260409020546001600160a01b031680611ad5576040805184815290516001600160a01b0386169187917fc16ee9013bf67c846d37735983debb0acc5b2d1419cb5931c9843ad4689505499181900360200190a35050611c41565b6001600160a01b038116600090815260026020526040902054611af8848261341a565b604080516370a0823160e01b8152306004820152905191945084916001600160a01b038516916370a08231916024808301926020929190829003018186803b158015611b4357600080fd5b505afa158015611b57573d6000803e3d6000fd5b505050506040513d6020811015611b6d57600080fd5b50511015611bb9576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b611bc58683858861345a565b5050611c3f565b611be1826402540be40063ffffffff6130c416565b905080471015611c2f576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6000611c3d8582848761345a565b505b505b505050565b61200381565b60005460ff16611c91576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b3361200014611cd15760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b60ff831660031415611d2157611d1c82828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506134f492505050565b611c41565b7f41ce201247b6ceb957dcdb217d0b8acb50b9ea0e12af9af4f5e7f38902101605838383604051808460ff1660ff168152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b3361300014611dd45760405162461bcd60e51b815260040180806020018281038252602b81526020018061523e602b913960400191505060405180910390fd5b60006221272160e91b8314611e3f57506000828152600460205260409020546001600160a01b031680611e3f576040805162461bcd60e51b815260206004820152600e60248201526d1a5b9d985b1a59081cde5b589bdb60921b604482015290519081900360640190fd5b6001600160a01b0380821660009081526007602090815260408083209386168352929052208054611eaa576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8054600082556040805182815290516001600160a01b03808716929086169188917f8041a9a8704332594e2884f5e0f942281cdd7611854c365b4d0aa70b2295d6b6919081900360200190a45050505050565b3361100814611f3d5760405162461bcd60e51b81526004018080602001828103825260238152602001806153c16023913960400191505060405180910390fd5b600083815260046020908152604080832080546001600160a01b039096166001600160a01b03199096168617905593825260038152838220949094556002909352912055565b6201518081565b81806001600160a01b031663893d20e86040518163ffffffff1660e01b815260040160206040518083038186803b158015611fc457600080fd5b505afa158015611fd8573d6000803e3d6000fd5b505050506040513d6020811015611fee57600080fd5b50516001600160a01b0316331461204c576040805162461bcd60e51b815260206004820152601860248201527f6e6f74206f776e6572206f6620424550323020746f6b656e0000000000000000604482015290519081900360640190fd5b6000821161209a576040805162461bcd60e51b81526020600482015260166024820152751e995c9bc81b1a5b5a5d081b9bdd08185b1b1bddd95960521b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546120f0576040805162461bcd60e51b81526020600482015260096024820152681b9bdd08189bdd5b9960ba1b604482015290519081900360640190fd5b6001600160a01b038316600081815260066020908152604091829020859055815185815291513393927f9df3a90730dbf23b5cc18dbbd5f4af3fa94a0dffb6ff6841f98a9a9a6ac626a892908290030190a3505050565b600981565b677ce66c50e284000081565b6000805460ff1661219e576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b33611005146121de5760405162461bcd60e51b815260040180806020018281038252602f815260200180615170602f913960400191505060405180910390fd5b60004783106121ed57476121ef565b825b9050670de0b6b3a764000081111561220b576000915050612290565b801561228d576040516001600160a01b0385169082156108fc029083906000818181858888f19350505050158015612247573d6000803e3d6000fd5b50604080516001600160a01b03861681526020810183905281517ff8b71c64315fc33b2ead2adfa487955065152a8ac33d9d5193aafd7f45dc15a0929181900390910190a15b90505b92915050565b61100781565b61100681565b600081565b60005460ff1681565b600381565b6000805460ff166122fb576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b6040805162461bcd60e51b815260206004820152600a60248201526919195c1c9958d85d195960b21b604482015290519081900360640190fd5b61200281565b61300081565b33611007146123815760405162461bcd60e51b815260040180806020018281038252602e815260200180615305602e913960400191505060405180910390fd5b602081146123d6576040805162461bcd60e51b815260206004820152601b60248201527f65787065637465642076616c7565206c656e6774682069732033320000000000604482015290519081900360640190fd5b606084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8801819004810282018101909252868152939450606093925086915085908190840183828082843760009201919091525050505060208301519091506772656c617946656560c01b8114156124de576020820151670de0b6b3a7640000811180159061248557506402540be4008106155b6124d6576040805162461bcd60e51b815260206004820152601960248201527f7468652072656c6179466565206f7574206f662072616e676500000000000000604482015290519081900360640190fd5b600155612754565b61255287878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601781527f6c617267655472616e736665724c6f636b506572696f64000000000000000000602082015291506135509050565b156125ee57604080516020601f87018190048102820181019092528581526000916125959188888083850183828082843760009201919091525061363792505050565b905062093a808111156125e6576040805162461bcd60e51b81526020600482015260146024820152736c6f636b20706572696f6420746f6f206c6f6e6760601b604482015290519081900360640190fd5b600555612754565b61265a87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080518082019091526015815274189b9893185c99d9551c985b9cd9995c931a5b5a5d605a1b602082015291506135509050565b1561271757604080516020601f870181900481028201810190925285815260009161269d9188888083850183828082843760009201919091525061363792505050565b905068056bc75e2d631000008110156126e75760405162461bcd60e51b815260040180806020018281038252602281526020018061519f6022913960400191505060405180910390fd5b6000805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f855612754565b6040805162461bcd60e51b815260206004820152600d60248201526c756e6b6e6f776e20706172616d60981b604482015290519081900360640190fd5b7f6cdb0ac70ab7f2e2d035cca5be60d89906f2dede7648ddbd7402189c1eeed17a878787876040518080602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f19169092018290039850909650505050505050a150505050505050565b33611008146128295760405162461bcd60e51b81526004018080602001828103825260238152602001806153c16023913960400191505060405180910390fd5b600091825260046020908152604080842080546001600160a01b03191690556001600160a01b039290921683526003815281832083905560029052812055565b6221272160e91b81565b61c35081565b60026020526000908152604090205481565b6001600160a01b031660009081526003602052604090205490565b61100281565b60005460ff166128f1576040805162461bcd60e51b815260206004820152601960248201526000805160206153e4833981519152604482015290519081900360640190fd5b33612000146129315760405162461bcd60e51b815260040180806020018281038252602f815260200180615392602f913960400191505060405180910390fd5b60ff831660031415611d2157611d1c82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061363c92505050565b60085460ff16600214156129c8576040805162461bcd60e51b815260206004820152600e60248201526d4e6f2072652d656e7472616e637960901b604482015290519081900360640190fd5b6008805460ff191660021790556001600160a01b0380831660009081526007602090815260408083209385168352929052208054612a40576040805162461bcd60e51b815260206004820152601060248201526f1b9bc81b1bd8dad95908185b5bdd5b9d60821b604482015290519081900360640190fd5b8060010154421015612a99576040805162461bcd60e51b815260206004820152601760248201527f7374696c6c206f6e206c6f636b696e6720706572696f64000000000000000000604482015290519081900360640190fd5b805460008083556001600160a01b038516612b0c576040516001600160a01b038516906127109084906000818181858888f193505050503d8060008114612afc576040519150601f19603f3d011682016040523d82523d6000602084013e612b01565b606091505b505080915050612b9f565b846001600160a01b031663a9059cbb61c35086856040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015612b6f57600080fd5b5087f1158015612b83573d6000803e3d6000fd5b50505050506040513d6020811015612b9a57600080fd5b505190505b80612bf1576040805162461bcd60e51b815260206004820152601e60248201527f776974686472617720756e6c6f636b656420746f6b656e206661696c65640000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b03167f832fc3e25f2b3e6fb0eb59419a73cba405f2a249fce75f7e31ea5a457a0323f1846040518082815260200191505060405180910390a350506008805460ff19166001179055505050565b61100381565b61200481565b60003361200214612cb4576040805162461bcd60e51b815260206004820152601f60248201527f746865206d73672073656e646572206d757374206265207374616b6548756200604482015290519081900360640190fd5b814710612cf4576040516120029083156108fc029084906000818181858888f19350505050158015612cea573d6000803e3d6000fd5b50600190506113b2565b506000919050565b60005460ff1615612d54576040805162461bcd60e51b815260206004820152601960248201527f74686520636f6e747261637420616c726561647920696e697400000000000000604482015290519081900360640190fd5b66071afd498d000060019081556000808052600260205260127fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b55805460ff19169091179055565b60066020526000908152604090205481565b600481565b600581565b601181565b61100081565b61271081565b69021e19e0c9bab240000081565b6001600160a01b03811660009081526003602090815260409182902054825182815280840190935260609290918391906020820181803683375050506020810183905290506000805b60208160ff161015612e6757828160ff1681518110612e3b57fe5b01602001516001600160f81b03191615612e5a57816001019150612e5f565b612e67565b600101612e20565b5060608160ff166040519080825280601f01601f191660200182016040528015612e98576020820181803683370190505b50905060005b8260ff168160ff161015612ef457838160ff1681518110612ebb57fe5b602001015160f81c60f81b828260ff1681518110612ed557fe5b60200101906001600160f81b031916908160001a905350600101612e9e565b5095945050505050565b61100481565b6060612f0e61506f565b6000612f1984613733565b9150915080612f6f576040805162461bcd60e51b815260206004820152601f60248201527f756e7265636f676e697a6564207472616e73666572496e207061636b61676500604482015290519081900360640190fd5b6000612f7a83613872565b905063ffffffff81161561300e576040808401516020808601516001600160a01b03166000908152600290915291822054612fb59190613bd8565b9050612fbf6150a4565b60405180608001604052808660000151815260200183815260200186608001516001600160a01b031681526020018463ffffffff16815250905061300281613c11565b955050505050506113b2565b505060408051600081526020810190915291506113b29050565b60008282018381101561228d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061228d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613ced565b6000826130d357506000612290565b828202828482816130e057fe5b041461228d5760405162461bcd60e51b81526004018080602001828103825260218152602001806152e46021913960400191505060405180910390fd5b600061228d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613d8f565b60408051600680825260e08201909252606091829190816020015b606081526020019060019003908161317a575050835190915061319c90613de9565b816000815181106131a957fe5b60200260200101819052506131ca83602001516001600160a01b0316613dfc565b816001815181106131d757fe5b60200260200101819052506000836040015151905060608160405190808252806020026020018201604052801561322257816020015b606081526020019060019003908161320d5790505b50905060005b8281101561326f576132508660400151828151811061324357fe5b6020026020010151613de9565b82828151811061325c57fe5b6020908102919091010152600101613228565b5061327981613e1f565b8360028151811061328657fe5b60200260200101819052506060826040519080825280602002602001820160405280156132c757816020015b60608152602001906001900390816132b25790505b50905060005b8381101561331d576132fe876060015182815181106132e857fe5b60200260200101516001600160a01b0316613dfc565b82828151811061330a57fe5b60209081029190910101526001016132cd565b5061332781613e1f565b8460038151811061333457fe5b602002602001018190525060608360405190808252806020026020018201604052801561337557816020015b60608152602001906001900390816133605790505b50905060005b848110156133b557613396886080015182815181106132e857fe5b8282815181106133a257fe5b602090810291909101015260010161337b565b506133bf81613e1f565b856004815181106133cc57fe5b60200260200101819052506133ee8760a0015167ffffffffffffffff16613de9565b856005815181106133fb57fe5b602002602001018190525061340f85613e1f565b979650505050505050565b600060088211156134435761343c836007198401600a0a63ffffffff6130c416565b9050612290565b61228d836008849003600a0a63ffffffff61308216565b6001600160a01b0380841660009081526007602090815260408083209385168352929052208054613491908463ffffffff61302816565b81554262015180016001820181905560408051858152602081019290925280516001600160a01b03808616939088169289927f446d1aa056e7b903901f49880e9f252762c1b81dc4301cf28db6dae526497eaa9281900390910190a45050505050565b6134fc6150cb565b600061350783613ea9565b91509150806135475760405162461bcd60e51b81526004018080602001828103825260248152602001806153336024913960400191505060405180910390fd5b611c4182614074565b6000816040516020018082805190602001908083835b602083106135855780518252601f199092019160209182019101613566565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120836040516020018082805190602001908083835b602083106135f35780518252601f1990920191602091820191016135d4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012014905092915050565b015190565b613644615023565b600061364f836144f8565b915091508061368f5760405162461bcd60e51b81526004018080602001828103825260248152602001806151c16024913960400191505060405180910390fd5b6136976150cb565b602080840180516001600160a01b0390811684526040808701518585015291511660009081526002909252812054905b846040015151811015613718576136f5856040015182815181106136e757fe5b60200260200101518361341a565b8560400151828151811061370557fe5b60209081029190910101526001016136c7565b506080840151604083015260056060830152611c3d82614074565b61373b61506f565b600061374561506f565b61374d615102565b61375e6137598661475c565b614781565b90506000805b61376d836147cb565b15613865578061378f57613788613783846147ec565b61483a565b845261385d565b80600114156137bc576137a96137a4846147ec565b6148f1565b6001600160a01b0316602085015261385d565b80600214156137db576137d1613783846147ec565b604085015261385d565b8060031415613803576137f06137a4846147ec565b6001600160a01b0316606085015261385d565b806004141561382b576138186137a4846147ec565b6001600160a01b0316608085015261385d565b806005141561385857613840613783846147ec565b67ffffffffffffffff1660a08501526001915061385d565b613865565b600101613764565b5091935090915050915091565b60208101516000906001600160a01b03166139b6578160a0015167ffffffffffffffff164211156138a5575060016113b2565b81604001514710156138b9575060036113b2565b6138c28261490b565b61393757606082015160408084015190516000926001600160a01b0316916127109184818181858888f193505050503d806000811461391d576040519150601f19603f3d011682016040523d82523d6000602084013e613922565b606091505b50509050806139355750600490506113b2565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5982602001518360600151846040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a15060006113b2565b8160a0015167ffffffffffffffff164211156139d4575060016113b2565b81516020808401516001600160a01b031660009081526003909152604090205414613a01575060026113b2565b602080830151604080516370a0823160e01b815230600482015290516000936001600160a01b03909316926370a082319261c3509260248083019392829003018187803b158015613a5157600080fd5b5086fa158015613a65573d6000803e3d6000fd5b50505050506040513d6020811015613a7c57600080fd5b50516040840151909150811015613a975750600390506113b2565b613aa08361490b565b613b5757600083602001516001600160a01b031663a9059cbb61c350866060015187604001516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b158015613b1557600080fd5b5087f1158015613b29573d6000803e3d6000fd5b50505050506040513d6020811015613b4057600080fd5b5051905080613b555750600591506113b29050565b505b7f471eb9cc1ffe55ffadf15b32595415eb9d80f22e761d24bd6dffc607e1284d5983602001518460600151856040015160405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a150600090506113b2565b60006008821115613bfa5761343c836007198401600a0a63ffffffff61308216565b61228d836008849003600a0a63ffffffff6130c416565b60408051600480825260a08201909252606091829190816020015b6060815260200190600190039081613c2c5750508351909150613c4e90613de9565b81600081518110613c5b57fe5b6020026020010181905250613c738360200151613de9565b81600181518110613c8057fe5b6020026020010181905250613ca183604001516001600160a01b0316613dfc565b81600281518110613cae57fe5b6020026020010181905250613ccc836060015163ffffffff16613de9565b81600381518110613cd957fe5b602002602001018190525061126281613e1f565b60008183613d795760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d3e578181015183820152602001613d26565b50505050905090810190601f168015613d6b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613d8557fe5b0495945050505050565b60008184841115613de15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315613d3e578181015183820152602001613d26565b505050900390565b6060612290613df783614a79565b614b5f565b60408051600560a21b831860148201526034810190915260609061126281614b5f565b6060815160001415613e4057506040805160008152602081019091526113b2565b606082600081518110613e4f57fe5b602002602001015190506000600190505b8351811015613e9057613e8682858381518110613e7957fe5b6020026020010151614bb1565b9150600101613e60565b50611262613ea3825160c060ff16614c2e565b82614bb1565b613eb16150cb565b6000613ebb6150cb565b613ec3615102565b613ecf6137598661475c565b90506000805b613ede836147cb565b156138655780613f0457613ef46137a4846147ec565b6001600160a01b0316845261406c565b8060011415613fa5576060613f20613f1b856147ec565b614d26565b90508051604051908082528060200260200182016040528015613f4d578160200160208202803683370190505b50602086015260005b8151811015613f9e57613f7b828281518110613f6e57fe5b602002602001015161483a565b86602001518281518110613f8b57fe5b6020908102919091010152600101613f56565b505061406c565b8060021415614047576060613fbc613f1b856147ec565b90508051604051908082528060200260200182016040528015613fe9578160200160208202803683370190505b50604086015260005b8151811015613f9e5761401782828151811061400a57fe5b60200260200101516148f1565b8660400151828151811061402757fe5b6001600160a01b0390921660209283029190910190910152600101613ff2565b80600314156138585761405c613783846147ec565b63ffffffff166060850152600191505b600101613ed5565b80516001600160a01b031661429e5760005b816020015151811015614298576000826040015182815181106140a557fe5b60200260200101516001600160a01b0316612710846020015184815181106140c957fe5b60209081029190910101516040516000818181858888f193505050503d8060008114614111576040519150601f19603f3d011682016040523d82523d6000602084013e614116565b606091505b50509050806141d9577f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061415557fe5b60200260200101518560200151858151811061416d57fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a161428f565b7fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a83600001518460400151848151811061420f57fe5b60200260200101518560200151858151811061422757fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b50600101614086565b506144f5565b60005b8160200151518110156144f357600082600001516001600160a01b031663a9059cbb61c350856040015185815181106142d657fe5b6020026020010151866020015186815181106142ee57fe5b60200260200101516040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600088803b15801561434557600080fd5b5087f1158015614359573d6000803e3d6000fd5b50505050506040513d602081101561437057600080fd5b505190508015614434577fd468d4fa5e8fb4adc119b29a983fd0785e04af5cb8b7a3a69a47270c54b6901a8360000151846040015184815181106143b057fe5b6020026020010151856020015185815181106143c857fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a16144ea565b7f203f9f67a785f4f81be4d48b109aa0c498d1bc8097ecc2627063f480cc5fe73e83600001518460400151848151811061446a57fe5b60200260200101518560200151858151811061448257fe5b6020026020010151866060015160405180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b031681526020018381526020018263ffffffff1663ffffffff16815260200194505050505060405180910390a15b506001016142a1565b505b50565b614500615023565b600061450a615023565b614512615102565b61451e6137598661475c565b90506000805b61452d836147cb565b15613865578061454a57614543613783846147ec565b8452614754565b80600114156145725761455f6137a4846147ec565b6001600160a01b03166020850152614754565b8060021415614601576060614589613f1b856147ec565b905080516040519080825280602002602001820160405280156145b6578160200160208202803683370190505b50604086015260005b81518110156145fa576145d7828281518110613f6e57fe5b866040015182815181106145e757fe5b60209081029190910101526001016145bf565b5050614754565b8060031415614696576060614618613f1b856147ec565b90508051604051908082528060200260200182016040528015614645578160200160208202803683370190505b50606086015260005b81518110156145fa5761466682828151811061400a57fe5b8660600151828151811061467657fe5b6001600160a01b039092166020928302919091019091015260010161464e565b806004141561472b5760606146ad613f1b856147ec565b905080516040519080825280602002602001820160405280156146da578160200160208202803683370190505b50608086015260005b81518110156145fa576146fb82828151811061400a57fe5b8660800151828151811061470b57fe5b6001600160a01b03909216602092830291909101909101526001016146e3565b806005141561385857614740613783846147ec565b67ffffffffffffffff1660a0850152600191505b600101614524565b614764615122565b506040805180820190915281518152602082810190820152919050565b614789615102565b61479282614df7565b61479b57600080fd5b60006147aa8360200151614e31565b60208085015160408051808201909152868152920190820152915050919050565b60006147d5615122565b505080518051602091820151919092015191011190565b6147f4615122565b6147fd826147cb565b61480657600080fd5b6020820151600061481682614e94565b80830160209586015260408051808201909152908152938401919091525090919050565b80516000901580159061484f57508151602110155b61485857600080fd5b60006148678360200151614e31565b905080836000015110156148c2576040805162461bcd60e51b815260206004820152601a60248201527f6c656e677468206973206c657373207468616e206f6666736574000000000000604482015290519081900360640190fd5b8251602080850151830180519284900392918310156148e857826020036101000a820491505b50949350505050565b805160009060151461490257600080fd5b6122908261483a565b600080805260066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f8541580156149445750600554155b156149865760008052600660205269021e19e0c9bab24000007f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85561a8c06005555b6020808301516001600160a01b03166000908152600690915260409020548015806149b45750808360400151105b156149c35760009150506113b2565b6020808401516001600160a01b039081166000908152600783526040808220606088015190931682529190925290819020908401518154614a099163ffffffff61302816565b8155600554420160018201819055606085015160208087015160408089015181519081529283019490945283516001600160a01b039384169493909116927f3fb83143cd331170da18fb1e8564d97e8ec39264b6ecb1ba248ea7596ab07258928290030190a35060019392505050565b604080516020808252818301909252606091829190602082018180368337505050602081018490529050600067ffffffffffffffff198416614abd57506018614ae1565b6fffffffffffffffffffffffffffffffff198416614add57506010614ae1565b5060005b6020811015614b1757818181518110614af657fe5b01602001516001600160f81b03191615614b0f57614b17565b600101614ae1565b60008160200390506060816040519080825280601f01601f191660200182016040528015614b4c576020820181803683370190505b5080830196909652508452509192915050565b606081516001148015614b915750607f60f81b82600081518110614b7f57fe5b01602001516001600160f81b03191611155b15614b9d5750806113b2565b612290614baf8351608060ff16614c2e565b835b6060806040519050835180825260208201818101602087015b81831015614be2578051835260209283019201614bca565b50855184518101855292509050808201602086015b81831015614c0f578051835260209283019201614bf7565b508651929092011591909101601f01601f191660405250905092915050565b6060680100000000000000008310614c7e576040805162461bcd60e51b815260206004820152600e60248201526d696e70757420746f6f206c6f6e6760901b604482015290519081900360640190fd5b60408051600180825281830190925260609160208201818036833701905050905060378411614cd85782840160f81b81600081518110614cba57fe5b60200101906001600160f81b031916908160001a9053509050612290565b6060614ce385614a79565b90508381510160370160f81b82600081518110614cfc57fe5b60200101906001600160f81b031916908160001a905350614d1d8282614bb1565b95945050505050565b6060614d3182614df7565b614d3a57600080fd5b6000614d4583614fc7565b9050606081604051908082528060200260200182016040528015614d8357816020015b614d70615122565b815260200190600190039081614d685790505b5090506000614d958560200151614e31565b60208601510190506000805b84811015614dec57614db283614e94565b9150604051806040016040528083815260200184815250848281518110614dd557fe5b602090810291909101015291810191600101614da1565b509195945050505050565b8051600090614e08575060006113b2565b6020820151805160001a9060c0821015614e27576000925050506113b2565b5060019392505050565b8051600090811a6080811015614e4b5760009150506113b2565b60b8811080614e66575060c08110801590614e66575060f881105b15614e755760019150506113b2565b60c0811015614e895760b5190190506113b2565b60f5190190506113b2565b80516000908190811a6080811015614eaf5760019150614fc0565b60b8811015614ec457607e1981019150614fc0565b60c0811015614f3e57600060b78203600186019550806020036101000a865104915060018101820193505080831015614f38576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b50614fc0565b60f8811015614f535760be1981019150614fc0565b600060f78203600186019550806020036101000a865104915060018101820193505080831015614fbe576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b505b5092915050565b8051600090614fd8575060006113b2565b60008090506000614fec8460200151614e31565b602085015185519181019250015b8082101561501a5761500b82614e94565b82019150826001019250614ffa565b50909392505050565b6040518060c001604052806000801916815260200160006001600160a01b03168152602001606081526020016060815260200160608152602001600067ffffffffffffffff1681525090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806080016040528060006001600160a01b031681526020016060815260200160608152602001600063ffffffff1681525090565b6040518060400160405280615115615122565b8152602001600081525090565b60405180604001604052806000815260200160008152509056fe6f6e6c79207374616b696e672073797374656d20636f6e74726163742063616e2063616c6c20746869732066756e6374696f6e746865206d6573736167652073656e646572206d75737420626520696e63656e746976697a6520636f6e7472616374626e62206c61726765207472616e73666572206c696d697420746f6f20736d616c6c756e7265636f676e697a6564207472616e736665724f75742073796e207061636b61676565787069726554696d65206d7573742062652074776f206d696e75746573206c61746572616d6f756e7420697320746f6f206c617267652c20657863656564206d6178696d756d206265703220746f6b656e20616d6f756e74746865206d73672073656e646572206d75737420626520746f6b656e207265636f76657220706f7274616c4c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620726566756e644164647273696e76616c6964207472616e7366657220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77746865206d6573736167652073656e646572206d75737420626520676f7665726e616e636520636f6e7472616374756e7265636f676e697a6564207472616e736665724f75742061636b207061636b6167654c656e677468206f6620726563697069656e74416464727320646f65736e277420657175616c20746f206c656e677468206f6620616d6f756e7473746865206d6573736167652073656e646572206d7573742062652063726f737320636861696e20636f6e7472616374746865206d73672073656e646572206d75737420626520746f6b656e4d616e6167657274686520636f6e7472616374206e6f7420696e69742079657400000000000000726563656976656420424e4220616d6f756e742073686f756c64206265206e6f206c657373207468616e207468652073756d206f66207472616e7366657220424e4220616d6f756e7420616e642072656c6179466565696e76616c696420726563656976656420424e4220616d6f756e743a20707265636973696f6e206c6f737320696e20616d6f756e7420636f6e76657273696f6ea164736f6c6343000604000a