60806040523480156200001157600080fd5b506040516200105e3803806200105e83398101604081905262000034916200028a565b83836003620000448382620003a5565b506004620000538282620003a5565b50506005805461ffff191661010060ff8616021790555062000076338262000080565b5050505062000499565b6001600160a01b038216620000dc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620000ea6000838362000155565b8060026000828254620000fe919062000471565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60055460ff1615620001bd5760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401620000d3565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001ea57600080fd5b81516001600160401b0380821115620002075762000207620001c2565b604051601f8301601f19908116603f01168101908282118183101715620002325762000232620001c2565b81604052838152602092508660208588010111156200025057600080fd5b600091505b8382101562000274578582018301518183018401529082019062000255565b6000602085830101528094505050505092915050565b60008060008060808587031215620002a157600080fd5b84516001600160401b0380821115620002b957600080fd5b620002c788838901620001d8565b95506020870151915080821115620002de57600080fd5b50620002ed87828801620001d8565b935050604085015160ff811681146200030557600080fd5b6060959095015193969295505050565b600181811c908216806200032a57607f821691505b6020821081036200034b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001bd576000816000526020600020601f850160051c810160208610156200037c5750805b601f850160051c820191505b818110156200039d5782815560010162000388565b505050505050565b81516001600160401b03811115620003c157620003c1620001c2565b620003d981620003d2845462000315565b8462000351565b602080601f831160018114620004115760008415620003f85750858301515b600019600386901b1c1916600185901b1785556200039d565b600085815260208120601f198616915b82811015620004425788860151825594840194600190910190840162000421565b5085821015620004615787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200049357634e487b7160e01b600052601160045260246000fd5b92915050565b610bb580620004a96000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101c1578063a457c2d7146101c9578063a9059cbb146101dc578063dd62ed3e146101ef57600080fd5b806342966c681461017a5780635c975abb1461018d57806370a082311461019857600080fd5b806323b872dd116100bd57806323b872dd14610137578063313ce5671461014a578063395093511461016757600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec610228565b6040516100f991906109e5565b60405180910390f35b610115610110366004610a50565b6102ba565b60405190151581526020016100f9565b6002545b6040519081526020016100f9565b610115610145366004610a7a565b6102d4565b600554610100900460ff1660405160ff90911681526020016100f9565b610115610175366004610a50565b6102f8565b610115610188366004610ab6565b610337565b60055460ff16610115565b6101296101a6366004610acf565b6001600160a01b031660009081526020819052604090205490565b6100ec61034b565b6101156101d7366004610a50565b61035a565b6101156101ea366004610a50565b610409565b6101296101fd366004610af1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461023790610b24565b80601f016020809104026020016040519081016040528092919081815260200182805461026390610b24565b80156102b05780601f10610285576101008083540402835291602001916102b0565b820191906000526020600020905b81548152906001019060200180831161029357829003601f168201915b5050505050905090565b6000336102c8818585610417565b60019150505b92915050565b6000336102e2858285610570565b6102ed858585610602565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906102c89082908690610332908790610b5e565b610417565b600061034333836107fa565b506001919050565b60606004805461023790610b24565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156103fc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ed8286868403610417565b6000336102c8818585610602565b6001600160a01b0383166104925760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103f3565b6001600160a01b03821661050e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103f3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146105fc57818110156105ef5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103f3565b6105fc8484848403610417565b50505050565b6001600160a01b03831661067e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103f3565b6001600160a01b0382166106fa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103f3565b61070583838361096c565b6001600160a01b038316600090815260208190526040902054818110156107945760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103f3565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105fc565b6001600160a01b0382166108765760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103f3565b6108828260008361096c565b6001600160a01b038216600090815260208190526040902054818110156109115760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103f3565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610563565b505050565b60055460ff16156109675760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e7366657220776860448201527f696c65207061757365640000000000000000000000000000000000000000000060648201526084016103f3565b60006020808352835180602085015260005b81811015610a13578581018301518582016040015282016109f7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a4b57600080fd5b919050565b60008060408385031215610a6357600080fd5b610a6c83610a34565b946020939093013593505050565b600080600060608486031215610a8f57600080fd5b610a9884610a34565b9250610aa660208501610a34565b9150604084013590509250925092565b600060208284031215610ac857600080fd5b5035919050565b600060208284031215610ae157600080fd5b610aea82610a34565b9392505050565b60008060408385031215610b0457600080fd5b610b0d83610a34565b9150610b1b60208401610a34565b90509250929050565b600181811c90821680610b3857607f821691505b602082108103610b5857634e487b7160e01b600052602260045260246000fd5b50919050565b808201808211156102ce57634e487b7160e01b600052601160045260246000fdfea2646970667358221220c9568e118cae2df37674fef9581f8b26c7df69a846e831b85a4adec1d1f6610064736f6c63430008170033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000d3c21bcecceda10000000000000000000000000000000000000000000000000000000000000000000005547261697400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055452414954000000000000000000000000000000000000000000000000000000