0x608060405234801561001057600080fd5b506114b0806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c8063715018a6116100e3578063bc2927821161008c578063e985e9c511610066578063e985e9c51461036f578063ee07080514610385578063f2fde38b1461039257600080fd5b8063bc29278214610336578063c0276ee114610349578063c87b56dd1461035c57600080fd5b806395d89b41116100bd57806395d89b41146102e1578063a22cb4651461031a578063b88d4fde1461032857600080fd5b8063715018a6146102c05780638129fc1c146102c85780638da5cb5b146102d057600080fd5b8063379607f5116101455780636352211e1161011f5780636352211e146102845780636c0360eb1461029757806370a082311461029f57600080fd5b8063379607f51461025e57806342842e0e1461025057806355f804b31461027157600080fd5b8063081812fc11610176578063081812fc14610211578063095ea7b31461023d57806323b872dd1461025057600080fd5b806301ffc9a71461019d57806306fdde03146101c557806307754a4e14610207575b600080fd5b6101b06101ab366004610d97565b6103a5565b60405190151581526020015b60405180910390f35b60408051808201909152600e81527f4f434220546f6b656e626f756e6400000000000000000000000000000000000060208201525b6040516101bc9190610dec565b61020f610442565b005b61022561021f366004610e1f565b50600090565b6040516001600160a01b0390911681526020016101bc565b61020f61024b366004610e4d565b61049c565b61020f61024b366004610e79565b61020f61026c366004610e1f565b6104ce565b61020f61027f366004610f03565b61057e565b610225610292366004610e1f565b610598565b6101fa61061b565b6102b26102ad366004610f45565b6106a9565b6040519081526020016101bc565b61020f610731565b61020f610745565b6033546001600160a01b0316610225565b60408051808201909152600481527f4f4342540000000000000000000000000000000000000000000000000000000060208201526101fa565b61020f61024b366004610f62565b61020f61024b366004610fa0565b61020f610344366004611013565b6108c3565b606554610225906001600160a01b031681565b6101fa61036a366004610e1f565b6109be565b6101b061037d366004611088565b600092915050565b6067546101b09060ff1681565b61020f6103a0366004610f45565b610a2d565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b03198316148061040857507f80ac58cd000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b8061043c57507f5b5e139f000000000000000000000000000000000000000000000000000000006001600160e01b03198316145b92915050565b61044a610aba565b6067805460ff19166001179055604051600090339082907fdeaa91b6123d068f5821d0fb0678463d1a8a6079fe8af5de3ce5e896dcf9133d906104929061270f815260200190565b60405180910390a4565b6040517f9f6a806500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6065546040516331a9108f60e11b81526004810183905282916001600160a01b031690636352211e90602401602060405180830381865afa158015610517573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053b91906110b6565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450565b610586610aba565b6066610593828483611171565b505050565b60675460009060ff16156105ae57506000919050565b6065546040516331a9108f60e11b8152600481018490526001600160a01b0390911690636352211e90602401602060405180830381865afa1580156105f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c91906110b6565b60668054610628906110e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610654906110e9565b80156106a15780601f10610676576101008083540402835291602001916106a1565b820191906000526020600020905b81548152906001019060200180831161068457829003601f168201915b505050505081565b6065546040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015260009216906370a0823190602401602060405180830381865afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190611232565b610739610aba565b6107436000610b14565b565b600054610100900460ff16158080156107655750600054600160ff909116105b8061077f5750303b15801561077f575060005460ff166001145b6107f65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610819576000805461ff0019166101001790555b6065805473ffffffffffffffffffffffffffffffffffffffff191673be82b9533ddf0acaddcaa6af38830ff4b919482c1790556040805160608101909152603f80825261143c6020830139606690610871908261124b565b5061087a610b73565b80156108c0576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b60005b81811015610593578282828181106108e0576108e061130b565b60655460209091029290920135916001600160a01b03169050636352211e8585858181106109105761091061130b565b905060200201356040518263ffffffff1660e01b815260040161093591815260200190565b602060405180830381865afa158015610952573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097691906110b6565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46001016108c6565b606061271082106109fb576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6066610a0683610be6565b604051602001610a17929190611321565b6040516020818303038152906040529050919050565b610a35610aba565b6001600160a01b038116610ab15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107ed565b6108c081610b14565b6033546001600160a01b031633146107435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107ed565b603380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610bde5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107ed565b610743610d23565b606081600003610c2957505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610c535780610c3d816113be565b9150610c4c9050600a836113ed565b9150610c2d565b60008167ffffffffffffffff811115610c6e57610c6e6110d3565b6040519080825280601f01601f191660200182016040528015610c98576020820181803683370190505b5090505b8415610d1b57610cad600183611401565b9150610cba600a86611414565b610cc5906030611428565b60f81b818381518110610cda57610cda61130b565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350610d14600a866113ed565b9450610c9c565b949350505050565b600054610100900460ff16610d8e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107ed565b61074333610b14565b600060208284031215610da957600080fd5b81356001600160e01b031981168114610dc157600080fd5b9392505050565b60005b83811015610de3578181015183820152602001610dcb565b50506000910152565b6020815260008251806020840152610e0b816040850160208701610dc8565b601f01601f19169190910160400192915050565b600060208284031215610e3157600080fd5b5035919050565b6001600160a01b03811681146108c057600080fd5b60008060408385031215610e6057600080fd5b8235610e6b81610e38565b946020939093013593505050565b600080600060608486031215610e8e57600080fd5b8335610e9981610e38565b92506020840135610ea981610e38565b929592945050506040919091013590565b60008083601f840112610ecc57600080fd5b50813567ffffffffffffffff811115610ee457600080fd5b602083019150836020828501011115610efc57600080fd5b9250929050565b60008060208385031215610f1657600080fd5b823567ffffffffffffffff811115610f2d57600080fd5b610f3985828601610eba565b90969095509350505050565b600060208284031215610f5757600080fd5b8135610dc181610e38565b60008060408385031215610f7557600080fd5b8235610f8081610e38565b915060208301358015158114610f9557600080fd5b809150509250929050565b600080600080600060808688031215610fb857600080fd5b8535610fc381610e38565b94506020860135610fd381610e38565b935060408601359250606086013567ffffffffffffffff811115610ff657600080fd5b61100288828901610eba565b969995985093965092949392505050565b6000806020838503121561102657600080fd5b823567ffffffffffffffff8082111561103e57600080fd5b818501915085601f83011261105257600080fd5b81358181111561106157600080fd5b8660208260051b850101111561107657600080fd5b60209290920196919550909350505050565b6000806040838503121561109b57600080fd5b82356110a681610e38565b91506020830135610f9581610e38565b6000602082840312156110c857600080fd5b8151610dc181610e38565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806110fd57607f821691505b60208210810361111d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561059357600081815260208120601f850160051c8101602086101561114a5750805b601f850160051c820191505b8181101561116957828155600101611156565b505050505050565b67ffffffffffffffff831115611189576111896110d3565b61119d8361119783546110e9565b83611123565b6000601f8411600181146111d157600085156111b95750838201355b600019600387901b1c1916600186901b17835561122b565b600083815260209020601f19861690835b8281101561120257868501358255602094850194600190920191016111e2565b508682101561121f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60006020828403121561124457600080fd5b5051919050565b815167ffffffffffffffff811115611265576112656110d3565b6112798161127384546110e9565b84611123565b602080601f8311600181146112ae57600084156112965750858301515b600019600386901b1c1916600185901b178555611169565b600085815260208120601f198616915b828110156112dd578886015182559484019460019091019084016112be565b50858210156112fb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600080845461132f816110e9565b60018281168015611347576001811461135c5761138b565b60ff198416875282151583028701945061138b565b8860005260208060002060005b858110156113825781548a820152908401908201611369565b50505082870194505b50505050835161139f818360208801610dc8565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016113d0576113d06113a8565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826113fc576113fc6113d7565b500490565b8181038181111561043c5761043c6113a8565b600082611423576114236113d7565b500690565b8082018082111561043c5761043c6113a856fe68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f4f6e436861696e42697264732f74626d657461646174612f6d61696e2fa26469706673582212203edd1a3b06f2470ced3796af229100b4d3a7a399d45f73d5db26c813c22d13f364736f6c63430008110033