0x6080604052348015600e575f80fd5b50604051611e4f380380611e4f833981016040819052602b916093565b60015f556036336042565b603d816042565b5060be565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6020828403121560a2575f80fd5b81516001600160a01b038116811460b7575f80fd5b9392505050565b611d84806100cb5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c8063715018a6146100595780638da5cb5b14610063578063d99fef4f14610083578063e287b219146100b6578063f2fde38b146100c9575b5f80fd5b6100616100dc565b005b6001546040516001600160a01b0390911681526020015b60405180910390f35b6100966100913660046107d9565b6100ef565b604080516001600160a01b0393841681529290911660208301520161007a565b6100966100c4366004610846565b610481565b6100616100d73660046108a3565b61058a565b6100e4610603565b6100ed5f61065d565b565b5f806100f96106ae565b610101610603565b866101495760405162461bcd60e51b815260206004820152601360248201527210591b5a5b881cd85b1d081c995c5d5a5c9959606a1b60448201526064015b60405180910390fd5b8561018c5760405162461bcd60e51b8152602060048201526013602482015272141c9bde1e481cd85b1d081c995c5d5a5c9959606a1b6044820152606401610140565b6001600160a01b038516158015906101ad57506001600160a01b0385163014155b6101f15760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206c6f676963206164647265737360581b6044820152606401610140565b5f806101ff89898988610481565b91509150816001600160a01b03163b5f1461025c5760405162461bcd60e51b815260206004820152601b60248201527f41646d696e206164647265737320616c72656164792074616b656e00000000006044820152606401610140565b6001600160a01b0381163b156102b45760405162461bcd60e51b815260206004820152601b60248201527f50726f7879206164647265737320616c72656164792074616b656e00000000006044820152606401610140565b5f896040516102c290610705565b8190604051809103905ff59050801580156102df573d5f803e3d5ffd5b509050826001600160a01b0316816001600160a01b0316146103395760405162461bcd60e51b815260206004820152601360248201527210591b5a5b8819195c1b1bde4819985a5b1959606a1b6044820152606401610140565b5f8989838960405161034a90610712565b610356939291906108c3565b8190604051809103905ff5905080158015610373573d5f803e3d5ffd5b509050826001600160a01b0316816001600160a01b0316146103cd5760405162461bcd60e51b8152602060048201526013602482015272141c9bde1e4819195c1b1bde4819985a5b1959606a1b6044820152606401610140565b60405163f2fde38b60e01b81526001600160a01b03898116600483015283169063f2fde38b906024015f604051808303815f87803b15801561040d575f80fd5b505af115801561041f573d5f803e3d5ffd5b5050604080516001600160a01b038087168252851660208201527f1b5b8bc58e50dcc2831d0057d22708e1e10814cdb66da59653374baef3d3eb14935001905060405180910390a15091935091505061047760015f55565b9550959350505050565b5f8060ff60f81b30876040518060200161049a90610705565b6020820181038252601f19601f82011660405250805190602001206040516020016104c89493929190610916565b604051602081830303815290604052805190602001205f1c915060ff60f81b3086604051806020016104f990610712565b601f1982820381018352601f90910116604081905261052090899088908a906020016108c3565b60408051601f198184030181529082905261053e9291602001610966565b604051602081830303815290604052805190602001206040516020016105679493929190610916565b604051602081830303815290604052805190602001205f1c905094509492505050565b610592610603565b6001600160a01b0381166105f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610140565b6106008161065d565b50565b6001546001600160a01b031633146100ed5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610140565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b60025f54036106ff5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610140565b60025f55565b6106c88061098383390190565b610d048061104b83390190565b80356001600160a01b0381168114610735575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261075d575f80fd5b813567ffffffffffffffff8111156107775761077761073a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156107a6576107a661073a565b6040528181528382016020018510156107bd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a086880312156107ed575f80fd5b85359450602086013593506108046040870161071f565b92506108126060870161071f565b9150608086013567ffffffffffffffff81111561082d575f80fd5b6108398882890161074e565b9150509295509295909350565b5f805f8060808587031215610859575f80fd5b84359350602085013592506108706040860161071f565b9150606085013567ffffffffffffffff81111561088b575f80fd5b6108978782880161074e565b91505092959194509250565b5f602082840312156108b3575f80fd5b6108bc8261071f565b9392505050565b60018060a01b038416815260018060a01b0383166020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b6001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b5f81518060208401855e5f93019283525090919050565b5f61097a610974838661094f565b8461094f565b94935050505056fe6080604052348015600e575f80fd5b50601633601a565b6069565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610652806100765f395ff3fe608060405260043610610079575f3560e01c80639623609d1161004c5780639623609d1461010957806399a88ec41461011c578063f2fde38b1461013b578063f3b7dead1461015a575f80fd5b8063204e1c7a1461007d578063715018a6146100b85780637eff275e146100ce5780638da5cb5b146100ed575b5f80fd5b348015610088575f80fd5b5061009c610097366004610479565b610179565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c3575f80fd5b506100cc610204565b005b3480156100d9575f80fd5b506100cc6100e836600461049b565b610217565b3480156100f8575f80fd5b505f546001600160a01b031661009c565b6100cc6101173660046104e6565b61027a565b348015610127575f80fd5b506100cc61013636600461049b565b6102e5565b348015610146575f80fd5b506100cc610155366004610479565b61031b565b348015610165575f80fd5b5061009c610174366004610479565b610399565b5f805f836001600160a01b031660405161019d90635c60da1b60e01b815260040190565b5f60405180830381855afa9150503d805f81146101d5576040519150601f19603f3d011682016040523d82523d5f602084013e6101da565b606091505b5091509150816101e8575f80fd5b808060200190518101906101fc91906105bd565b949350505050565b61020c6103bd565b6102155f610416565b565b61021f6103bd565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b5f604051808303815f87803b158015610260575f80fd5b505af1158015610272573d5f803e3d5ffd5b505050505050565b6102826103bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b290869086906004016105d8565b5f604051808303818588803b1580156102c9575f80fd5b505af11580156102db573d5f803e3d5ffd5b5050505050505050565b6102ed6103bd565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe690602401610249565b6103236103bd565b6001600160a01b03811661038d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039681610416565b50565b5f805f836001600160a01b031660405161019d906303e1469160e61b815260040190565b5f546001600160a01b031633146102155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610384565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610396575f80fd5b5f60208284031215610489575f80fd5b813561049481610465565b9392505050565b5f80604083850312156104ac575f80fd5b82356104b781610465565b915060208301356104c781610465565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156104f8575f80fd5b833561050381610465565b9250602084013561051381610465565b9150604084013567ffffffffffffffff81111561052e575f80fd5b8401601f8101861361053e575f80fd5b803567ffffffffffffffff811115610558576105586104d2565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610587576105876104d2565b60405281815282820160200188101561059e575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f602082840312156105cd575f80fd5b815161049481610465565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f830116840101915050939250505056fea26469706673582212206c409fdcb27498fa618df8ce840b51f8699500b2e466098848c0c051d54ae72864736f6c634300081a00336080604052604051610d04380380610d04833981016040819052610022916103c3565b828161002f82825f610043565b5061003b90508261006e565b5050506104df565b61004c836100db565b5f825111806100585750805b1561006957610067838361011a565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6100ad5f80516020610cbd833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a16100d881610146565b50565b6100e4816101e1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061013f8383604051806060016040528060278152602001610cdd60279139610275565b9392505050565b6001600160a01b0381166101b05760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b805f80516020610cbd8339815191525b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b61024e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016101a7565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101c0565b60605f80856001600160a01b0316856040516102919190610494565b5f60405180830381855af49150503d805f81146102c9576040519150601f19603f3d011682016040523d82523d5f602084013e6102ce565b606091505b5090925090506102e0868383876102ea565b9695505050505050565b606083156103585782515f03610351576001600160a01b0385163b6103515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a7565b5081610362565b610362838361036a565b949350505050565b81511561037a5781518083602001fd5b8060405162461bcd60e51b81526004016101a791906104aa565b80516001600160a01b03811681146103aa575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f606084860312156103d5575f80fd5b6103de84610394565b92506103ec60208501610394565b60408501519092506001600160401b03811115610407575f80fd5b8401601f81018613610417575f80fd5b80516001600160401b03811115610430576104306103af565b604051601f8201601f19908116603f011681016001600160401b038111828210171561045e5761045e6103af565b604052818152828201602001881015610475575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6107d1806104ec5f395ff3fe60806040526004361061004d575f3560e01c80633659cfe6146100645780634f1ef286146100775780635c60da1b1461008a5780638f283970146100ae578063f851a440146100c15761005c565b3661005c5761005a6100c9565b005b61005a6100c9565b61005a610072366004610692565b6100e3565b61005a6100853660046106ab565b610126565b61009261018c565b6040516001600160a01b03909116815260200160405180910390f35b61005a6100bc366004610692565b6101c4565b6100926101ec565b6100d1610214565b6100e16100dc6102a9565b6102b2565b565b6100eb6102d0565b6001600160a01b0316330361011e57610102610302565b61011b8160405180602001604052805f8152505f61030c565b50565b61011b6100c9565b61012e6102d0565b6001600160a01b031633036101845761017f8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506001925061030c915050565b505050565b61017f6100c9565b5f6101956102d0565b6001600160a01b031633036101b9576101ac610302565b6101b46102a9565b905090565b6101c16100c9565b90565b6101cc6102d0565b6001600160a01b0316330361011e576101e3610302565b61011b81610336565b5f6101f56102d0565b6001600160a01b031633036101b95761020c610302565b6101b46102d0565b61021c6102d0565b6001600160a01b031633036100e15760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b5f6101b461038a565b365f80375f80365f845af43d5f803e8080156102cc573d5ff35b3d5ffd5b5f7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b34156100e1575f80fd5b610315836103b1565b5f825111806103215750805b1561017f5761033083836103f0565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61035f6102d0565b604080516001600160a01b03928316815291841660208301520160405180910390a161011b8161041c565b5f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6102f3565b6103ba816104c5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610415838360405180606001604052806027815260200161077560279139610559565b9392505050565b6001600160a01b0381166104815760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102a0565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6105325760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102a0565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6104a4565b60605f80856001600160a01b0316856040516105759190610729565b5f60405180830381855af49150503d805f81146105ad576040519150601f19603f3d011682016040523d82523d5f602084013e6105b2565b606091505b50915091506105c3868383876105cd565b9695505050505050565b6060831561063b5782515f03610634576001600160a01b0385163b6106345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102a0565b5081610645565b610645838361064d565b949350505050565b81511561065d5781518083602001fd5b8060405162461bcd60e51b81526004016102a0919061073f565b80356001600160a01b038116811461068d575f80fd5b919050565b5f602082840312156106a2575f80fd5b61041582610677565b5f805f604084860312156106bd575f80fd5b6106c684610677565b9250602084013567ffffffffffffffff8111156106e1575f80fd5b8401601f810186136106f1575f80fd5b803567ffffffffffffffff811115610707575f80fd5b866020828401011115610718575f80fd5b939660209190910195509293505050565b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f8301168401019150509291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207fdf75b6e78559f001988ff547e05f2e7660ec4f4aa57d89d04c5e329f655c3064736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212205711cf4aa1d0a23140c8f6653e8cb63cdcad87025b3682befdff54a7dfb6d2a164736f6c634300081a0033000000000000000000000000b30f65e1a1455ab919f6baddc783fd4c049f5334