0x6080604052600436106101235760003560e01c80639078f506116100a0578063e1f21c6711610064578063e1f21c6714610966578063e7251518146109bd578063ec3a530a146109f0578063f2fde38b14610b00578063fc85387c14610b335761012a565b80639078f506146106c4578063ac18de43146106d9578063b072dfa31461070c578063c4f4e5291461073f578063dc0c6ca11461092e5761012a565b80633da62a6f116100e75780633da62a6f1461049e57806344ad1e3d146105ed578063715018a61461062057806384ec7ee3146106355780638da5cb5b146106935761012a565b806305b485ed1461012f578063156e29f6146102065780631f79c6be146102385780632d06177a146102815780633c2645e7146102b45761012a565b3661012a57005b600080fd5b610204600480360361010081101561014657600080fd5b6001600160a01b03823581169260208101359260408201359260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b81111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460208302840111600160201b831117156101c457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610c08915050565b005b6102046004803603606081101561021c57600080fd5b506001600160a01b038135169060208101359060400135610f04565b34801561024457600080fd5b5061026b6004803603602081101561025b57600080fd5b50356001600160a01b0316611010565b6040805160ff9092168252519081900360200190f35b34801561028d57600080fd5b50610204600480360360208110156102a457600080fd5b50356001600160a01b0316611073565b61020460048036036101408110156102cb57600080fd5b8135916020810135916001600160a01b036040830135169190810190608081016060820135600160201b81111561030157600080fd5b82018360208201111561031357600080fd5b803590602001918460208302840111600160201b8311171561033457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561038b57600080fd5b82018360208201111561039d57600080fd5b803590602001918460208302840111600160201b831117156103be57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516956020860135956040810135151595509193509150608081019060600135600160201b81111561042a57600080fd5b82018360208201111561043c57600080fd5b803590602001918460018302840111600160201b8311171561045d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110ef945050505050565b610204600480360360e08110156104b457600080fd5b813591602081013591810190606081016040820135600160201b8111156104da57600080fd5b8201836020820111156104ec57600080fd5b803590602001918460208302840111600160201b8311171561050d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516956020860135956040810135151595509193509150608081019060600135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113a1945050505050565b3480156105f957600080fd5b506102046004803603602081101561061057600080fd5b50356001600160a01b0316611555565b34801561062c57600080fd5b506102046115b9565b34801561064157600080fd5b5061067a6004803603606081101561065857600080fd5b506001600160a01b03813581169160208101358216916040909101351661165b565b6040805192835260208301919091528051918290030190f35b34801561069f57600080fd5b506106a861173f565b604080516001600160a01b039092168252519081900360200190f35b3480156106d057600080fd5b506106a861174e565b3480156106e557600080fd5b50610204600480360360208110156106fc57600080fd5b50356001600160a01b03166117a2565b34801561071857600080fd5b506102046004803603602081101561072f57600080fd5b50356001600160a01b031661181b565b610204600480360361016081101561075657600080fd5b8135916020810135916040820135916001600160a01b036060820135169181019060a081016080820135600160201b81111561079157600080fd5b8201836020820111156107a357600080fd5b803590602001918460208302840111600160201b831117156107c457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561081b57600080fd5b82018360208201111561082d57600080fd5b803590602001918460208302840111600160201b8311171561084e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516956020860135956040810135151595509193509150608081019060600135600160201b8111156108ba57600080fd5b8201836020820111156108cc57600080fd5b803590602001918460018302840111600160201b831117156108ed57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061187e945050505050565b6102046004803603608081101561094457600080fd5b506001600160a01b038135169060208101359060408101359060600135611b2d565b34801561097257600080fd5b506109a96004803603606081101561098957600080fd5b506001600160a01b03813581169160208101359091169060400135611cf9565b604080519115158252519081900360200190f35b3480156109c957600080fd5b50610204600480360360208110156109e057600080fd5b50356001600160a01b0316611edd565b3480156109fc57600080fd5b50610ab060048036036060811015610a1357600080fd5b81359190810190604081016020820135600160201b811115610a3457600080fd5b820183602082011115610a4657600080fd5b803590602001918460208302840111600160201b83111715610a6757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b03169150611f439050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610aec578181015183820152602001610ad4565b505050509050019250505060405180910390f35b348015610b0c57600080fd5b5061020460048036036020811015610b2357600080fd5b50356001600160a01b03166120b2565b6102046004803603610100811015610b4a57600080fd5b6001600160a01b03823581169260208101359260408201359260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b811115610b9557600080fd5b820183602082011115610ba757600080fd5b803590602001918460208302840111600160201b83111715610bc857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050913592506121aa915050565b610c1061173f565b6001600160a01b0316336001600160a01b03161480610c4157503360009081526003602052604090205460ff166001145b610c4a57600080fd5b6001600160a01b038816610c5d57600080fd5b6001600160a01b038316610c7057600080fd5b60008711610c7d57600080fd5b838711610cbb5760405162461bcd60e51b8152600401808060200182810382526023815260200180612d3a6023913960400191505060405180910390fd5b60015482516001600160a01b03909116908390600090610cd757fe5b60200260200101516001600160a01b031614610d30576040805162461bcd60e51b81526020600482015260136024820152723a37a830ba3410181034b9903737ba1031bd3d60691b604482015290519081900360640190fd5b600154604080516340c10f1960e01b8152306004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b505050506000841115610e6557600180546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050506040513d6020811015610e2357600080fd5b5051905080610e635760405162461bcd60e51b815260040180806020018281038252602b815260200180612c9b602b913960400191505060405180910390fd5b505b6060610e7785890388858c8887612417565b90507fd4b70e0d50bcb13e7654961d68ed7b96f84a2fcc32edde496c210382dc0257088987878b85600187510381518110610eae57fe5b602002602001015160405180866001600160a01b03166001600160a01b031681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1505050505050505050565b610f0c61173f565b6001600160a01b0316336001600160a01b03161480610f3d57503360009081526003602052604090205460ff166001145b610f4657600080fd5b600154604080516340c10f1960e01b81526001600160a01b03868116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b158015610f9b57600080fd5b505af1158015610faf573d6000803e3d6000fd5b5050604080516001600160a01b038716815260208101869052600081830181905260608201869052608082015290517fd4b70e0d50bcb13e7654961d68ed7b96f84a2fcc32edde496c210382dc02570893509081900360a0019150a1505050565b600061101a61173f565b6001600160a01b0316336001600160a01b0316148061104b57503360009081526003602052604090205460ff166001145b61105457600080fd5b506001600160a01b031660009081526004602052604090205460ff1690565b61107b612663565b6000546001600160a01b039081169116146110cb576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6001600160a01b03881661110257600080fd5b60015487516001600160a01b03909116908890600019810190811061112357fe5b60200260200101516001600160a01b03161461117d576040805162461bcd60e51b81526020600482015260146024820152733630b9ba103830ba341034b9903737ba1031bd3d60611b604482015290519081900360640190fd5b6000341161118a57600080fd5b60606111998b89338c8b612667565b90506002548a146113945760015481516001600160a01b0390911690639dc29fac903390849060001981019081106111cd57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561122457600080fd5b505af1158015611238573d6000803e3d6000fd5b505050507fa4bd93d5396d36bd742684adb6dbe69f45c14792170e66134569c1adf91d1fb93360008360018551038151811061127057fe5b60200260200101518d8a8a8a8a8a604051808a6001600160a01b03166001600160a01b0316815260200189815260200188815260200187815260200180602001866001600160a01b03166001600160a01b031681526020018581526020018415151515815260200180602001838103835288818151815260200191508051906020019060200280838360005b838110156113145781810151838201526020016112fc565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611350578181015183820152602001611338565b50505050905090810190601f16801561137d5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b5050505050505050505050565b60015460408051632770a7eb60e21b8152336004820152602481018a905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b1580156113f457600080fd5b505af1158015611408573d6000803e3d6000fd5b505050507fa4bd93d5396d36bd742684adb6dbe69f45c14792170e66134569c1adf91d1fb933886000898989898989604051808a6001600160a01b03166001600160a01b0316815260200189815260200188815260200187815260200180602001866001600160a01b03166001600160a01b031681526020018581526020018415151515815260200180602001838103835288818151815260200191508051906020019060200280838360005b838110156114cd5781810151838201526020016114b5565b50505050905001838103825284818151815260200191508051906020019080838360005b838110156115095781810151838201526020016114f1565b50505050905090810190601f1680156115365780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a150505050505050565b61155d61173f565b6001600160a01b0316336001600160a01b0316148061158e57503360009081526003602052604090205460ff166001145b61159757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6115c1612663565b6000546001600160a01b03908116911614611611576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60008061166661173f565b6001600160a01b0316336001600160a01b0316148061169757503360009081526003602052604090205460ff166001145b6116a057600080fd5b6001600160a01b0385166116b357600080fd5b6040805163354aedbd60e21b81526001600160a01b038681166004830152858116602483015282519088169263d52bb6f49260448082019391829003018186803b15801561170057600080fd5b505afa158015611714573d6000803e3d6000fd5b505050506040513d604081101561172a57600080fd5b50805160209091015190969095509350505050565b6000546001600160a01b031690565b600061175861173f565b6001600160a01b0316336001600160a01b0316148061178957503360009081526003602052604090205460ff166001145b61179257600080fd5b506001546001600160a01b031690565b6117aa612663565b6000546001600160a01b039081169116146117fa576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b61182361173f565b6001600160a01b0316336001600160a01b0316148061185457503360009081526003602052604090205460ff166001145b61185d57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6001600160a01b03881661189157600080fd5b60015487516001600160a01b0390911690889060001981019081106118b257fe5b60200260200101516001600160a01b031614611915576040805162461bcd60e51b815260206004820152601860248201527f6c6173742066726f6d50617468206973206e6f7420637a7a0000000000000000604482015290519081900360640190fd5b60606119258c8c8a338d8c612909565b90506002548a14611b1f5760015481516001600160a01b0390911690639dc29fac9033908490600019810190811061195957fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050507fa4bd93d5396d36bd742684adb6dbe69f45c14792170e66134569c1adf91d1fb9338d836001855103815181106119fb57fe5b60200260200101518d8a8a8a8a8a604051808a6001600160a01b03166001600160a01b0316815260200189815260200188815260200187815260200180602001866001600160a01b03166001600160a01b031681526020018581526020018415151515815260200180602001838103835288818151815260200191508051906020019060200280838360005b83811015611a9f578181015183820152602001611a87565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611adb578181015183820152602001611ac3565b50505050905090810190601f168015611b085780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b505050505050505050505050565b611b3561173f565b6001600160a01b0316336001600160a01b03161480611b6657503360009081526003602052604090205460ff166001145b611b6f57600080fd5b60008211611b7c57600080fd5b80821015611bbb5760405162461bcd60e51b8152600401808060200182810382526023815260200180612d3a6023913960400191505060405180910390fd5b8015611c2d57600154604080516340c10f1960e01b81523360048201526024810184905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b505050505b600154604080516340c10f1960e01b81526001600160a01b0387811660048301528486036024830152915191909216916340c10f1991604480830192600092919082900301818387803b158015611c8357600080fd5b505af1158015611c97573d6000803e3d6000fd5b5050604080516001600160a01b038816815260208101879052808201859052606081018690526000608082015290517fd4b70e0d50bcb13e7654961d68ed7b96f84a2fcc32edde496c210382dc02570893509081900360a0019150a150505050565b60006001600160a01b038416611d405760405162461bcd60e51b8152600401808060200182810382526021815260200180612d5d6021913960400191505060405180910390fd5b6001600160a01b038316611d855760405162461bcd60e51b8152600401808060200182810382526023815260200180612cc66023913960400191505060405180910390fd5b81611dd7576040805162461bcd60e51b815260206004820152601c60248201527f617070726f7665205f616d6f756e7420697320746865207a65726f2000000000604482015290519081900360640190fd5b6001600160a01b03831660009081526004602052604090205460ff16600114611e47576040805162461bcd60e51b815260206004820152601e60248201527f7370656e646572206973206e6f7420726f757465722061646472657373200000604482015290519081900360640190fd5b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ea757600080fd5b505af1158015611ebb573d6000803e3d6000fd5b505050506040513d6020811015611ed157600080fd5b50600195945050505050565b611ee561173f565b6001600160a01b0316336001600160a01b03161480611f1657503360009081526003602052604090205460ff166001145b611f1f57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b60606001600160a01b038216611f5857600080fd5b6040805163d06ca61f60e01b815260048101868152602482019283528551604483015285516001600160a01b0386169363d06ca61f9389938993909291606401906020808601910280838360005b83811015611fbe578181015183820152602001611fa6565b50505050905001935050505060006040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561201f57600080fd5b8101908080516040519392919084600160201b82111561203e57600080fd5b90830190602082018581111561205357600080fd5b82518660208202830111600160201b8211171561206f57600080fd5b82525081516020918201928201910280838360005b8381101561209c578181015183820152602001612084565b5050505090500160405250505090509392505050565b6120ba612663565b6000546001600160a01b0390811691161461210a576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b6001600160a01b03811661214f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612c756026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6121b261173f565b6001600160a01b0316336001600160a01b031614806121e357503360009081526003602052604090205460ff166001145b6121ec57600080fd5b6001600160a01b0388166121ff57600080fd5b6001600160a01b03831661221257600080fd5b6000871161221f57600080fd5b83871161225d5760405162461bcd60e51b8152600401808060200182810382526023815260200180612d3a6023913960400191505060405180910390fd5b60015482516001600160a01b0390911690839060009061227957fe5b60200260200101516001600160a01b0316146122d0576040805162461bcd60e51b81526020600482015260116024820152703830ba3410181034b9903737ba1031bd3d60791b604482015290519081900360640190fd5b600154604080516340c10f1960e01b8152306004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b50505050600084111561240557600180546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50519050806124035760405162461bcd60e51b8152600401808060200182810382526031815260200180612ce96031913960400191505060405180910390fd5b505b6060610e7785890388858c88876129da565b606060008560008151811061242857fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b15801561248057600080fd5b505afa158015612494573d6000803e3d6000fd5b505050506040513d60208110156124aa57600080fd5b50519050878110156124d9576124d7866000815181106124c657fe5b602002602001015185600019611cf9565b505b836001600160a01b03166338ed173989898989886040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561256657818101518382015260200161254e565b505050509050019650505050505050600060405180830381600087803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156125cc57600080fd5b8101908080516040519392919084600160201b8211156125eb57600080fd5b90830190602082018581111561260057600080fd5b82518660208202830111600160201b8211171561261c57600080fd5b82525081516020918201928201910280838360005b83811015612649578181015183820152602001612631565b505050509050016040525050509150509695505050505050565b3390565b606060008560008151811061267857fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b1580156126d057600080fd5b505afa1580156126e4573d6000803e3d6000fd5b505050506040513d60208110156126fa57600080fd5b505190503481101561271857612716866000815181106124c657fe5b505b8560008151811061272557fe5b60200260200101516001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561276757600080fd5b505af115801561277b573d6000803e3d6000fd5b5050505050836001600160a01b03166338ed173934898989886040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561280d5781810151838201526020016127f5565b505050509050019650505050505050600060405180830381600087803b15801561283657600080fd5b505af115801561284a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561287357600080fd5b8101908080516040519392919084600160201b82111561289257600080fd5b9083019060208201858111156128a757600080fd5b82518660208202830111600160201b821117156128c357600080fd5b82525081516020918201928201910280838360005b838110156128f05781810151838201526020016128d8565b5050505090500160405250505091505095945050505050565b606060008560008151811061291a57fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b15801561297257600080fd5b505afa158015612986573d6000803e3d6000fd5b505050506040513d602081101561299c57600080fd5b50519050878110156129ba576129b8866000815181106124c657fe5b505b6124d9866000815181106129ca57fe5b602002602001015133308b612b17565b60606000856000815181106129eb57fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b158015612a4357600080fd5b505afa158015612a57573d6000803e3d6000fd5b505050506040513d6020811015612a6d57600080fd5b5051905087811015612a8b57612a89866000815181106124c657fe5b505b836001600160a01b03166318cbafe589898989886040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360008381101561256657818101518382015260200161254e565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310612b9c5780518252601f199092019160209182019101612b7d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612bfe576040519150601f19603f3d011682016040523d82523d6000602084013e612c03565b606091505b5091509150818015612c31575080511580612c315750808060200190516020811015612c2e57600080fd5b50515b612c6c5760405162461bcd60e51b8152600401808060200182810382526024815260200180612d7e6024913960400191505060405180910390fd5b50505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737373776170416e644d696e74546f6b656e576974685061746820676173205472616e73666572206572726f72617070726f7665207370656e64657220697320746865207a65726f206164647265737373776170416e644d696e74546f6b656e466f72457468576974685061746820676173205472616e73666572206572726f724f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572524f555445523a207472616e7366657220616d6f756e74206578636565647320676173617070726f766520746f6b656e20697320746865207a65726f20616464726573735472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122051e192bbcb97baebe47b229ad8fa4770a3533205ae0659c593b3f0fdd7d628b364736f6c63430006060033
0x60806040523480156200001157600080fd5b5060405162002eb438038062002eb4833981810160405260408110156200003757600080fd5b5080516020909101516000620000556001600160e01b03620000c916565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b039390931692909217909155600255620000cd565b3390565b612dd780620000dd6000396000f3fe6080604052600436106101235760003560e01c80639078f506116100a0578063e1f21c6711610064578063e1f21c6714610966578063e7251518146109bd578063ec3a530a146109f0578063f2fde38b14610b00578063fc85387c14610b335761012a565b80639078f506146106c4578063ac18de43146106d9578063b072dfa31461070c578063c4f4e5291461073f578063dc0c6ca11461092e5761012a565b80633da62a6f116100e75780633da62a6f1461049e57806344ad1e3d146105ed578063715018a61461062057806384ec7ee3146106355780638da5cb5b146106935761012a565b806305b485ed1461012f578063156e29f6146102065780631f79c6be146102385780632d06177a146102815780633c2645e7146102b45761012a565b3661012a57005b600080fd5b610204600480360361010081101561014657600080fd5b6001600160a01b03823581169260208101359260408201359260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b81111561019157600080fd5b8201836020820111156101a357600080fd5b803590602001918460208302840111600160201b831117156101c457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295505091359250610c08915050565b005b6102046004803603606081101561021c57600080fd5b506001600160a01b038135169060208101359060400135610f04565b34801561024457600080fd5b5061026b6004803603602081101561025b57600080fd5b50356001600160a01b0316611010565b6040805160ff9092168252519081900360200190f35b34801561028d57600080fd5b50610204600480360360208110156102a457600080fd5b50356001600160a01b0316611073565b61020460048036036101408110156102cb57600080fd5b8135916020810135916001600160a01b036040830135169190810190608081016060820135600160201b81111561030157600080fd5b82018360208201111561031357600080fd5b803590602001918460208302840111600160201b8311171561033457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561038b57600080fd5b82018360208201111561039d57600080fd5b803590602001918460208302840111600160201b831117156103be57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516956020860135956040810135151595509193509150608081019060600135600160201b81111561042a57600080fd5b82018360208201111561043c57600080fd5b803590602001918460018302840111600160201b8311171561045d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110ef945050505050565b610204600480360360e08110156104b457600080fd5b813591602081013591810190606081016040820135600160201b8111156104da57600080fd5b8201836020820111156104ec57600080fd5b803590602001918460208302840111600160201b8311171561050d57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516956020860135956040810135151595509193509150608081019060600135600160201b81111561057957600080fd5b82018360208201111561058b57600080fd5b803590602001918460018302840111600160201b831117156105ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506113a1945050505050565b3480156105f957600080fd5b506102046004803603602081101561061057600080fd5b50356001600160a01b0316611555565b34801561062c57600080fd5b506102046115b9565b34801561064157600080fd5b5061067a6004803603606081101561065857600080fd5b506001600160a01b03813581169160208101358216916040909101351661165b565b6040805192835260208301919091528051918290030190f35b34801561069f57600080fd5b506106a861173f565b604080516001600160a01b039092168252519081900360200190f35b3480156106d057600080fd5b506106a861174e565b3480156106e557600080fd5b50610204600480360360208110156106fc57600080fd5b50356001600160a01b03166117a2565b34801561071857600080fd5b506102046004803603602081101561072f57600080fd5b50356001600160a01b031661181b565b610204600480360361016081101561075657600080fd5b8135916020810135916040820135916001600160a01b036060820135169181019060a081016080820135600160201b81111561079157600080fd5b8201836020820111156107a357600080fd5b803590602001918460208302840111600160201b831117156107c457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092958435959094909350604081019250602001359050600160201b81111561081b57600080fd5b82018360208201111561082d57600080fd5b803590602001918460208302840111600160201b8311171561084e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092956001600160a01b03853516956020860135956040810135151595509193509150608081019060600135600160201b8111156108ba57600080fd5b8201836020820111156108cc57600080fd5b803590602001918460018302840111600160201b831117156108ed57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061187e945050505050565b6102046004803603608081101561094457600080fd5b506001600160a01b038135169060208101359060408101359060600135611b2d565b34801561097257600080fd5b506109a96004803603606081101561098957600080fd5b506001600160a01b03813581169160208101359091169060400135611cf9565b604080519115158252519081900360200190f35b3480156109c957600080fd5b50610204600480360360208110156109e057600080fd5b50356001600160a01b0316611edd565b3480156109fc57600080fd5b50610ab060048036036060811015610a1357600080fd5b81359190810190604081016020820135600160201b811115610a3457600080fd5b820183602082011115610a4657600080fd5b803590602001918460208302840111600160201b83111715610a6757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550505090356001600160a01b03169150611f439050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610aec578181015183820152602001610ad4565b505050509050019250505060405180910390f35b348015610b0c57600080fd5b5061020460048036036020811015610b2357600080fd5b50356001600160a01b03166120b2565b6102046004803603610100811015610b4a57600080fd5b6001600160a01b03823581169260208101359260408201359260608301359260808101359260a08201359092169181019060e0810160c0820135600160201b811115610b9557600080fd5b820183602082011115610ba757600080fd5b803590602001918460208302840111600160201b83111715610bc857600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955050913592506121aa915050565b610c1061173f565b6001600160a01b0316336001600160a01b03161480610c4157503360009081526003602052604090205460ff166001145b610c4a57600080fd5b6001600160a01b038816610c5d57600080fd5b6001600160a01b038316610c7057600080fd5b60008711610c7d57600080fd5b838711610cbb5760405162461bcd60e51b8152600401808060200182810382526023815260200180612d3a6023913960400191505060405180910390fd5b60015482516001600160a01b03909116908390600090610cd757fe5b60200260200101516001600160a01b031614610d30576040805162461bcd60e51b81526020600482015260136024820152723a37a830ba3410181034b9903737ba1031bd3d60691b604482015290519081900360640190fd5b600154604080516340c10f1960e01b8152306004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015610d8357600080fd5b505af1158015610d97573d6000803e3d6000fd5b505050506000841115610e6557600180546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050506040513d6020811015610e2357600080fd5b5051905080610e635760405162461bcd60e51b815260040180806020018281038252602b815260200180612c9b602b913960400191505060405180910390fd5b505b6060610e7785890388858c8887612417565b90507fd4b70e0d50bcb13e7654961d68ed7b96f84a2fcc32edde496c210382dc0257088987878b85600187510381518110610eae57fe5b602002602001015160405180866001600160a01b03166001600160a01b031681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a1505050505050505050565b610f0c61173f565b6001600160a01b0316336001600160a01b03161480610f3d57503360009081526003602052604090205460ff166001145b610f4657600080fd5b600154604080516340c10f1960e01b81526001600160a01b03868116600483015260248201859052915191909216916340c10f1991604480830192600092919082900301818387803b158015610f9b57600080fd5b505af1158015610faf573d6000803e3d6000fd5b5050604080516001600160a01b038716815260208101869052600081830181905260608201869052608082015290517fd4b70e0d50bcb13e7654961d68ed7b96f84a2fcc32edde496c210382dc02570893509081900360a0019150a1505050565b600061101a61173f565b6001600160a01b0316336001600160a01b0316148061104b57503360009081526003602052604090205460ff166001145b61105457600080fd5b506001600160a01b031660009081526004602052604090205460ff1690565b61107b612663565b6000546001600160a01b039081169116146110cb576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6001600160a01b03881661110257600080fd5b60015487516001600160a01b03909116908890600019810190811061112357fe5b60200260200101516001600160a01b03161461117d576040805162461bcd60e51b81526020600482015260146024820152733630b9ba103830ba341034b9903737ba1031bd3d60611b604482015290519081900360640190fd5b6000341161118a57600080fd5b60606111998b89338c8b612667565b90506002548a146113945760015481516001600160a01b0390911690639dc29fac903390849060001981019081106111cd57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561122457600080fd5b505af1158015611238573d6000803e3d6000fd5b505050507fa4bd93d5396d36bd742684adb6dbe69f45c14792170e66134569c1adf91d1fb93360008360018551038151811061127057fe5b60200260200101518d8a8a8a8a8a604051808a6001600160a01b03166001600160a01b0316815260200189815260200188815260200187815260200180602001866001600160a01b03166001600160a01b031681526020018581526020018415151515815260200180602001838103835288818151815260200191508051906020019060200280838360005b838110156113145781810151838201526020016112fc565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611350578181015183820152602001611338565b50505050905090810190601f16801561137d5780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b5050505050505050505050565b60015460408051632770a7eb60e21b8152336004820152602481018a905290516001600160a01b0390921691639dc29fac9160448082019260009290919082900301818387803b1580156113f457600080fd5b505af1158015611408573d6000803e3d6000fd5b505050507fa4bd93d5396d36bd742684adb6dbe69f45c14792170e66134569c1adf91d1fb933886000898989898989604051808a6001600160a01b03166001600160a01b0316815260200189815260200188815260200187815260200180602001866001600160a01b03166001600160a01b031681526020018581526020018415151515815260200180602001838103835288818151815260200191508051906020019060200280838360005b838110156114cd5781810151838201526020016114b5565b50505050905001838103825284818151815260200191508051906020019080838360005b838110156115095781810151838201526020016114f1565b50505050905090810190601f1680156115365780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a150505050505050565b61155d61173f565b6001600160a01b0316336001600160a01b0316148061158e57503360009081526003602052604090205460ff166001145b61159757600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6115c1612663565b6000546001600160a01b03908116911614611611576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60008061166661173f565b6001600160a01b0316336001600160a01b0316148061169757503360009081526003602052604090205460ff166001145b6116a057600080fd5b6001600160a01b0385166116b357600080fd5b6040805163354aedbd60e21b81526001600160a01b038681166004830152858116602483015282519088169263d52bb6f49260448082019391829003018186803b15801561170057600080fd5b505afa158015611714573d6000803e3d6000fd5b505050506040513d604081101561172a57600080fd5b50805160209091015190969095509350505050565b6000546001600160a01b031690565b600061175861173f565b6001600160a01b0316336001600160a01b0316148061178957503360009081526003602052604090205460ff166001145b61179257600080fd5b506001546001600160a01b031690565b6117aa612663565b6000546001600160a01b039081169116146117fa576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600360205260409020805460ff19169055565b61182361173f565b6001600160a01b0316336001600160a01b0316148061185457503360009081526003602052604090205460ff166001145b61185d57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6001600160a01b03881661189157600080fd5b60015487516001600160a01b0390911690889060001981019081106118b257fe5b60200260200101516001600160a01b031614611915576040805162461bcd60e51b815260206004820152601860248201527f6c6173742066726f6d50617468206973206e6f7420637a7a0000000000000000604482015290519081900360640190fd5b60606119258c8c8a338d8c612909565b90506002548a14611b1f5760015481516001600160a01b0390911690639dc29fac9033908490600019810190811061195957fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119b057600080fd5b505af11580156119c4573d6000803e3d6000fd5b505050507fa4bd93d5396d36bd742684adb6dbe69f45c14792170e66134569c1adf91d1fb9338d836001855103815181106119fb57fe5b60200260200101518d8a8a8a8a8a604051808a6001600160a01b03166001600160a01b0316815260200189815260200188815260200187815260200180602001866001600160a01b03166001600160a01b031681526020018581526020018415151515815260200180602001838103835288818151815260200191508051906020019060200280838360005b83811015611a9f578181015183820152602001611a87565b50505050905001838103825284818151815260200191508051906020019080838360005b83811015611adb578181015183820152602001611ac3565b50505050905090810190601f168015611b085780820380516001836020036101000a031916815260200191505b509b50505050505050505050505060405180910390a15b505050505050505050505050565b611b3561173f565b6001600160a01b0316336001600160a01b03161480611b6657503360009081526003602052604090205460ff166001145b611b6f57600080fd5b60008211611b7c57600080fd5b80821015611bbb5760405162461bcd60e51b8152600401808060200182810382526023815260200180612d3a6023913960400191505060405180910390fd5b8015611c2d57600154604080516340c10f1960e01b81523360048201526024810184905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b158015611c1457600080fd5b505af1158015611c28573d6000803e3d6000fd5b505050505b600154604080516340c10f1960e01b81526001600160a01b0387811660048301528486036024830152915191909216916340c10f1991604480830192600092919082900301818387803b158015611c8357600080fd5b505af1158015611c97573d6000803e3d6000fd5b5050604080516001600160a01b038816815260208101879052808201859052606081018690526000608082015290517fd4b70e0d50bcb13e7654961d68ed7b96f84a2fcc32edde496c210382dc02570893509081900360a0019150a150505050565b60006001600160a01b038416611d405760405162461bcd60e51b8152600401808060200182810382526021815260200180612d5d6021913960400191505060405180910390fd5b6001600160a01b038316611d855760405162461bcd60e51b8152600401808060200182810382526023815260200180612cc66023913960400191505060405180910390fd5b81611dd7576040805162461bcd60e51b815260206004820152601c60248201527f617070726f7665205f616d6f756e7420697320746865207a65726f2000000000604482015290519081900360640190fd5b6001600160a01b03831660009081526004602052604090205460ff16600114611e47576040805162461bcd60e51b815260206004820152601e60248201527f7370656e646572206973206e6f7420726f757465722061646472657373200000604482015290519081900360640190fd5b836001600160a01b031663095ea7b384846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611ea757600080fd5b505af1158015611ebb573d6000803e3d6000fd5b505050506040513d6020811015611ed157600080fd5b50600195945050505050565b611ee561173f565b6001600160a01b0316336001600160a01b03161480611f1657503360009081526003602052604090205460ff166001145b611f1f57600080fd5b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b60606001600160a01b038216611f5857600080fd5b6040805163d06ca61f60e01b815260048101868152602482019283528551604483015285516001600160a01b0386169363d06ca61f9389938993909291606401906020808601910280838360005b83811015611fbe578181015183820152602001611fa6565b50505050905001935050505060006040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561201f57600080fd5b8101908080516040519392919084600160201b82111561203e57600080fd5b90830190602082018581111561205357600080fd5b82518660208202830111600160201b8211171561206f57600080fd5b82525081516020918201928201910280838360005b8381101561209c578181015183820152602001612084565b5050505090500160405250505090509392505050565b6120ba612663565b6000546001600160a01b0390811691161461210a576040805162461bcd60e51b81526020600482018190526024820152600080516020612d1a833981519152604482015290519081900360640190fd5b6001600160a01b03811661214f5760405162461bcd60e51b8152600401808060200182810382526026815260200180612c756026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6121b261173f565b6001600160a01b0316336001600160a01b031614806121e357503360009081526003602052604090205460ff166001145b6121ec57600080fd5b6001600160a01b0388166121ff57600080fd5b6001600160a01b03831661221257600080fd5b6000871161221f57600080fd5b83871161225d5760405162461bcd60e51b8152600401808060200182810382526023815260200180612d3a6023913960400191505060405180910390fd5b60015482516001600160a01b0390911690839060009061227957fe5b60200260200101516001600160a01b0316146122d0576040805162461bcd60e51b81526020600482015260116024820152703830ba3410181034b9903737ba1031bd3d60791b604482015290519081900360640190fd5b600154604080516340c10f1960e01b8152306004820152602481018a905290516001600160a01b03909216916340c10f199160448082019260009290919082900301818387803b15801561232357600080fd5b505af1158015612337573d6000803e3d6000fd5b50505050600084111561240557600180546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50519050806124035760405162461bcd60e51b8152600401808060200182810382526031815260200180612ce96031913960400191505060405180910390fd5b505b6060610e7785890388858c88876129da565b606060008560008151811061242857fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b15801561248057600080fd5b505afa158015612494573d6000803e3d6000fd5b505050506040513d60208110156124aa57600080fd5b50519050878110156124d9576124d7866000815181106124c657fe5b602002602001015185600019611cf9565b505b836001600160a01b03166338ed173989898989886040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561256657818101518382015260200161254e565b505050509050019650505050505050600060405180830381600087803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156125cc57600080fd5b8101908080516040519392919084600160201b8211156125eb57600080fd5b90830190602082018581111561260057600080fd5b82518660208202830111600160201b8211171561261c57600080fd5b82525081516020918201928201910280838360005b83811015612649578181015183820152602001612631565b505050509050016040525050509150509695505050505050565b3390565b606060008560008151811061267857fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b1580156126d057600080fd5b505afa1580156126e4573d6000803e3d6000fd5b505050506040513d60208110156126fa57600080fd5b505190503481101561271857612716866000815181106124c657fe5b505b8560008151811061272557fe5b60200260200101516001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561276757600080fd5b505af115801561277b573d6000803e3d6000fd5b5050505050836001600160a01b03166338ed173934898989886040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561280d5781810151838201526020016127f5565b505050509050019650505050505050600060405180830381600087803b15801561283657600080fd5b505af115801561284a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561287357600080fd5b8101908080516040519392919084600160201b82111561289257600080fd5b9083019060208201858111156128a757600080fd5b82518660208202830111600160201b821117156128c357600080fd5b82525081516020918201928201910280838360005b838110156128f05781810151838201526020016128d8565b5050505090500160405250505091505095945050505050565b606060008560008151811061291a57fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b15801561297257600080fd5b505afa158015612986573d6000803e3d6000fd5b505050506040513d602081101561299c57600080fd5b50519050878110156129ba576129b8866000815181106124c657fe5b505b6124d9866000815181106129ca57fe5b602002602001015133308b612b17565b60606000856000815181106129eb57fe5b60209081029190910181015160408051636eb1769f60e11b81523060048201526001600160a01b0388811660248301529151919092169263dd62ed3e9260448082019391829003018186803b158015612a4357600080fd5b505afa158015612a57573d6000803e3d6000fd5b505050506040513d6020811015612a6d57600080fd5b5051905087811015612a8b57612a89866000815181106124c657fe5b505b836001600160a01b03166318cbafe589898989886040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360008381101561256657818101518382015260200161254e565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b60208310612b9c5780518252601f199092019160209182019101612b7d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612bfe576040519150601f19603f3d011682016040523d82523d6000602084013e612c03565b606091505b5091509150818015612c31575080511580612c315750808060200190516020811015612c2e57600080fd5b50515b612c6c5760405162461bcd60e51b8152600401808060200182810382526024815260200180612d7e6024913960400191505060405180910390fd5b50505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737373776170416e644d696e74546f6b656e576974685061746820676173205472616e73666572206572726f72617070726f7665207370656e64657220697320746865207a65726f206164647265737373776170416e644d696e74546f6b656e466f72457468576974685061746820676173205472616e73666572206572726f724f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572524f555445523a207472616e7366657220616d6f756e74206578636565647320676173617070726f766520746f6b656e20697320746865207a65726f20616464726573735472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a264697066735822122051e192bbcb97baebe47b229ad8fa4770a3533205ae0659c593b3f0fdd7d628b364736f6c63430006060033000000000000000000000000150bbcff6b1b4d528b48f1a300585dea0b6490b60000000000000000000000000000000000000000000000000000000000000001