608060405266038d7ea4c680005f196200001a9190620006f7565b5f196200002891906200075b565b6007555f6009556014600a555f600b556014600c55600b54600d55600c54600e55600d54600f55600e54601055731844620d73595e2fa9b994ea550f8296e8c6039160125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737da2e7f162a6254e90528d68e0cd5febc863fcc760135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506512309ce540006016556512309ce5400060175564174876e80060185534801562000174575f80fd5b505f620001866200069360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460035f620002386200069360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000317573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200033d9190620007fa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003c99190620007fa565b6040518363ffffffff1660e01b8152600401620003e89291906200083b565b6020604051808303815f875af115801562000405573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200042b9190620007fa565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f6200047f6200069a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200061f6200069360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c6800060405162000684919062000877565b60405180910390a35062000892565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200070382620006c1565b91506200071083620006c1565b925082620007235762000722620006ca565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200076782620006c1565b91506200077483620006c1565b92508282039050818111156200078f576200078e6200072e565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007c48262000799565b9050919050565b620007d681620007b8565b8114620007e1575f80fd5b50565b5f81519050620007f481620007cb565b92915050565b5f6020828403121562000812576200081162000795565b5b5f6200082184828501620007e4565b91505092915050565b6200083581620007b8565b82525050565b5f604082019050620008505f8301856200082a565b6200085f60208301846200082a565b9392505050565b6200087181620006c1565b82525050565b5f6020820190506200088c5f83018462000866565b92915050565b613c0380620008a05f395ff3fe6080604052600436106101cf575f3560e01c80637c519ffb116100f6578063a2a957bb11610094578063c492f04611610063578063c492f0461461062e578063dd62ed3e14610656578063ea1644d514610692578063f2fde38b146106ba576101d6565b8063a2a957bb14610578578063a9059cbb146105a0578063bfd79284146105dc578063c3c8cd8014610618576101d6565b80638da5cb5b116100d05780638da5cb5b146104d25780638f9a55c0146104fc57806395d89b411461052657806398a5c31514610550576101d6565b80637c519ffb146104565780637d1db4a51461046c5780637f2feddc14610496576101d6565b8063313ce5671161016e5780636fc3eaec1161013d5780636fc3eaec146103c657806370a08231146103dc578063715018a61461041857806374010ece1461042e576101d6565b8063313ce5671461032257806349bd5a5e1461034c5780636b999053146103765780636d8aa8f81461039e576101d6565b80631694505e116101aa5780631694505e1461026857806318160ddd1461029257806323b872dd146102bc5780632fd689e3146102f8576101d6565b8062b8cf2a146101da57806306fdde0314610202578063095ea7b31461022c576101d6565b366101d657005b5f80fd5b3480156101e5575f80fd5b5061020060048036038101906101fb9190612c57565b6106e2565b005b34801561020d575f80fd5b50610216610807565b6040516102239190612d18565b60405180910390f35b348015610237575f80fd5b50610252600480360381019061024d9190612d6b565b610844565b60405161025f9190612dc3565b60405180910390f35b348015610273575f80fd5b5061027c610861565b6040516102899190612e37565b60405180910390f35b34801561029d575f80fd5b506102a6610886565b6040516102b39190612e5f565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612e78565b610894565b6040516102ef9190612dc3565b60405180910390f35b348015610303575f80fd5b5061030c610968565b6040516103199190612e5f565b60405180910390f35b34801561032d575f80fd5b5061033661096e565b6040516103439190612ee3565b60405180910390f35b348015610357575f80fd5b50610360610976565b60405161036d9190612f0b565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612f24565b61099b565b005b3480156103a9575f80fd5b506103c460048036038101906103bf9190612f79565b610a86565b005b3480156103d1575f80fd5b506103da610b37565b005b3480156103e7575f80fd5b5061040260048036038101906103fd9190612f24565b610c04565b60405161040f9190612e5f565b60405180910390f35b348015610423575f80fd5b5061042c610c52565b005b348015610439575f80fd5b50610454600480360381019061044f9190612fa4565b610da0565b005b348015610461575f80fd5b5061046a610e3e565b005b348015610477575f80fd5b50610480610eef565b60405161048d9190612e5f565b60405180910390f35b3480156104a1575f80fd5b506104bc60048036038101906104b79190612f24565b610ef5565b6040516104c99190612e5f565b60405180910390f35b3480156104dd575f80fd5b506104e6610f0a565b6040516104f39190612f0b565b60405180910390f35b348015610507575f80fd5b50610510610f31565b60405161051d9190612e5f565b60405180910390f35b348015610531575f80fd5b5061053a610f37565b6040516105479190612d18565b60405180910390f35b34801561055b575f80fd5b5061057660048036038101906105719190612fa4565b610f74565b005b348015610583575f80fd5b5061059e60048036038101906105999190612fcf565b611012565b005b3480156105ab575f80fd5b506105c660048036038101906105c19190612d6b565b6110c8565b6040516105d39190612dc3565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd9190612f24565b6110e5565b60405161060f9190612dc3565b60405180910390f35b348015610623575f80fd5b5061062c611102565b005b348015610639575f80fd5b50610654600480360381019061064f919061308c565b6111d7565b005b348015610661575f80fd5b5061067c600480360381019061067791906130e9565b61130c565b6040516106899190612e5f565b60405180910390f35b34801561069d575f80fd5b506106b860048036038101906106b39190612fa4565b61138e565b005b3480156106c5575f80fd5b506106e060048036038101906106db9190612f24565b61142c565b005b6106ea6115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076d90613171565b60405180910390fd5b5f5b815181101561080357600160025f8484815181106107995761079861318f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806107fb906131e9565b915050610778565b5050565b60606040518060400160405280600c81526020017f47524f4b20565320504550450000000000000000000000000000000000000000815250905090565b5f6108576108506115e9565b84846115f0565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f66038d7ea4c68000905090565b5f6108a08484846117b3565b61095d846108ac6115e9565b61095885604051806060016040528060288152602001613ba66028913960055f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61090f6115e9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120139092919063ffffffff16565b6115f0565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109a36115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2690613171565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610a8e6115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1190613171565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b776115e9565b73ffffffffffffffffffffffffffffffffffffffff161480610bec575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd46115e9565b73ffffffffffffffffffffffffffffffffffffffff16145b610bf4575f80fd5b5f479050610c0181612075565b50565b5f610c4b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120dd565b9050919050565b610c5a6115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdd90613171565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da86115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90613171565b60405180910390fd5b8060168190555050565b610e466115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec990613171565b60405180910390fd5b6001601560146101000a81548160ff021916908315150217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600581526020017f4752455045000000000000000000000000000000000000000000000000000000815250905090565b610f7c6115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611008576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fff90613171565b60405180910390fd5b8060188190555050565b61101a6115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d90613171565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b5f6110db6110d46115e9565b84846117b3565b6001905092915050565b6002602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111426115e9565b73ffffffffffffffffffffffffffffffffffffffff1614806111b7575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661119f6115e9565b73ffffffffffffffffffffffffffffffffffffffff16145b6111bf575f80fd5b5f6111c930610c04565b90506111d481612149565b50565b6111df6115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290613171565b60405180910390fd5b5f5b83839050811015611306578160065f86868581811061128f5761128e61318f565b5b90506020020160208101906112a49190612f24565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806112fe906131e9565b91505061126d565b50505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113966115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141990613171565b60405180910390fd5b8060178190555050565b6114346115e9565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b790613171565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361152e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611525906132a0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361165e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116559061332e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c3906133bc565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117a69190612e5f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611821576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118189061344a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611886906134d8565b60405180910390fd5b5f81116118d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c890613566565b60405180910390fd5b6118d9610f0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119475750611917610f0a565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2057601560149054906101000a900460ff166119d657611968610f0a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc906135f4565b60405180910390fd5b5b601654811115611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a129061365c565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ab9575060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906136ea565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610c04565b611b639190613708565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a906137ab565b60405180910390fd5b5b5f611bae30610c04565b90505f60185482101590506016548210611bc85760165491505b808015611be0575060158054906101000a900460ff16155b8015611c39575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c515750601560169054906101000a900460ff165b8015611ca4575060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611cf7575060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d1d57611d0582612149565b5f4790505f811115611d1b57611d1a47612075565b5b505b50505b5f6001905060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc0575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e71575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e70575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e7e575f9050612001565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f27575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f3f57600954600d81905550600a54600e819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fe8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200057600b54600d81905550600c54600e819055505b5b61200d848484846123b2565b50505050565b5f83831115829061205a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120519190612d18565b60405180910390fd5b505f838561206891906137c9565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120d9573d5f803e3d5ffd5b5050565b5f600754821115612123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211a9061386c565b60405180910390fd5b5f61212c6123df565b9050612141818461240890919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561217f5761217e612ac1565b5b6040519080825280602002602001820160405280156121ad5781602001602082028036833780820191505090505b50905030815f815181106121c4576121c361318f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612268573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061228c919061389e565b816001815181106122a05761229f61318f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123063060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f0565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016123689594939291906139b9565b5f604051808303815f87803b15801561237f575f80fd5b505af1158015612391573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c0576123bf612451565b5b6123cb84848461248a565b806123d9576123d861264a565b5b50505050565b5f805f6123ea61265e565b91509150612401818361240890919063ffffffff16565b9250505090565b5f61244983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126b7565b905092915050565b5f600d5414801561246357505f600e54145b61248857600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f8061249987612718565b9550955095509550955095506124f58660035f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277890919063ffffffff16565b60035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125868560035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c190919063ffffffff16565b60035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d08161281e565b6125da84836128d5565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126379190612e5f565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60075490505f66038d7ea4c68000905061268d66038d7ea4c6800060075461240890919063ffffffff16565b8210156126aa5760075466038d7ea4c680009350935050506126b3565b81819350935050505b9091565b5f80831182906126fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f49190612d18565b60405180910390fd5b505f838561270b9190613a3e565b9050809150509392505050565b5f805f805f805f805f6127308a600d54600e5461290f565b9250925092505f61273f6123df565b90505f805f6127508e8787876129a1565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127b983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612013565b905092915050565b5f8082846127cf9190613708565b905083811015612814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280b90613ab8565b60405180910390fd5b8091505092915050565b5f6128276123df565b90505f61283d8284612a2590919063ffffffff16565b905061288f8160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c190919063ffffffff16565b60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128ea8260075461277890919063ffffffff16565b600781905550612905816008546127c190919063ffffffff16565b6008819055505050565b5f805f80612939606461292b888a612a2590919063ffffffff16565b61240890919063ffffffff16565b90505f6129626064612954888b612a2590919063ffffffff16565b61240890919063ffffffff16565b90505f61298a8261297c858c61277890919063ffffffff16565b61277890919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129b88589612a2590919063ffffffff16565b90505f6129ce8689612a2590919063ffffffff16565b90505f6129e48789612a2590919063ffffffff16565b90505f612a0c826129fe858761277890919063ffffffff16565b61277890919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a35575f9050612a96565b5f8284612a429190613ad6565b9050828482612a519190613a3e565b14612a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8890613b87565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612af782612ab1565b810181811067ffffffffffffffff82111715612b1657612b15612ac1565b5b80604052505050565b5f612b28612a9c565b9050612b348282612aee565b919050565b5f67ffffffffffffffff821115612b5357612b52612ac1565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9182612b68565b9050919050565b612ba181612b87565b8114612bab575f80fd5b50565b5f81359050612bbc81612b98565b92915050565b5f612bd4612bcf84612b39565b612b1f565b90508083825260208201905060208402830185811115612bf757612bf6612b64565b5b835b81811015612c205780612c0c8882612bae565b845260208401935050602081019050612bf9565b5050509392505050565b5f82601f830112612c3e57612c3d612aad565b5b8135612c4e848260208601612bc2565b91505092915050565b5f60208284031215612c6c57612c6b612aa5565b5b5f82013567ffffffffffffffff811115612c8957612c88612aa9565b5b612c9584828501612c2a565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612cd5578082015181840152602081019050612cba565b5f8484015250505050565b5f612cea82612c9e565b612cf48185612ca8565b9350612d04818560208601612cb8565b612d0d81612ab1565b840191505092915050565b5f6020820190508181035f830152612d308184612ce0565b905092915050565b5f819050919050565b612d4a81612d38565b8114612d54575f80fd5b50565b5f81359050612d6581612d41565b92915050565b5f8060408385031215612d8157612d80612aa5565b5b5f612d8e85828601612bae565b9250506020612d9f85828601612d57565b9150509250929050565b5f8115159050919050565b612dbd81612da9565b82525050565b5f602082019050612dd65f830184612db4565b92915050565b5f819050919050565b5f612dff612dfa612df584612b68565b612ddc565b612b68565b9050919050565b5f612e1082612de5565b9050919050565b5f612e2182612e06565b9050919050565b612e3181612e17565b82525050565b5f602082019050612e4a5f830184612e28565b92915050565b612e5981612d38565b82525050565b5f602082019050612e725f830184612e50565b92915050565b5f805f60608486031215612e8f57612e8e612aa5565b5b5f612e9c86828701612bae565b9350506020612ead86828701612bae565b9250506040612ebe86828701612d57565b9150509250925092565b5f60ff82169050919050565b612edd81612ec8565b82525050565b5f602082019050612ef65f830184612ed4565b92915050565b612f0581612b87565b82525050565b5f602082019050612f1e5f830184612efc565b92915050565b5f60208284031215612f3957612f38612aa5565b5b5f612f4684828501612bae565b91505092915050565b612f5881612da9565b8114612f62575f80fd5b50565b5f81359050612f7381612f4f565b92915050565b5f60208284031215612f8e57612f8d612aa5565b5b5f612f9b84828501612f65565b91505092915050565b5f60208284031215612fb957612fb8612aa5565b5b5f612fc684828501612d57565b91505092915050565b5f805f8060808587031215612fe757612fe6612aa5565b5b5f612ff487828801612d57565b945050602061300587828801612d57565b935050604061301687828801612d57565b925050606061302787828801612d57565b91505092959194509250565b5f80fd5b5f8083601f84011261304c5761304b612aad565b5b8235905067ffffffffffffffff81111561306957613068613033565b5b60208301915083602082028301111561308557613084612b64565b5b9250929050565b5f805f604084860312156130a3576130a2612aa5565b5b5f84013567ffffffffffffffff8111156130c0576130bf612aa9565b5b6130cc86828701613037565b935093505060206130df86828701612f65565b9150509250925092565b5f80604083850312156130ff576130fe612aa5565b5b5f61310c85828601612bae565b925050602061311d85828601612bae565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61315b602083612ca8565b915061316682613127565b602082019050919050565b5f6020820190508181035f8301526131888161314f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6131f382612d38565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613225576132246131bc565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61328a602683612ca8565b915061329582613230565b604082019050919050565b5f6020820190508181035f8301526132b78161327e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613318602483612ca8565b9150613323826132be565b604082019050919050565b5f6020820190508181035f8301526133458161330c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133a6602283612ca8565b91506133b18261334c565b604082019050919050565b5f6020820190508181035f8301526133d38161339a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613434602583612ca8565b915061343f826133da565b604082019050919050565b5f6020820190508181035f83015261346181613428565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134c2602383612ca8565b91506134cd82613468565b604082019050919050565b5f6020820190508181035f8301526134ef816134b6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613550602983612ca8565b915061355b826134f6565b604082019050919050565b5f6020820190508181035f83015261357d81613544565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6135de603f83612ca8565b91506135e982613584565b604082019050919050565b5f6020820190508181035f83015261360b816135d2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613646601c83612ca8565b915061365182613612565b602082019050919050565b5f6020820190508181035f8301526136738161363a565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f6136d4602383612ca8565b91506136df8261367a565b604082019050919050565b5f6020820190508181035f830152613701816136c8565b9050919050565b5f61371282612d38565b915061371d83612d38565b9250828201905080821115613735576137346131bc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613795602383612ca8565b91506137a08261373b565b604082019050919050565b5f6020820190508181035f8301526137c281613789565b9050919050565b5f6137d382612d38565b91506137de83612d38565b92508282039050818111156137f6576137f56131bc565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613856602a83612ca8565b9150613861826137fc565b604082019050919050565b5f6020820190508181035f8301526138838161384a565b9050919050565b5f8151905061389881612b98565b92915050565b5f602082840312156138b3576138b2612aa5565b5b5f6138c08482850161388a565b91505092915050565b5f819050919050565b5f6138ec6138e76138e2846138c9565b612ddc565b612d38565b9050919050565b6138fc816138d2565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61393481612b87565b82525050565b5f613945838361392b565b60208301905092915050565b5f602082019050919050565b5f61396782613902565b613971818561390c565b935061397c8361391c565b805f5b838110156139ac578151613993888261393a565b975061399e83613951565b92505060018101905061397f565b5085935050505092915050565b5f60a0820190506139cc5f830188612e50565b6139d960208301876138f3565b81810360408301526139eb818661395d565b90506139fa6060830185612efc565b613a076080830184612e50565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613a4882612d38565b9150613a5383612d38565b925082613a6357613a62613a11565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613aa2601b83612ca8565b9150613aad82613a6e565b602082019050919050565b5f6020820190508181035f830152613acf81613a96565b9050919050565b5f613ae082612d38565b9150613aeb83612d38565b9250828202613af981612d38565b91508282048414831517613b1057613b0f6131bc565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b71602183612ca8565b9150613b7c82613b17565b604082019050919050565b5f6020820190508181035f830152613b9e81613b65565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220059cd9aca2c4e743b297e12d713f48ae77c9e8cf41d02a01edf525c72daaaeeb64736f6c63430008150033