60806040523480156200001157600080fd5b50604080518082018252600980825268536d756762756e6e7960b81b602080840182815285518087019096529285528401528151733cc6cdda760b79bafa08df41ecfa224f810dceb6936001939290916200006f91600291620002f5565b50805162000085906003906020840190620002f5565b50600160005550506daaeb6d7670e522a718067333cd4e3b15620001d25780156200012057604051633e9f1edf60e11b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e90637d3e3dbe906044015b600060405180830381600087803b1580156200010157600080fd5b505af115801562000116573d6000803e3d6000fd5b50505050620001d2565b6001600160a01b03821615620001715760405163a0af290360e01b81523060048201526001600160a01b03831660248201526daaeb6d7670e522a718067333cd4e9063a0af290390604401620000e6565b604051632210724360e11b81523060048201526daaeb6d7670e522a718067333cd4e90634420e48690602401600060405180830381600087803b158015620001b857600080fd5b505af1158015620001cd573d6000803e3d6000fd5b505050505b50620001e0905033620002a3565b600854600a80546001600160a01b0319166001600160a01b03909216919091179055611388600b556363caac70600c8190556363cbfdf0600d8190556000600e556001600f81905560326010556011839055601282905567016345785d8a00006013819055601491909155611356601581905560169390935560178290556018556002601955601a91909155601b556363cd4f70601c55670214e8348c4f0000601d556005601e55601f8054630101010163ffffffff19909116179055620003d7565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805462000303906200039b565b90600052602060002090601f01602090048101928262000327576000855562000372565b82601f106200034257805160ff191683800117855562000372565b8280016001018555821562000372579182015b828111156200037257825182559160200191906001019062000355565b506200038092915062000384565b5090565b5b8082111562000380576000815560010162000385565b600181811c90821680620003b057607f821691505b602082108103620003d157634e487b7160e01b600052602260045260246000fd5b50919050565b61322080620003e76000396000f3fe6080604052600436106103d95760003560e01c8063715018a6116101fd578063aecac2c611610118578063d55eb496116100ab578063f24b33a11161007a578063f24b33a114610c9f578063f2fde38b14610cb5578063f880bf3914610cd5578063fa0730d914610cf5578063feee9cdb14610d0b57600080fd5b8063d55eb49614610b36578063e245c9f114610c20578063e985e9c514610c36578063edef712814610c7f57600080fd5b8063c068b0dc116100e7578063c068b0dc14610aca578063c5b62de114610aea578063c616f41214610b00578063c87b56dd14610b1657600080fd5b8063aecac2c614610a78578063b88d4fde14610a8e578063bedbf0d814610aa1578063bfe6fd1e14610ab757600080fd5b806395d89b4111610190578063a2309ff81161015f578063a2309ff8146108db578063a373d871146108f4578063a945bf8014610a4c578063aa9ea53f14610a6257600080fd5b806395d89b411461087a57806398cd54901461088f578063a05f05c1146108a5578063a22cb465146108bb57600080fd5b80638e682c22116101cc5780638e682c22146108225780639009f1cf14610838578063906c8e871461084e578063930c7fea1461086457600080fd5b8063715018a6146107c65780637c8e4697146107db5780638032763e146107f15780638da5cb5b1461080457600080fd5b806341f43434116102f85780635caf16fb1161028b57806367acb2c11161025a57806367acb2c11461073b5780636c0360eb146107515780637047f8471461076657806370a082311461078657806370a10cd4146107a657600080fd5b80635caf16fb146106c55780635fd1bbc4146106e55780636352211e146106fb578063673be54d1461071b57600080fd5b806350da01cc116102c757806350da01cc1461064c5780635434969d1461066257806355d6f18a1461067857806355f804b3146106a557600080fd5b806341f43434146105e357806342842e0e14610605578063439dab631461061857806345f7e06e1461062b57600080fd5b8063215a4163116103705780632e0255071161033f5780632e025507146105795780633a66eeda146105985780633ab1a494146105ae5780633ccfd60b146105ce57600080fd5b8063215a41631461052357806323b872dd1461053d5780632c27e581146105505780632db115441461056657600080fd5b80630fb6f4bd116103ac5780630fb6f4bd146104825780631581b600146104c657806318160ddd146104e6578063205c28781461050357600080fd5b806301ffc9a7146103de57806306fdde0314610413578063081812fc14610435578063095ea7b31461046d575b600080fd5b3480156103ea57600080fd5b506103fe6103f93660046128e2565b610d21565b60405190151581526020015b60405180910390f35b34801561041f57600080fd5b50610428610d73565b60405161040a9190612957565b34801561044157600080fd5b5061045561045036600461296a565b610e05565b6040516001600160a01b03909116815260200161040a565b61048061047b36600461299f565b610e49565b005b34801561048e57600080fd5b506104b861049d3660046129d8565b60208080526000928352604080842090915290825290205481565b60405190815260200161040a565b3480156104d257600080fd5b50600a54610455906001600160a01b031681565b3480156104f257600080fd5b5060015460005403600019016104b8565b34801561050f57600080fd5b5061048061051e36600461299f565b610e62565b34801561052f57600080fd5b50601f546103fe9060ff1681565b61048061054b366004612a0b565b610ee9565b34801561055c57600080fd5b506104b8601c5481565b61048061057436600461296a565b610f14565b34801561058557600080fd5b50601f546103fe90610100900460ff1681565b3480156105a457600080fd5b506104b860125481565b3480156105ba57600080fd5b506104806105c9366004612a47565b6110fa565b3480156105da57600080fd5b50610480611124565b3480156105ef57600080fd5b506104556daaeb6d7670e522a718067333cd4e81565b610480610613366004612a0b565b6111d9565b610480610626366004612a62565b6111fe565b34801561063757600080fd5b50601f546103fe906301000000900460ff1681565b34801561065857600080fd5b506104b8600e5481565b34801561066e57600080fd5b506104b860155481565b34801561068457600080fd5b506104b8610693366004612ae7565b60216020526000908152604090205481565b3480156106b157600080fd5b506104806106c0366004612b8e565b61153f565b3480156106d157600080fd5b506104806106e0366004612bd7565b61155a565b3480156106f157600080fd5b506104b8601b5481565b34801561070757600080fd5b5061045561071636600461296a565b611576565b34801561072757600080fd5b50610480610736366004612c17565b611581565b34801561074757600080fd5b506104b860165481565b34801561075d57600080fd5b506104286115d7565b34801561077257600080fd5b50610480610781366004612c73565b611665565b34801561079257600080fd5b506104b86107a1366004612a47565b611684565b3480156107b257600080fd5b50601f546103fe9062010000900460ff1681565b3480156107d257600080fd5b506104806116d3565b3480156107e757600080fd5b506104b860175481565b6104806107ff366004612a62565b6116e7565b34801561081057600080fd5b506008546001600160a01b0316610455565b34801561082e57600080fd5b506104b8601e5481565b34801561084457600080fd5b506104b860115481565b34801561085a57600080fd5b506104b8600c5481565b34801561087057600080fd5b506104b8600d5481565b34801561088657600080fd5b5061042861198e565b34801561089b57600080fd5b506104b860245481565b3480156108b157600080fd5b506104b860135481565b3480156108c757600080fd5b506104806108d6366004612cae565b61199d565b3480156108e757600080fd5b50600054600019016104b8565b34801561090057600080fd5b506109fa61090f366004612a47565b6001600160a01b031660009081527f29ab76e7ca72530a8284597fb76b039d796325740b21528d71ade454c6f2dbe960209081526040808320547f156774b33c8bc7cb83eda4cbc43b36c7c9490ff8913c488ccd5132cfc71344ea8352818420547f2c5f9a2e204d4db70ad0f9037679e33061b4c51a386497019bee969e16be28d78452828520547f1ae1eab41a4db68d73559dd6c8b7ac16a4bc819634768486d35edbff05543abf909452918420549354600b54601f54929693959360001990920192909160ff808316926101008104821692620100008204831692630100000090920490911690565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a0860152151560c0850152151560e0840152151561010083015215156101208201526101400161040a565b348015610a5857600080fd5b506104b8601d5481565b348015610a6e57600080fd5b506104b860195481565b348015610a8457600080fd5b506104b860235481565b610480610a9c366004612ce5565b6119b1565b348015610aad57600080fd5b506104b860225481565b610480610ac5366004612a62565b6119d7565b348015610ad657600080fd5b50610480610ae5366004612c73565b611c98565b348015610af657600080fd5b506104b860185481565b348015610b0c57600080fd5b506104b8600b5481565b348015610b2257600080fd5b50610428610b3136600461296a565b611cb7565b348015610b4257600080fd5b50610b4b611d3b565b60405161040a9190815181526020808301519082015260408083015190820152606080830151908201526080808301519082015260a0808301519082015260c0808301519082015260e08083015190820152610100808301519082015261012080830151908201526101408083015190820152610160808301519082015261018080830151908201526101a080830151908201526101c080830151908201526101e080830151908201526102008083015190820152610220808301519082015261024091820151918101919091526102600190565b348015610c2c57600080fd5b506104b8600f5481565b348015610c4257600080fd5b506103fe610c51366004612d61565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b348015610c8b57600080fd5b50610480610c9a366004612c73565b611e77565b348015610cab57600080fd5b506104b8601a5481565b348015610cc157600080fd5b50610480610cd0366004612a47565b611e96565b348015610ce157600080fd5b50610480610cf0366004612d7d565b611f0c565b348015610d0157600080fd5b506104b860105481565b348015610d1757600080fd5b506104b860145481565b60006301ffc9a760e01b6001600160e01b031983161480610d5257506380ac58cd60e01b6001600160e01b03198316145b80610d6d5750635b5e139f60e01b6001600160e01b03198316145b92915050565b606060028054610d8290612da9565b80601f0160208091040260200160405190810160405280929190818152602001828054610dae90612da9565b8015610dfb5780601f10610dd057610100808354040283529160200191610dfb565b820191906000526020600020905b815481529060010190602001808311610dde57829003601f168201915b5050505050905090565b6000610e1082611f22565b610e2d576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b81610e5381611f57565b610e5d8383612010565b505050565b610e6a6120b0565b47811115610eb35760405162461bcd60e51b8152602060048201526011602482015270185b5bdd5b9d081a5cc81a5b1b1959d85b607a1b60448201526064015b60405180910390fd5b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610e5d573d6000803e3d6000fd5b826001600160a01b0381163314610f0357610f0333611f57565b610f0e84848461210a565b50505050565b323314610f335760405162461bcd60e51b8152600401610eaa90612de3565b601f546301000000900460ff161515600114610f615760405162461bcd60e51b8152600401610eaa90612e1a565b42601b5410610f825760405162461bcd60e51b8152600401610eaa90612e47565b42601c5411610fa35760405162461bcd60e51b8152600401610eaa90612e6e565b600b5481610fb46000546000190190565b610fbe9190612ea6565b1115610fdc5760405162461bcd60e51b8152600401610eaa90612ebe565b3360009081527f1ae1eab41a4db68d73559dd6c8b7ac16a4bc819634768486d35edbff05543abf6020526040902054601e54829061101b908390612f00565b10156110395760405162461bcd60e51b8152600401610eaa90612f17565b81601d546110479190612f47565b3410156110665760405162461bcd60e51b8152600401610eaa90612f66565b3360009081527f1ae1eab41a4db68d73559dd6c8b7ac16a4bc819634768486d35edbff05543abf6020526040812080548492906110a4908490612ea6565b90915550506003600090815260216020527fbae8fb7bb9008c9bfa6625328b7613a2bedfb2f936a7718f51173039a77c107c80548492906110e6908490612ea6565b909155506110f69050338361229f565b5050565b6111026120b0565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b600a546001600160a01b0316331461117e5760405162461bcd60e51b815260206004820181905260248201527f5468652063616c6c657220697320696e636f727265637420616464726573732e6044820152606401610eaa565b32331461119d5760405162461bcd60e51b8152600401610eaa90612de3565b600a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156111d6573d6000803e3d6000fd5b50565b826001600160a01b03811633146111f3576111f333611f57565b610f0e8484846122b9565b32331461121d5760405162461bcd60e51b8152600401610eaa90612de3565b601f5462010000900460ff1615156001146112715760405162461bcd60e51b815260206004820152601460248201527329b0b63290383430b9b29036b4b9b6b0ba31b41760611b6044820152606401610eaa565b42601654106112925760405162461bcd60e51b8152600401610eaa90612e47565b42601754116112b35760405162461bcd60e51b8152600401610eaa90612e6e565b601a54600260005260216020527f914a2534c436de5a3f77164e6b9b90d20144139ce899b6a8d30a442e7b9ef533546112ed908390612ea6565b111561130b5760405162461bcd60e51b8152600401610eaa90612f8f565b600080805260216020526000805160206131cb833981519152546010546113329190612f00565b9050600b5482826113466000546000190190565b6113509190612ea6565b61135a9190612ea6565b11156113785760405162461bcd60e51b8152600401610eaa90612ebe565b3360009081527f2c5f9a2e204d4db70ad0f9037679e33061b4c51a386497019bee969e16be28d7602052604090205460195483906113b7908390612f00565b10156113d55760405162461bcd60e51b8152600401610eaa90612f17565b826018546113e39190612f47565b3410156114025760405162461bcd60e51b8152600401610eaa90612f66565b85602454146114235760405162461bcd60e51b8152600401610eaa90612fbc565b611491858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040516001600160601b03193360601b1660208201528a925060340190505b604051602081830303815290604052805190602001206122d4565b6114ad5760405162461bcd60e51b8152600401610eaa90612fe9565b3360009081527f2c5f9a2e204d4db70ad0f9037679e33061b4c51a386497019bee969e16be28d76020526040812080548592906114eb908490612ea6565b909155508390506021600060025b600381111561150a5761150a612eea565b815260200190815260200160002060008282546115279190612ea6565b909155506115379050338461229f565b505050505050565b6115476120b0565b80516110f6906009906020840190612833565b6115626120b0565b601b93909355601c91909155601d55601e55565b6000610d6d826122ea565b6115896120b0565b601f805461ffff191694151561ff00191694909417610100931515939093029290921763ffff00001916620100009115159190910263ff000000191617630100000091151591909102179055565b600980546115e490612da9565b80601f016020809104026020016040519081016040528092919081815260200182805461161090612da9565b801561165d5780601f106116325761010080835404028352916020019161165d565b820191906000526020600020905b81548152906001019060200180831161164057829003601f168201915b505050505081565b61166d6120b0565b601194909455601292909255601355601455601555565b60006001600160a01b0382166116ad576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6116db6120b0565b6116e56000612360565b565b3233146117065760405162461bcd60e51b8152600401610eaa90612de3565b601f5460ff16151560011461172d5760405162461bcd60e51b8152600401610eaa90612e1a565b42600c541061174e5760405162461bcd60e51b8152600401610eaa90612e47565b42600d541161176f5760405162461bcd60e51b8152600401610eaa90612e6e565b6010546000805260216020526000805160206131cb83398151915254611796908390612ea6565b11156117b45760405162461bcd60e51b8152600401610eaa90612f8f565b600b54816117c56000546000190190565b6117cf9190612ea6565b11156117ed5760405162461bcd60e51b8152600401610eaa90612ebe565b3360009081527f29ab76e7ca72530a8284597fb76b039d796325740b21528d71ade454c6f2dbe96020526040902054600f54829061182c908390612f00565b101561184a5760405162461bcd60e51b8152600401610eaa90612f17565b81600e546118589190612f47565b3410156118775760405162461bcd60e51b8152600401610eaa90612f66565b84602254146118985760405162461bcd60e51b8152600401610eaa90612fbc565b6118ef848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040516001600160601b03193360601b1660208201528992506034019050611476565b61190b5760405162461bcd60e51b8152600401610eaa90612fe9565b3360009081527f29ab76e7ca72530a8284597fb76b039d796325740b21528d71ade454c6f2dbe9602052604081208054849290611949908490612ea6565b9091555050600080805260216020526000805160206131cb8339815191528054849290611977908490612ea6565b909155506119879050338361229f565b5050505050565b606060038054610d8290612da9565b816119a781611f57565b610e5d83836123b2565b836001600160a01b03811633146119cb576119cb33611f57565b6119878585858561241e565b3233146119f65760405162461bcd60e51b8152600401610eaa90612de3565b601f5460ff610100909104161515600114611a235760405162461bcd60e51b8152600401610eaa90612e1a565b4260115410611a445760405162461bcd60e51b8152600401610eaa90612e47565b4260125411611a655760405162461bcd60e51b8152600401610eaa90612e6e565b601554600160005260216020527f2b59c9df127166d3570f589f0cb7377a6b175795e70ab275ebf42fa16c0a23f454611a9f908390612ea6565b1115611abd5760405162461bcd60e51b8152600401610eaa90612f8f565b600080805260216020526000805160206131cb83398151915254601054611ae49190612f00565b9050600b548282611af86000546000190190565b611b029190612ea6565b611b0c9190612ea6565b1115611b2a5760405162461bcd60e51b8152600401610eaa90612ebe565b3360009081527f156774b33c8bc7cb83eda4cbc43b36c7c9490ff8913c488ccd5132cfc71344ea60205260409020546014548390611b69908390612f00565b1015611b875760405162461bcd60e51b8152600401610eaa90612f17565b82601354611b959190612f47565b341015611bb45760405162461bcd60e51b8152600401610eaa90612f66565b8560235414611bd55760405162461bcd60e51b8152600401610eaa90612fbc565b611c2c858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040516001600160601b03193360601b1660208201528a92506034019050611476565b611c485760405162461bcd60e51b8152600401610eaa90612fe9565b3360009081527f156774b33c8bc7cb83eda4cbc43b36c7c9490ff8913c488ccd5132cfc71344ea602052604081208054859290611c86908490612ea6565b909155508390506021600060016114f9565b611ca06120b0565b601694909455601792909255601855601955601a55565b6060611cc282611f22565b611cdf57604051630a14c4b560e41b815260040160405180910390fd5b60098054611cec90612da9565b9050600003611d0a5760405180602001604052806000815250610d6d565b6009611d1583612462565b604051602001611d2692919061302c565b60405160208183030381529060405292915050565b611dd0604051806102600160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102600160405280600c548152602001600d548152602001600e548152602001600f5481526020016010548152602001601154815260200160125481526020016013548152602001601454815260200160155481526020016016548152602001601754815260200160185481526020016019548152602001601a548152602001601b548152602001601c548152602001601d548152602001601e54815250905090565b611e7f6120b0565b600c94909455600d92909255600e55600f55601055565b611e9e6120b0565b6001600160a01b038116611f035760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610eaa565b6111d681612360565b611f146120b0565b602292909255602355602455565b600081600111158015611f36575060005482105b8015610d6d575050600090815260046020526040902054600160e01b161590565b6daaeb6d7670e522a718067333cd4e3b156111d657604051633185c44d60e21b81523060048201526001600160a01b03821660248201526daaeb6d7670e522a718067333cd4e9063c617113490604401602060405180830381865afa158015611fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe891906130e6565b6111d657604051633b79c77360e21b81526001600160a01b0382166004820152602401610eaa565b600061201b82611576565b9050336001600160a01b03821614612054576120378133610c51565b612054576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6008546001600160a01b031633146116e55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610eaa565b6000612115826122ea565b9050836001600160a01b0316816001600160a01b0316146121485760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b03881690911417612195576121788633610c51565b61219557604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0385166121bc57604051633a954ecd60e21b815260040160405180910390fd5b80156121c757600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b84169003612259576001840160008181526004602052604081205490036122575760005481146122575760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611537565b6110f682826040518060200160405280600081525061256b565b610e5d838383604051806020016040528060008152506119b1565b6000826122e185846125d1565b14949350505050565b60008180600111612347576000548110156123475760008181526004602052604081205490600160e01b82169003612345575b8060000361233e57506000190160008181526004602052604090205461231d565b9392505050565b505b604051636f96cda160e11b815260040160405180910390fd5b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b612429848484610ee9565b6001600160a01b0383163b15610f0e576124458484848461261e565b610f0e576040516368d2bf6b60e11b815260040160405180910390fd5b6060816000036124895750506040805180820190915260018152600360fc1b602082015290565b8160005b81156124b3578061249d81613103565b91506124ac9050600a83613132565b915061248d565b60008167ffffffffffffffff8111156124ce576124ce612b02565b6040519080825280601f01601f1916602001820160405280156124f8576020820181803683370190505b5090505b84156125635761250d600183612f00565b915061251a600a86613146565b612525906030612ea6565b60f81b81838151811061253a5761253a61315a565b60200101906001600160f81b031916908160001a90535061255c600a86613132565b94506124fc565b949350505050565b6125758383612709565b6001600160a01b0383163b15610e5d576000548281035b61259f600086838060010194508661261e565b6125bc576040516368d2bf6b60e11b815260040160405180910390fd5b81811061258c57816000541461198757600080fd5b600081815b845181101561261657612602828683815181106125f5576125f561315a565b6020026020010151612807565b91508061260e81613103565b9150506125d6565b509392505050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612653903390899088908890600401613170565b6020604051808303816000875af192505050801561268e575060408051601f3d908101601f1916820190925261268b918101906131ad565b60015b6126ec573d8080156126bc576040519150601f19603f3d011682016040523d82523d6000602084013e6126c1565b606091505b5080516000036126e4576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b600080549082900361272e5760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146127dd57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016127a5565b50816000036127fe57604051622e076360e81b815260040160405180910390fd5b60005550505050565b600081831061282357600082815260208490526040902061233e565b5060009182526020526040902090565b82805461283f90612da9565b90600052602060002090601f01602090048101928261286157600085556128a7565b82601f1061287a57805160ff19168380011785556128a7565b828001600101855582156128a7579182015b828111156128a757825182559160200191906001019061288c565b506128b39291506128b7565b5090565b5b808211156128b357600081556001016128b8565b6001600160e01b0319811681146111d657600080fd5b6000602082840312156128f457600080fd5b813561233e816128cc565b60005b8381101561291a578181015183820152602001612902565b83811115610f0e5750506000910152565b600081518084526129438160208601602086016128ff565b601f01601f19169290920160200192915050565b60208152600061233e602083018461292b565b60006020828403121561297c57600080fd5b5035919050565b80356001600160a01b038116811461299a57600080fd5b919050565b600080604083850312156129b257600080fd5b6129bb83612983565b946020939093013593505050565b80356004811061299a57600080fd5b600080604083850312156129eb57600080fd5b6129f4836129c9565b9150612a0260208401612983565b90509250929050565b600080600060608486031215612a2057600080fd5b612a2984612983565b9250612a3760208501612983565b9150604084013590509250925092565b600060208284031215612a5957600080fd5b61233e82612983565b60008060008060608587031215612a7857600080fd5b84359350602085013567ffffffffffffffff80821115612a9757600080fd5b818701915087601f830112612aab57600080fd5b813581811115612aba57600080fd5b8860208260051b8501011115612acf57600080fd5b95986020929092019750949560400135945092505050565b600060208284031215612af957600080fd5b61233e826129c9565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612b3357612b33612b02565b604051601f8501601f19908116603f01168101908282118183101715612b5b57612b5b612b02565b81604052809350858152868686011115612b7457600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612ba057600080fd5b813567ffffffffffffffff811115612bb757600080fd5b8201601f81018413612bc857600080fd5b61256384823560208401612b18565b60008060008060808587031215612bed57600080fd5b5050823594602084013594506040840135936060013592509050565b80151581146111d657600080fd5b60008060008060808587031215612c2d57600080fd5b8435612c3881612c09565b93506020850135612c4881612c09565b92506040850135612c5881612c09565b91506060850135612c6881612c09565b939692955090935050565b600080600080600060a08688031215612c8b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612cc157600080fd5b612cca83612983565b91506020830135612cda81612c09565b809150509250929050565b60008060008060808587031215612cfb57600080fd5b612d0485612983565b9350612d1260208601612983565b925060408501359150606085013567ffffffffffffffff811115612d3557600080fd5b8501601f81018713612d4657600080fd5b612d5587823560208401612b18565b91505092959194509250565b60008060408385031215612d7457600080fd5b6129f483612983565b600080600060608486031215612d9257600080fd5b505081359360208301359350604090920135919050565b600181811c90821680612dbd57607f821691505b602082108103612ddd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601f908201527f5468652063616c6c657220697320616e6f7468657220636f6e74726163742e00604082015260600190565b6020808252601390820152720a6c2d8ca40e0d0c2e6ca40dad2e6dac2e8c6d606b1b604082015260600190565b6020808252600d908201526c14d85b19481b9bc81cdd185c9d609a1b604082015260600190565b60208082526008908201526714d85b1948195b9960c21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612eb957612eb9612e90565b500190565b60208082526012908201527113585e081cdd5c1c1b1e481c995858da195960721b604082015260600190565b634e487b7160e01b600052602160045260246000fd5b600082821015612f1257612f12612e90565b500390565b602080825260169082015275115e18d959591cc81c195c9cdbdb985b081b1a5b5a5d60521b604082015260600190565b6000816000190483118215151615612f6157612f61612e90565b500290565b6020808252600f908201526e496e636f727265637420707269636560881b604082015260600190565b602080825260139082015272115e18d959591cc81c1a185cd9481b1a5b5a5d606a1b604082015260600190565b602080825260139082015272125b9d985b1a59081b595c9adb19481c9bdbdd606a1b604082015260600190565b6020808252600d908201526c24b73b30b634b210383937b7b360991b604082015260600190565b600081516130228185602086016128ff565b9290920192915050565b600080845481600182811c91508083168061304857607f831692505b6020808410820361306757634e487b7160e01b86526022600452602486fd5b81801561307b576001811461308c576130b9565b60ff198616895284890196506130b9565b60008b81526020902060005b868110156130b15781548b820152908501908301613098565b505084890196505b5050505050506130dd6130cc8286613010565b64173539b7b760d91b815260050190565b95945050505050565b6000602082840312156130f857600080fd5b815161233e81612c09565b60006001820161311557613115612e90565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826131415761314161311c565b500490565b6000826131555761315561311c565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906131a39083018461292b565b9695505050505050565b6000602082840312156131bf57600080fd5b815161233e816128cc56fe97ea4a93fb5e400340102ffa4fa5d31ef170c1e583d2cb268c876db385f80bb0a2646970667358221220bf4bf110b259d8aa46530c37101430f490c48cf549546ff9f5e756d4653ff41664736f6c634300080d0033