0x6080604052348015600f57600080fd5b506114198061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063312391251461003b57806371888a3414610050575b600080fd5b61004e610049366004610336565b61007f565b005b61006361005e366004610336565b610194565b6040516001600160a01b03909116815260200160405180910390f35b60405161008e60208201610286565b601f1982820381018352601f90910116604052516000036100c257604051631328927760e21b815260040160405180910390fd5b60008383836040516020016100d99392919061040c565b60405160208183030381529060405290506000604051806020016100fc90610286565b601f1982820381018352601f90910116604081905261012091908490602001610445565b60408051601f19818403018152828252602083018990529250600091016040516020818303038152906040528051906020012090506000818351602085016000f590506001600160a01b03811661018a57604051633a0ba96160e11b815260040160405180910390fd5b5050505050505050565b6000808484846040516020016101ac9392919061040c565b60405160208183030381529060405290506000604051806020016101cf90610286565b601f1982820381018352601f9091011660408190526101f391908490602001610445565b60408051808303601f1901815282825260208084019a909a5281518084038b01815283830183528051908b01208151918b01919091206001600160f81b031960608086019190915230901b6bffffffffffffffffffffffff1916606185015260758401919091526095808401919091528151808403909101815260b5909201905280519701969096209695505050505050565b610f6f8061047583390190565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126102ba57600080fd5b813567ffffffffffffffff808211156102d5576102d5610293565b604051601f8301601f19908116603f011681019082821181831017156102fd576102fd610293565b8160405283815286602085880101111561031657600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561034c57600080fd5b84359350602085013567ffffffffffffffff8082111561036b57600080fd5b610377888389016102a9565b9450604087013591508082111561038d57600080fd5b5061039a878288016102a9565b925050606085013560ff811681146103b157600080fd5b939692955090935050565b60005b838110156103d75781810151838201526020016103bf565b50506000910152565b600081518084526103f88160208601602086016103bc565b601f01601f19169290920160200192915050565b60608152600061041f60608301866103e0565b828103602084015261043181866103e0565b91505060ff83166040830152949350505050565b600083516104578184602088016103bc565b83519083019061046b8183602088016103bc565b0194935050505056fe60e060405234801561001057600080fd5b50604051610f6f380380610f6f83398101604081905261002f916101c6565b828282600061003e84826102ce565b50600161004b83826102ce565b5060ff81166080524660a05261005f61006e565b60c05250610403945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516100a0919061038d565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261012f57600080fd5b81516001600160401b038082111561014957610149610108565b604051601f8301601f19908116603f0116810190828211818310171561017157610171610108565b816040528381526020925086602085880101111561018e57600080fd5b600091505b838210156101b05785820183015181830184015290820190610193565b6000602085830101528094505050505092915050565b6000806000606084860312156101db57600080fd5b83516001600160401b03808211156101f257600080fd5b6101fe8783880161011e565b9450602086015191508082111561021457600080fd5b506102218682870161011e565b925050604084015160ff8116811461023857600080fd5b809150509250925092565b600181811c9082168061025757607f821691505b60208210810361027757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102c9576000816000526020600020601f850160051c810160208610156102a65750805b601f850160051c820191505b818110156102c5578281556001016102b2565b5050505b505050565b81516001600160401b038111156102e7576102e7610108565b6102fb816102f58454610243565b8461027d565b602080601f83116001811461033057600084156103185750858301515b600019600386901b1c1916600185901b1785556102c5565b600085815260208120601f198616915b8281101561035f57888601518255948401946001909101908401610340565b508582101561037d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600080835461039b81610243565b600182811680156103b357600181146103c8576103f7565b60ff19841687528215158302870194506103f7565b8760005260208060002060005b858110156103ee5781548a8201529084019082016103d5565b50505082870194505b50929695505050505050565b60805160a05160c051610b3d61043260003960006104540152600061041f015260006101440152610b3d6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b41146101d5578063a9059cbb146101dd578063d505accf146101f0578063dd62ed3e1461020357600080fd5b806340c10f191461018057806370a08231146101955780637ecebe00146101b557600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd1461012c578063313ce5671461013f5780633644e51514610178575b600080fd5b6100dc61022e565b6040516100e99190610857565b60405180910390f35b6101056101003660046108c2565b6102bc565b60405190151581526020016100e9565b61011e60025481565b6040519081526020016100e9565b61010561013a3660046108ec565b610329565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e9565b61011e61041b565b61019361018e3660046108c2565b610476565b005b61011e6101a3366004610928565b60036020526000908152604090205481565b61011e6101c3366004610928565b60056020526000908152604090205481565b6100dc610484565b6101056101eb3660046108c2565b610491565b6101936101fe36600461094a565b610509565b61011e6102113660046109bd565b600460209081526000928352604080842090915290825290205481565b6000805461023b906109f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610267906109f0565b80156102b45780601f10610289576101008083540402835291602001916102b4565b820191906000526020600020905b81548152906001019060200180831161029757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103179086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610385576103608382610a40565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103ad908490610a40565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104089087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104515761044c610752565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61048082826107ec565b5050565b6001805461023b906109f0565b336000908152600360205260408120805483919083906104b2908490610a40565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103179086815260200190565b4284101561055e5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161056a61041b565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610676573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106ac5750876001600160a01b0316816001600160a01b0316145b6106e95760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610555565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516107849190610a53565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546107fe9190610af4565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b60006020808352835180602085015260005b8181101561088557858101830151858201604001528201610869565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146108bd57600080fd5b919050565b600080604083850312156108d557600080fd5b6108de836108a6565b946020939093013593505050565b60008060006060848603121561090157600080fd5b61090a846108a6565b9250610918602085016108a6565b9150604084013590509250925092565b60006020828403121561093a57600080fd5b610943826108a6565b9392505050565b600080600080600080600060e0888a03121561096557600080fd5b61096e886108a6565b965061097c602089016108a6565b95506040880135945060608801359350608088013560ff811681146109a057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156109d057600080fd5b6109d9836108a6565b91506109e7602084016108a6565b90509250929050565b600181811c90821680610a0457607f821691505b602082108103610a2457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032357610323610a2a565b60008083548160018260011c91506001831680610a7157607f831692505b60208084108203610a9057634e487b7160e01b86526022600452602486fd5b818015610aa45760018114610ab957610ae6565b60ff1986168952841515850289019650610ae6565b60008a81526020902060005b86811015610ade5781548b820152908501908301610ac5565b505084890196505b509498975050505050505050565b8082018082111561032357610323610a2a56fea2646970667358221220aba1625991a789caab546bc066e8ce1a118246168f75639893188f54b195e67d64736f6c63430008190033a2646970667358221220dd1000d7df80e1569db21f5cf81eee8c9669c7d12d74d662ac0bb98e00be80ce64736f6c63430008190033