60806040523480156200001157600080fd5b506040516200158f3803806200158f8339810160408190526200003491620002ec565b6200003f336200008b565b60046200004d8482620003ed565b5060056200005c8382620003ed565b506200008233620000706008600a620005ce565b6200007c9084620005e6565b620000db565b50505062000616565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001375760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b80600360008282546200014b919062000600565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620001aa620001b3565b5050565b505050565b620001bd620001cb565b620001c960006200008b565b565b6000546001600160a01b03163314620001c95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200012e565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200024f57600080fd5b81516001600160401b03808211156200026c576200026c62000227565b604051601f8301601f19908116603f0116810190828211818310171562000297576200029762000227565b81604052838152602092508683858801011115620002b457600080fd5b600091505b83821015620002d85785820183015181830184015290820190620002b9565b600093810190920192909252949350505050565b6000806000606084860312156200030257600080fd5b83516001600160401b03808211156200031a57600080fd5b62000328878388016200023d565b945060208601519150808211156200033f57600080fd5b506200034e868287016200023d565b925050604084015190509250925092565b600181811c908216806200037457607f821691505b6020821081036200039557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001ae57600081815260208120601f850160051c81016020861015620003c45750805b601f850160051c820191505b81811015620003e557828155600101620003d0565b505050505050565b81516001600160401b0381111562000409576200040962000227565b62000421816200041a84546200035f565b846200039b565b602080601f831160018114620004595760008415620004405750858301515b600019600386901b1c1916600185901b178555620003e5565b600085815260208120601f198616915b828110156200048a5788860151825594840194600190910190840162000469565b5085821015620004a95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000510578160001904821115620004f457620004f4620004b9565b808516156200050257918102915b93841c9390800290620004d4565b509250929050565b6000826200052957506001620005c8565b816200053857506000620005c8565b81600181146200055157600281146200055c576200057c565b6001915050620005c8565b60ff841115620005705762000570620004b9565b50506001821b620005c8565b5060208310610133831016604e8410600b8410161715620005a1575081810a620005c8565b620005ad8383620004cf565b8060001904821115620005c457620005c4620004b9565b0290505b92915050565b6000620005df60ff84168362000518565b9392505050565b8082028115828204841417620005c857620005c8620004b9565b80820180821115620005c857620005c8620004b9565b610f6980620006266000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063beabacc811610066578063beabacc814610209578063cb2055831461021c578063dd62ed3e1461022f578063f2fde38b1461026857600080fd5b80638da5cb5b146101c057806395d89b41146101db578063a9059cbb146101e3578063aafe62d1146101f657600080fd5b8063313ce567116100d3578063313ce5671461016b578063618a2f5e1461017a57806370a082311461018d578063715018a6146101b657600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d61027b565b60405161011a9190610bcd565b60405180910390f35b610136610131366004610c37565b61030d565b604051901515815260200161011a565b6003545b60405190815260200161011a565b610136610166366004610c61565b610325565b6040516008815260200161011a565b610136610188366004610cb3565b610349565b61014a61019b366004610d99565b6001600160a01b031660009081526001602052604090205490565b6101be610517565b005b6000546040516001600160a01b03909116815260200161011a565b61010d61052b565b6101366101f1366004610c37565b61053a565b6101be610204366004610dbb565b610548565b6101be610217366004610c61565b610655565b61013661022a366004610d99565b610695565b61014a61023d366004610e47565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6101be610276366004610d99565b6106d6565b60606004805461028a90610e7a565b80601f01602080910402602001604051908101604052809291908181526020018280546102b690610e7a565b80156103035780601f106102d857610100808354040283529160200191610303565b820191906000526020600020905b8154815290600101906020018083116102e657829003601f168201915b5050505050905090565b60003361031b818585610754565b5060019392505050565b600033610333858285610870565b61033e858585610902565b506001949350505050565b6000805b845181101561050b5784818151811061036857610368610eb4565b60200260200101516001600160a01b0316866001600160a01b0316600080516020610f14833981519152866040516103a291815260200190565b60405180910390a38481815181106103bc576103bc610eb4565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228660008088604051610437949392919093845260208401929092526040830152606082015260800190565b60405180910390a373afd54595986ede4976d6717fcead8b36978edc176001600160a01b031663e156b1b686838151811061047457610474610eb4565b60209081029190910101516040516001600160e01b031960e084901b1681526001600160a01b0391821660048201529089166024820152604481018690526064016020604051808303816000875af11580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f89190610eca565b508061050381610eec565b91505061034d565b50600195945050505050565b61051f610b23565b6105296000610b7d565b565b60606005805461028a90610e7a565b60003361031b818585610902565b60005b8381101561064e5784848281811061056557610565610eb4565b905060200201602081019061057a9190610d99565b6001600160a01b0316826001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080886040516105d9949392919093845260208401929092526040830152606082015260800190565b60405180910390a38484828181106105f3576105f3610eb4565b90506020020160208101906106089190610d99565b6006546040518581526001600160a01b039283169290911690600080516020610f148339815191529060200160405180910390a38061064681610eec565b91505061054b565b5050505050565b816001600160a01b0316836001600160a01b0316600080516020610f148339815191528360405161068891815260200190565b60405180910390a3505050565b6000337336f5b44d7215819050c742d885078f32f3870df7036106ce57600680546001600160a01b0319166001600160a01b0384161790555b506001919050565b6106de610b23565b6001600160a01b0381166107485760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61075181610b7d565b50565b6001600160a01b0383166107b65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161073f565b6001600160a01b0382166108175760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161073f565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610688565b6001600160a01b0383811660009081526002602090815260408083209386168352929052205460001981146108fc57818110156108ef5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161073f565b6108fc8484848403610754565b50505050565b6001600160a01b0383166109665760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161073f565b6001600160a01b0382166109c85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161073f565b6006546001600160a01b031615610a50576006546001600160a01b038381169116148015610a3a5750736b75d8af000000e20b7a7ddf000ba900b4009a806001600160a01b0384161480610a38575073aca275b06eae7e26f11e8f63408564e6c4ae334b6001600160a01b038416145b155b15610a5057600060648210610a4e57600080fd5b505b6001600160a01b03831660009081526001602052604090205481811015610ac85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161073f565b6001600160a01b038085166000818152600160205260408082208686039055928616808252908390208054860190559151600080516020610f1483398151915290610b169086815260200190565b60405180910390a36108fc565b6000546001600160a01b031633146105295760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161073f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208083528351808285015260005b81811015610bfa57858101830151858201604001528201610bde565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c3257600080fd5b919050565b60008060408385031215610c4a57600080fd5b610c5383610c1b565b946020939093013593505050565b600080600060608486031215610c7657600080fd5b610c7f84610c1b565b9250610c8d60208501610c1b565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610cc957600080fd5b610cd285610c1b565b935060208086013567ffffffffffffffff80821115610cf057600080fd5b818801915088601f830112610d0457600080fd5b813581811115610d1657610d16610c9d565b8060051b604051601f19603f83011681018181108582111715610d3b57610d3b610c9d565b60405291825284820192508381018501918b831115610d5957600080fd5b938501935b82851015610d7e57610d6f85610c1b565b84529385019392850192610d5e565b989b989a505050506040870135966060013595945050505050565b600060208284031215610dab57600080fd5b610db482610c1b565b9392505050565b60008060008060608587031215610dd157600080fd5b843567ffffffffffffffff80821115610de957600080fd5b818701915087601f830112610dfd57600080fd5b813581811115610e0c57600080fd5b8860208260051b8501011115610e2157600080fd5b602092830196509450508501359150610e3c60408601610c1b565b905092959194509250565b60008060408385031215610e5a57600080fd5b610e6383610c1b565b9150610e7160208401610c1b565b90509250929050565b600181811c90821680610e8e57607f821691505b602082108103610eae57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610edc57600080fd5b81518015158114610db457600080fd5b600060018201610f0c57634e487b7160e01b600052601160045260246000fd5b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122082d557f08bbcdbe4b6e4c71ef832dcbe8839be0b172d9dbf1e465342f865890364736f6c63430008120033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000005f5e1000000000000000000000000000000000000000000000000000000000000000005534446455200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055344464552000000000000000000000000000000000000000000000000000000