608060405234801561000f575f80fd5b50604051613f02380380613f028339818101604052810190610031919061037e565b336040518060400160405280601681526020017f556e6971756520477261666669746920746f6b656e73000000000000000000008152506040518060400160405280600381526020017f5547540000000000000000000000000000000000000000000000000000000000815250815f90816100ac91906105da565b5080600190816100bc91906105da565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361012f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161012691906106e8565b60405180910390fd5b61013e8161028460201b60201c565b50600a33908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806008819055503360095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610701565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f819050919050565b61035d8161034b565b8114610367575f80fd5b50565b5f8151905061037881610354565b92915050565b5f6020828403121561039357610392610347565b5b5f6103a08482850161036a565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061042457607f821691505b602082108103610437576104366103e0565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026104997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261045e565b6104a3868361045e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6104de6104d96104d48461034b565b6104bb565b61034b565b9050919050565b5f819050919050565b6104f7836104c4565b61050b610503826104e5565b84845461046a565b825550505050565b5f90565b61051f610513565b61052a8184846104ee565b505050565b5b8181101561054d576105425f82610517565b600181019050610530565b5050565b601f821115610592576105638161043d565b61056c8461044f565b8101602085101561057b578190505b61058f6105878561044f565b83018261052f565b50505b505050565b5f82821c905092915050565b5f6105b25f1984600802610597565b1980831691505092915050565b5f6105ca83836105a3565b9150826002028217905092915050565b6105e3826103a9565b67ffffffffffffffff8111156105fc576105fb6103b3565b5b610606825461040d565b610611828285610551565b5f60209050601f831160018114610642575f8415610630578287015190505b61063a85826105bf565b8655506106a1565b601f1984166106508661043d565b5f5b8281101561067757848901518255600182019150602085019450602081019050610652565b868310156106945784890151610690601f8916826105a3565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6106d2826106a9565b9050919050565b6106e2816106c8565b82525050565b5f6020820190506106fb5f8301846106d9565b92915050565b6137f48061070e5f395ff3fe608060405260043610610180575f3560e01c80638da5cb5b116100d0578063c70b9afe11610089578063e69e04b311610063578063e69e04b31461054a578063e985e9c514610574578063f2fde38b146105b0578063fbf1343c146105d857610180565b8063c70b9afe146104dc578063c87b56dd14610504578063d88849681461054057610180565b80638da5cb5b146103e857806395d89b4114610412578063a22cb4651461043c578063a2b40d1914610464578063b88d4fde1461048c578063bbe171bf146104b457610180565b806342966c681161013d57806370a082311161011757806370a082311461031e578063715018a61461035a5780637427a40c146103705780638bf972b2146103ac57610180565b806342966c681461029e57806351ed8288146102c65780636352211e146102e257610180565b806301ffc9a71461018457806306fdde03146101c0578063081812fc146101ea578063095ea7b31461022657806323b872dd1461024e57806342842e0e14610276575b5f80fd5b34801561018f575f80fd5b506101aa60048036038101906101a5919061281d565b6105f4565b6040516101b79190612862565b60405180910390f35b3480156101cb575f80fd5b506101d4610654565b6040516101e191906128eb565b60405180910390f35b3480156101f5575f80fd5b50610210600480360381019061020b919061293e565b6106e3565b60405161021d91906129a8565b60405180910390f35b348015610231575f80fd5b5061024c600480360381019061024791906129eb565b6106fe565b005b348015610259575f80fd5b50610274600480360381019061026f9190612a29565b610714565b005b348015610281575f80fd5b5061029c60048036038101906102979190612a29565b610813565b005b3480156102a9575f80fd5b506102c460048036038101906102bf919061293e565b610832565b005b6102e060048036038101906102db919061293e565b6108b4565b005b3480156102ed575f80fd5b506103086004803603810190610303919061293e565b610b45565b60405161031591906129a8565b60405180910390f35b348015610329575f80fd5b50610344600480360381019061033f9190612a79565b610b56565b6040516103519190612ab3565b60405180910390f35b348015610365575f80fd5b5061036e610c0c565b005b34801561037b575f80fd5b506103966004803603810190610391919061293e565b610c1f565b6040516103a391906129a8565b60405180910390f35b3480156103b7575f80fd5b506103d260048036038101906103cd919061293e565b610c5a565b6040516103df9190612ab3565b60405180910390f35b3480156103f3575f80fd5b506103fc610c6f565b60405161040991906129a8565b60405180910390f35b34801561041d575f80fd5b50610426610c97565b60405161043391906128eb565b60405180910390f35b348015610447575f80fd5b50610462600480360381019061045d9190612af6565b610d27565b005b34801561046f575f80fd5b5061048a6004803603810190610485919061293e565b610d3d565b005b348015610497575f80fd5b506104b260048036038101906104ad9190612c60565b610d4f565b005b3480156104bf575f80fd5b506104da60048036038101906104d591906129eb565b610d6c565b005b3480156104e7575f80fd5b5061050260048036038101906104fd9190612ce0565b610f80565b005b34801561050f575f80fd5b5061052a6004803603810190610525919061293e565b6110a0565b60405161053791906128eb565b60405180910390f35b6105486111ab565b005b348015610555575f80fd5b5061055e6112e5565b60405161056b9190612ab3565b60405180910390f35b34801561057f575f80fd5b5061059a60048036038101906105959190612d1e565b6112eb565b6040516105a79190612862565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612a79565b611379565b005b6105f260048036038101906105ed9190612dfa565b6113fd565b005b5f634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061064d575061064c8261153e565b5b9050919050565b60605f805461066290612e93565b80601f016020809104026020016040519081016040528092919081815260200182805461068e90612e93565b80156106d95780601f106106b0576101008083540402835291602001916106d9565b820191905f5260205f20905b8154815290600101906020018083116106bc57829003601f168201915b5050505050905090565b5f6106ed8261161f565b506106f7826116a5565b9050919050565b610710828261070b6116de565b6116e5565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610784575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161077b91906129a8565b60405180910390fd5b5f61079783836107926116de565b6116f7565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461080d578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161080493929190612ec3565b60405180910390fd5b50505050565b61082d83838360405180602001604052805f815250610d4f565b505050565b61083b81610b45565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089f90612f42565b60405180910390fd5b6108b181611902565b50565b5f6108be82610b45565b90503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092590612faa565b60405180910390fd5b600f5f8381526020019081526020015f2054341015610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097990613012565b60405180910390fd5b61098d813384611984565b5f600e5f8481526020019081526020015f206040518060400160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505090505f6064826020015134610a1d919061305d565b610a2791906130cb565b90505f8134610a3691906130fb565b90508373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610a7b573d5f803e3d5ffd5b50825f015173ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015610ac2573d5f803e3d5ffd5b507f8562eb94748e30bb0071e932744ce902b460c683474fcb3bfd567ffa16b1afb285853334604051610af8949392919061312e565b60405180910390a17f6f31ef7f3e8698d7cafb235346e33bae2f684fc8042280a142f90465c900b3c385845f015184604051610b3693929190613171565b60405180910390a15050505050565b5f610b4f8261161f565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bc7575f6040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610bbe91906129a8565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c14611aec565b610c1d5f611b73565b565b600a8181548110610c2e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f602052805f5260405f205f915090505481565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060018054610ca690612e93565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd290612e93565b8015610d1d5780601f10610cf457610100808354040283529160200191610d1d565b820191905f5260205f20905b815481529060010190602001808311610d0057829003601f168201915b5050505050905090565b610d39610d326116de565b8383611c36565b5050565b610d45611aec565b8060088190555050565b610d5a848484610714565b610d6684848484611d9f565b50505050565b610d74611aec565b610d7d81611f51565b5f1515600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151514610e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0390613216565b60405180910390fd5b600a82908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600b81908060018154018082558091505060019003905f5260205f20015f909190919091505580600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610f7591906130fb565b925050819055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061100e57503373ffffffffffffffffffffffffffffffffffffffff16610ff683610b45565b73ffffffffffffffffffffffffffffffffffffffff16145b61104d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110449061327e565b60405180910390fd5b80600f5f8481526020019081526020015f20819055507ffe6b606ca0477592b5740a0eb00c8e91570a5d0eb736abfa1a6309bd081b4a4d828260405161109492919061329c565b60405180910390a15050565b60606110ab8261161f565b505f60065f8481526020019081526020015f2080546110c990612e93565b80601f01602080910402602001604051908101604052809291908181526020018280546110f590612e93565b80156111405780601f1061111757610100808354040283529160200191611140565b820191905f5260205f20905b81548152906001019060200180831161112357829003601f168201915b505050505090505f611150611fef565b90505f8151036111645781925050506111a6565b5f825111156111985780826040516020016111809291906132fd565b604051602081830303815290604052925050506111a6565b6111a184612005565b925050505b919050565b6111b3611aec565b5f4790505f5b600a805490508110156112e157600a81815481106111da576111d9613320565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484600c5f600a878154811061123557611234613320565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112a1919061305d565b6112ab91906130cb565b90811502906040515f60405180830381858888f193505050501580156112d3573d5f803e3d5ffd5b5080806001019150506111b9565b5050565b60085481565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611381611aec565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113f1575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113e891906129a8565b60405180910390fd5b6113fa81611b73565b50565b6064811115611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890613397565b60405180910390fd5b600f5f8481526020019081526020015f2054341461145d575f80fd5b611467338461206b565b611471838361215e565b60405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200182815250600e5f8581526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050507f055e34067993de700e7f718f190fdccc92a27695bb9068504a1a44258577f8eb83338360405161153193929190613171565b60405180910390a1505050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061160857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806116185750611617826121b8565b5b9050919050565b5f8061162a83612221565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169c57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016116939190612ab3565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6116f2838383600161225a565b505050565b5f8061170284612221565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461174357611742818486612419565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117ce576117825f855f8061225a565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461184d57600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b5f61190e5f835f6116f7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198057816040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016119779190612ab3565b60405180910390fd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f4575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016119eb91906129a8565b60405180910390fd5b5f611a0083835f6116f7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a7257816040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611a699190612ab3565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611ae6578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401611add93929190612ec3565b60405180910390fd5b50505050565b611af46116de565b73ffffffffffffffffffffffffffffffffffffffff16611b12610c6f565b73ffffffffffffffffffffffffffffffffffffffff1614611b7157611b356116de565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611b6891906129a8565b60405180910390fd5b565b5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ca657816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611c9d91906129a8565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611d929190612862565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611f4b578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611de26116de565b8685856040518563ffffffff1660e01b8152600401611e049493929190613407565b6020604051808303815f875af1925050508015611e3f57506040513d601f19601f82011682018060405250810190611e3c9190613465565b60015b611ec0573d805f8114611e6d576040519150601f19603f3d011682016040523d82523d5f602084013e611e72565b606091505b505f815103611eb857836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611eaf91906129a8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611f4957836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611f4091906129a8565b60405180910390fd5b505b50505050565b5f805f90505b600b80549050811015611f9b57600b8181548110611f7857611f77613320565b5b905f5260205f20015482611f8c9190613490565b91508080600101915050611f57565b5060648282611faa9190613490565b1115611feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe29061350d565b60405180910390fd5b5050565b606060405180602001604052805f815250905090565b60606120108261161f565b505f61201a611fef565b90505f8151116120385760405180602001604052805f815250612063565b80612042846124dc565b6040516020016120539291906132fd565b6040516020818303038152906040525b915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120db575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016120d291906129a8565b60405180910390fd5b5f6120e783835f6116f7565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612159575f6040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260040161215091906129a8565b60405180910390fd5b505050565b8060065f8481526020019081526020015f20908161217c91906136c8565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516121ac9190612ab3565b60405180910390a15050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061229257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156123c4575f6122a18461161f565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561230b57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561231e575061231c81846112eb565b155b1561236057826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161235791906129a8565b60405180910390fd5b81156123c257838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6124248383836125a6565b6124d7575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361249857806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161248f9190612ab3565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016124ce929190613797565b60405180910390fd5b505050565b60605f60016124ea84612666565b0190505f8167ffffffffffffffff81111561250857612507612b3c565b5b6040519080825280601f01601f19166020018201604052801561253a5781602001600182028036833780820191505090505b5090505f82602001820190505b60011561259b578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816125905761258f61309e565b5b0494505f8503612547575b819350505050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561265d57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061261e575061261d84846112eb565b5b8061265c57508273ffffffffffffffffffffffffffffffffffffffff16612644836116a5565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106126c2577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816126b8576126b761309e565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106126ff576d04ee2d6d415b85acef810000000083816126f5576126f461309e565b5b0492506020810190505b662386f26fc10000831061272e57662386f26fc1000083816127245761272361309e565b5b0492506010810190505b6305f5e1008310612757576305f5e100838161274d5761274c61309e565b5b0492506008810190505b612710831061277c5761271083816127725761277161309e565b5b0492506004810190505b6064831061279f57606483816127955761279461309e565b5b0492506002810190505b600a83106127ae576001810190505b80915050919050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6127fc816127c8565b8114612806575f80fd5b50565b5f81359050612817816127f3565b92915050565b5f60208284031215612832576128316127c0565b5b5f61283f84828501612809565b91505092915050565b5f8115159050919050565b61285c81612848565b82525050565b5f6020820190506128755f830184612853565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6128bd8261287b565b6128c78185612885565b93506128d7818560208601612895565b6128e0816128a3565b840191505092915050565b5f6020820190508181035f83015261290381846128b3565b905092915050565b5f819050919050565b61291d8161290b565b8114612927575f80fd5b50565b5f8135905061293881612914565b92915050565b5f60208284031215612953576129526127c0565b5b5f6129608482850161292a565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61299282612969565b9050919050565b6129a281612988565b82525050565b5f6020820190506129bb5f830184612999565b92915050565b6129ca81612988565b81146129d4575f80fd5b50565b5f813590506129e5816129c1565b92915050565b5f8060408385031215612a0157612a006127c0565b5b5f612a0e858286016129d7565b9250506020612a1f8582860161292a565b9150509250929050565b5f805f60608486031215612a4057612a3f6127c0565b5b5f612a4d868287016129d7565b9350506020612a5e868287016129d7565b9250506040612a6f8682870161292a565b9150509250925092565b5f60208284031215612a8e57612a8d6127c0565b5b5f612a9b848285016129d7565b91505092915050565b612aad8161290b565b82525050565b5f602082019050612ac65f830184612aa4565b92915050565b612ad581612848565b8114612adf575f80fd5b50565b5f81359050612af081612acc565b92915050565b5f8060408385031215612b0c57612b0b6127c0565b5b5f612b19858286016129d7565b9250506020612b2a85828601612ae2565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b72826128a3565b810181811067ffffffffffffffff82111715612b9157612b90612b3c565b5b80604052505050565b5f612ba36127b7565b9050612baf8282612b69565b919050565b5f67ffffffffffffffff821115612bce57612bcd612b3c565b5b612bd7826128a3565b9050602081019050919050565b828183375f83830152505050565b5f612c04612bff84612bb4565b612b9a565b905082815260208101848484011115612c2057612c1f612b38565b5b612c2b848285612be4565b509392505050565b5f82601f830112612c4757612c46612b34565b5b8135612c57848260208601612bf2565b91505092915050565b5f805f8060808587031215612c7857612c776127c0565b5b5f612c85878288016129d7565b9450506020612c96878288016129d7565b9350506040612ca78782880161292a565b925050606085013567ffffffffffffffff811115612cc857612cc76127c4565b5b612cd487828801612c33565b91505092959194509250565b5f8060408385031215612cf657612cf56127c0565b5b5f612d038582860161292a565b9250506020612d148582860161292a565b9150509250929050565b5f8060408385031215612d3457612d336127c0565b5b5f612d41858286016129d7565b9250506020612d52858286016129d7565b9150509250929050565b5f67ffffffffffffffff821115612d7657612d75612b3c565b5b612d7f826128a3565b9050602081019050919050565b5f612d9e612d9984612d5c565b612b9a565b905082815260208101848484011115612dba57612db9612b38565b5b612dc5848285612be4565b509392505050565b5f82601f830112612de157612de0612b34565b5b8135612df1848260208601612d8c565b91505092915050565b5f805f60608486031215612e1157612e106127c0565b5b5f612e1e8682870161292a565b935050602084013567ffffffffffffffff811115612e3f57612e3e6127c4565b5b612e4b86828701612dcd565b9250506040612e5c8682870161292a565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612eaa57607f821691505b602082108103612ebd57612ebc612e66565b5b50919050565b5f606082019050612ed65f830186612999565b612ee36020830185612aa4565b612ef06040830184612999565b949350505050565b7f6e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f612f2c600983612885565b9150612f3782612ef8565b602082019050919050565b5f6020820190508181035f830152612f5981612f20565b9050919050565b7f43616e6e6f742062757920796f7572206f776e204e46540000000000000000005f82015250565b5f612f94601783612885565b9150612f9f82612f60565b602082019050919050565b5f6020820190508181035f830152612fc181612f88565b9050919050565b7f41746c656173742073656e642074686520746f6b656e2070726963652e0000005f82015250565b5f612ffc601d83612885565b915061300782612fc8565b602082019050919050565b5f6020820190508181035f83015261302981612ff0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6130678261290b565b91506130728361290b565b92508282026130808161290b565b9150828204841483151761309757613096613030565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130d58261290b565b91506130e08361290b565b9250826130f0576130ef61309e565b5b828204905092915050565b5f6131058261290b565b91506131108361290b565b925082820390508181111561312857613127613030565b5b92915050565b5f6080820190506131415f830187612aa4565b61314e6020830186612999565b61315b6040830185612999565b6131686060830184612aa4565b95945050505050565b5f6060820190506131845f830186612aa4565b6131916020830185612999565b61319e6040830184612aa4565b949350505050565b7f4164647265737320697320616c72656164792061207368617265686f6c6465725f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f613200602183612885565b915061320b826131a6565b604082019050919050565b5f6020820190508181035f83015261322d816131f4565b9050919050565b7f596f7220617265206e6f7420656c696769626c652e00000000000000000000005f82015250565b5f613268601583612885565b915061327382613234565b602082019050919050565b5f6020820190508181035f8301526132958161325c565b9050919050565b5f6040820190506132af5f830185612aa4565b6132bc6020830184612aa4565b9392505050565b5f81905092915050565b5f6132d78261287b565b6132e181856132c3565b93506132f1818560208601612895565b80840191505092915050565b5f61330882856132cd565b915061331482846132cd565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f526f79616c74792070657263656e7461676520746f6f206869676800000000005f82015250565b5f613381601b83612885565b915061338c8261334d565b602082019050919050565b5f6020820190508181035f8301526133ae81613375565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f6133d9826133b5565b6133e381856133bf565b93506133f3818560208601612895565b6133fc816128a3565b840191505092915050565b5f60808201905061341a5f830187612999565b6134276020830186612999565b6134346040830185612aa4565b818103606083015261344681846133cf565b905095945050505050565b5f8151905061345f816127f3565b92915050565b5f6020828403121561347a576134796127c0565b5b5f61348784828501613451565b91505092915050565b5f61349a8261290b565b91506134a58361290b565b92508282019050808211156134bd576134bc613030565b5b92915050565b7f7368617265206d75737420626520756e646572203130300000000000000000005f82015250565b5f6134f7601783612885565b9150613502826134c3565b602082019050919050565b5f6020820190508181035f830152613524816134eb565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026135877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261354c565b613591868361354c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6135cc6135c76135c28461290b565b6135a9565b61290b565b9050919050565b5f819050919050565b6135e5836135b2565b6135f96135f1826135d3565b848454613558565b825550505050565b5f90565b61360d613601565b6136188184846135dc565b505050565b5b8181101561363b576136305f82613605565b60018101905061361e565b5050565b601f821115613680576136518161352b565b61365a8461353d565b81016020851015613669578190505b61367d6136758561353d565b83018261361d565b50505b505050565b5f82821c905092915050565b5f6136a05f1984600802613685565b1980831691505092915050565b5f6136b88383613691565b9150826002028217905092915050565b6136d18261287b565b67ffffffffffffffff8111156136ea576136e9612b3c565b5b6136f48254612e93565b6136ff82828561363f565b5f60209050601f831160018114613730575f841561371e578287015190505b61372885826136ad565b86555061378f565b601f19841661373e8661352b565b5f5b8281101561376557848901518255600182019150602085019450602081019050613740565b86831015613782578489015161377e601f891682613691565b8355505b6001600288020188555050505b505050505050565b5f6040820190506137aa5f830185612999565b6137b76020830184612aa4565b939250505056fea2646970667358221220f8a90050f9ce3c8c6f4ef2ca91e9aee631d78c8c875ad93866619523b96bdcd164736f6c634300081a003300000000000000000000000000000000000000000000000000000004a817c800