0x60806040523480156200001157600080fd5b506040516200159638038062001596833981016040819052620000349162000224565b81816001600160a01b0382166200005e5760405163cfa3b4d360e01b815260040160405180910390fd5b6200006b600083620000b1565b6001600160a01b03811615620000a757620000a77ff1b411d6abb365480ac902cc153c45e9ded5847a2265ce6d01945d253edb6bc782620000b1565b505050506200025b565b620000c88282620000f460201b620007a71760201c565b6000828152600160209081526040909120620000ef9183906200082b62000195821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000191576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001503390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000620001ac836001600160a01b038416620001b5565b90505b92915050565b6000818152600183016020526040812054620001fe57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001af565b506000620001af565b80516001600160a01b03811681146200021f57600080fd5b919050565b6000806040838503121562000237578182fd5b620002428362000207565b9150620002526020840162000207565b90509250929050565b61132b806200026b6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063662d2ebf116100a2578063a217fddf11610071578063a217fddf14610287578063a4356b9c1461028f578063ca15c873146102bb578063d547741f146102ce578063ffa1ad74146102e157600080fd5b8063662d2ebf1461022e57806375829def146102365780639010d07c1461024957806391d148541461027457600080fd5b80631aca6376116100e95780631aca63761461019d578063248a9ca3146101b05780632f2ff15d146101e157806336568abe146101f4578063634252dc1461020757600080fd5b806301ffc9a71461011b57806314051f2814610143578063150b7a021461016a578063181fd10d14610188575b600080fd5b61012e6101293660046110cc565b610313565b60405190151581526020015b60405180910390f35b610151632142170760e11b81565b6040516001600160e01b0319909116815260200161013a565b610151610178366004610f8b565b630a85bd0160e11b949350505050565b61019b610196366004610f6f565b61033e565b005b61019b6101ab3660046110f4565b610434565b6101d36101be366004611064565b60009081526020819052604090206001015490565b60405190815260200161013a565b61019b6101ef36600461107c565b6104d9565b61019b61020236600461107c565b6104fe565b6101d37ff1b411d6abb365480ac902cc153c45e9ded5847a2265ce6d01945d253edb6bc781565b61019b610581565b61019b610244366004610f6f565b610611565b61025c6102573660046110ab565b610723565b6040516001600160a01b03909116815260200161013a565b61012e61028236600461107c565b610742565b6101d3600081565b61025c61029d366004610f6f565b6001600160a01b039081166000908152600260205260409020541690565b6101d36102c9366004611064565b61076b565b61019b6102dc36600461107c565b610782565b6103066040518060400160405280600681526020016576312e302e3160d01b81525081565b60405161013a91906111c5565b60006001600160e01b03198216635a05180f60e01b1480610338575061033882610840565b92915050565b6001600160a01b0380821660009081526002602052604090205482911661037857604051637e441a7160e01b815260040160405180910390fd5b6001600160a01b0382811660009081526002602052604090205433911681146103b4576040516311845c2160e01b815260040160405180910390fd5b6001600160a01b038316600090815260026020526040812080546001600160a01b03191690556103e49082610875565b6103ef600084610897565b806001600160a01b0316836001600160a01b03167ff7d1bb5e8beae5eb27da232cd800c5b92567a0ec8bf491be2540296cd9fb8c8360405160405180910390a3505050565b61045e7ff1b411d6abb365480ac902cc153c45e9ded5847a2265ce6d01945d253edb6bc733610742565b61047b576040516311845c2160e01b815260040160405180910390fd5b816001600160a01b0316836001600160a01b03167f87f7534ef381864c1b415d34dde9d66c08f2233e0a724d7b0f2f3b231273f1f6836040516104c091815260200190565b60405180910390a36104d4833084846108b9565b505050565b6000828152602081905260409020600101546104f481610967565b6104d48383610875565b6001600160a01b03811633146105735760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61057d8282610897565b5050565b336000818152600260205260409020546001600160a01b03166105b757604051637e441a7160e01b815260040160405180910390fd5b3360008181526002602052604080822080546001600160a01b0319811690915590516001600160a01b0390911691829184917f2e5e94070b04b7ecf2b745c7c4b33129d999e4f85036548cfbd38e3d601d5e1591a3505050565b61061c600033610742565b610639576040516311845c2160e01b815260040160405180910390fd5b336000818152600260205260409020546001600160a01b03161561067057604051630d2c614160e21b815260040160405180910390fd5b336001600160a01b0383166106985760405163cfa3b4d360e01b815260040160405180910390fd5b806001600160a01b0316836001600160a01b031614156106cb576040516307034acb60e11b815260040160405180910390fd5b6001600160a01b0381811660008181526002602052604080822080546001600160a01b0319169488169485179055517fbdd36143ee09de60bdefca70680e0f71189b2ed7acee364b53917ad433fdaf809190a3505050565b600082815260016020526040812061073b9083610974565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600081815260016020526040812061033890610980565b60008281526020819052604090206001015461079d81610967565b6104d48383610897565b6107b18282610742565b61057d576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556107e73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061073b836001600160a01b03841661098a565b60006001600160e01b03198216637965db0b60e01b148061033857506301ffc9a760e01b6001600160e01b0319831614610338565b61087f82826107a7565b60008281526001602052604090206104d4908261082b565b6108a182826109d9565b60008281526001602052604090206104d49082610a3e565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091018252602080820180516001600160e01b0316632142170760e11b1790528251606081019093526027808452919260009261093b92859291906112cf908301396001600160a01b0389169190610a53565b9050805160001461095f57604051633380ed4f60e21b815260040160405180910390fd5b505050505050565b6109718133610a6a565b50565b600061073b8383610ace565b6000610338825490565b60008181526001830160205260408120546109d157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610338565b506000610338565b6109e38282610742565b1561057d576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061073b836001600160a01b038416610b06565b6060610a628484600085610c23565b949350505050565b610a748282610742565b61057d57610a8c816001600160a01b03166014610d54565b610a97836020610d54565b604051602001610aa8929190611150565b60408051601f198184030181529082905262461bcd60e51b825261056a916004016111c5565b6000826000018281548110610af357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60008181526001830160205260408120548015610c19576000610b2a60018361122f565b8554909150600090610b3e9060019061122f565b9050818114610bbf576000866000018281548110610b6c57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110610b9d57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610bde57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610338565b6000915050610338565b606082471015610c845760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161056a565b6001600160a01b0385163b610cdb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161056a565b600080866001600160a01b03168587604051610cf79190611134565b60006040518083038185875af1925050503d8060008114610d34576040519150601f19603f3d011682016040523d82523d6000602084013e610d39565b606091505b5091509150610d49828286610f36565b979650505050505050565b60606000610d63836002611210565b610d6e9060026111f8565b67ffffffffffffffff811115610d9457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610dbe576020820181803683370190505b509050600360fc1b81600081518110610de757634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610e2457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506000610e48846002611210565b610e539060016111f8565b90505b6001811115610ee7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610e9557634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110610eb957634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93610ee081611276565b9050610e56565b50831561073b5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161056a565b60608315610f4557508161073b565b825115610f555782518084602001fd5b8160405162461bcd60e51b815260040161056a91906111c5565b600060208284031215610f80578081fd5b813561073b816112b9565b60008060008060808587031215610fa0578283fd5b8435610fab816112b9565b93506020850135610fbb816112b9565b925060408501359150606085013567ffffffffffffffff80821115610fde578283fd5b818701915087601f830112610ff1578283fd5b813581811115611003576110036112a3565b604051601f8201601f19908116603f0116810190838211818310171561102b5761102b6112a3565b816040528281528a6020848701011115611043578586fd5b82602086016020830137918201602001949094529598949750929550505050565b600060208284031215611075578081fd5b5035919050565b6000806040838503121561108e578182fd5b8235915060208301356110a0816112b9565b809150509250929050565b600080604083850312156110bd578182fd5b50508035926020909101359150565b6000602082840312156110dd578081fd5b81356001600160e01b03198116811461073b578182fd5b600080600060608486031215611108578283fd5b8335611113816112b9565b92506020840135611123816112b9565b929592945050506040919091013590565b60008251611146818460208701611246565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611188816017850160208801611246565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516111b9816028840160208801611246565b01602801949350505050565b60208152600082518060208401526111e4816040850160208701611246565b601f01601f19169190910160400192915050565b6000821982111561120b5761120b61128d565b500190565b600081600019048311821515161561122a5761122a61128d565b500290565b6000828210156112415761124161128d565b500390565b60005b83811015611261578181015183820152602001611249565b83811115611270576000848401525b50505050565b6000816112855761128561128d565b506000190190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461097157600080fdfe4e4654506f6f6c3a2045524337323120736166655472616e7366657246726f6d206661696c6564a264697066735822122047e4584186d41b7c156afe17f8f6dbbbad87f71dc895a9e541fc8131887f706264736f6c6343000804003300000000000000000000000028781198be830ca9d73d5a997984df9eac2fc06a0000000000000000000000006b9a9f631b9c84f8e332a01c30f086f5a9927c26