60806040526000600760146101000a81548160ff02191690831515021790555066ea7aa67b2d0000600855610bb86009553480156200003d57600080fd5b506040518060400160405280601081526020017f576f726c64206f662057697463686573000000000000000000000000000000008152506040518060400160405280600781526020017f57495443484553000000000000000000000000000000000000000000000000008152508160019080519060200190620000c2929190620007c4565b508060029080519060200190620000db929190620007c4565b505050620000fe620000f26200012b60201b60201c565b6200013360201b60201c565b62000125735b4165c64fadf8a6e59af3569e1403c25c1c85fe601e620001f960201b60201c565b62000c9e565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200021b8282604051806020016040528060008152506200021f60201b60201c565b5050565b6200023483838360016200023960201b60201c565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620002b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002a99062000a0b565b60405180910390fd5b6000841415620002f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f09062000a2d565b60405180910390fd5b6200030e6000868387620005db60201b60201c565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b85811015620005b657818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48315620005a0576200055d6000888488620005e160201b60201c565b6200059f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200059690620009e9565b60405180910390fd5b5b81806001019250508080600101915050620004dc565b508060008190555050620005d460008683876200079b60201b60201c565b5050505050565b50505050565b60006200060f8473ffffffffffffffffffffffffffffffffffffffff16620007a160201b620017a71760201c565b156200078e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620006416200012b60201b60201c565b8786866040518563ffffffff1660e01b815260040162000665949392919062000995565b602060405180830381600087803b1580156200068057600080fd5b505af1925050508015620006b457506040513d601f19601f82011682018060405250810190620006b191906200088b565b60015b6200073d573d8060008114620006e7576040519150601f19603f3d011682016040523d82523d6000602084013e620006ec565b606091505b5060008151141562000735576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072c90620009e9565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505062000793565b600190505b949350505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054620007d29062000b1c565b90600052602060002090601f016020900481019282620007f6576000855562000842565b82601f106200081157805160ff191683800117855562000842565b8280016001018555821562000842579182015b828111156200084157825182559160200191906001019062000824565b5b50905062000851919062000855565b5090565b5b808211156200087057600081600090555060010162000856565b5090565b600081519050620008858162000c84565b92915050565b600060208284031215620008a457620008a362000b81565b5b6000620008b48482850162000874565b91505092915050565b620008c88162000a7c565b82525050565b6000620008db8262000a4f565b620008e7818562000a5a565b9350620008f981856020860162000ae6565b620009048162000b86565b840191505092915050565b60006200091e60338362000a6b565b91506200092b8262000b97565b604082019050919050565b60006200094560218362000a6b565b9150620009528262000be6565b604082019050919050565b60006200096c60288362000a6b565b9150620009798262000c35565b604082019050919050565b6200098f8162000adc565b82525050565b6000608082019050620009ac6000830187620008bd565b620009bb6020830186620008bd565b620009ca604083018562000984565b8181036060830152620009de8184620008ce565b905095945050505050565b6000602082019050818103600083015262000a04816200090f565b9050919050565b6000602082019050818103600083015262000a268162000936565b9050919050565b6000602082019050818103600083015262000a48816200095d565b9050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000a898262000abc565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000b0657808201518184015260208101905062000ae9565b8381111562000b16576000848401525b50505050565b6000600282049050600182168062000b3557607f821691505b6020821081141562000b4c5762000b4b62000b52565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b62000c8f8162000a90565b811462000c9b57600080fd5b50565b613d7e8062000cae6000396000f3fe6080604052600436106101665760003560e01c80636352211e116100d1578063b88d4fde1161008a578063e222c7f911610064578063e222c7f91461052f578063e6f6ef1e14610546578063e985e9c514610571578063f2fde38b146105ae57610166565b8063b88d4fde1461049e578063c3151fed146104c7578063c87b56dd146104f257610166565b80636352211e1461038e57806370a08231146103cb578063715018a6146104085780638da5cb5b1461041f57806395d89b411461044a578063a22cb4651461047557610166565b80632db11544116101235780632db115441461028d5780632f745c59146102a957806332cb6b0c146102e65780633ccfd60b1461031157806342842e0e146103285780634f6ccce71461035157610166565b806301ffc9a71461016b57806306fdde03146101a8578063081812fc146101d3578063095ea7b31461021057806318160ddd1461023957806323b872dd14610264575b600080fd5b34801561017757600080fd5b50610192600480360381019061018d9190612a23565b6105d7565b60405161019f9190612f28565b60405180910390f35b3480156101b457600080fd5b506101bd610721565b6040516101ca9190612f43565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190612a7d565b6107b3565b6040516102079190612ec1565b60405180910390f35b34801561021c57600080fd5b50610237600480360381019061023291906129e3565b610838565b005b34801561024557600080fd5b5061024e610951565b60405161025b9190613225565b60405180910390f35b34801561027057600080fd5b5061028b600480360381019061028691906128cd565b61095a565b005b6102a760048036038101906102a29190612a7d565b61096a565b005b3480156102b557600080fd5b506102d060048036038101906102cb91906129e3565b610ab0565b6040516102dd9190613225565b60405180910390f35b3480156102f257600080fd5b506102fb610ca2565b6040516103089190613225565b60405180910390f35b34801561031d57600080fd5b50610326610ca8565b005b34801561033457600080fd5b5061034f600480360381019061034a91906128cd565b61108a565b005b34801561035d57600080fd5b5061037860048036038101906103739190612a7d565b6110aa565b6040516103859190613225565b60405180910390f35b34801561039a57600080fd5b506103b560048036038101906103b09190612a7d565b6110fd565b6040516103c29190612ec1565b60405180910390f35b3480156103d757600080fd5b506103f260048036038101906103ed9190612860565b611113565b6040516103ff9190613225565b60405180910390f35b34801561041457600080fd5b5061041d6111fc565b005b34801561042b57600080fd5b50610434611284565b6040516104419190612ec1565b60405180910390f35b34801561045657600080fd5b5061045f6112ae565b60405161046c9190612f43565b60405180910390f35b34801561048157600080fd5b5061049c600480360381019061049791906129a3565b611340565b005b3480156104aa57600080fd5b506104c560048036038101906104c09190612920565b6114c1565b005b3480156104d357600080fd5b506104dc61151d565b6040516104e99190613225565b60405180910390f35b3480156104fe57600080fd5b5061051960048036038101906105149190612a7d565b611523565b6040516105269190612f43565b60405180910390f35b34801561053b57600080fd5b50610544611560565b005b34801561055257600080fd5b5061055b611608565b6040516105689190612f28565b60405180910390f35b34801561057d57600080fd5b506105986004803603810190610593919061288d565b61161b565b6040516105a59190612f28565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612860565b6116af565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061070a57507f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061071a5750610719826117ca565b5b9050919050565b606060018054610730906134a4565b80601f016020809104026020016040519081016040528092919081815260200182805461075c906134a4565b80156107a95780601f1061077e576101008083540402835291602001916107a9565b820191906000526020600020905b81548152906001019060200180831161078c57829003601f168201915b5050505050905090565b60006107be82611834565b6107fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f490613205565b60405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610843826110fd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156108b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ab90613125565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108d3611841565b73ffffffffffffffffffffffffffffffffffffffff1614806109025750610901816108fc611841565b61161b565b5b610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093890613025565b60405180910390fd5b61094c838383611849565b505050565b60008054905090565b6109658383836118fb565b505050565b600760149054906101000a900460ff166109b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b090613105565b60405180910390fd5b600a8111156109fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f490612f85565b60405180910390fd5b80600854610a0b9190613360565b3414610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390613185565b60405180910390fd5b60095481610a58610951565b610a6291906132d9565b1115610aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9a906130e5565b60405180910390fd5b610aad3382611e3b565b50565b6000610abb83611113565b8210610afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af390612f65565b60405180910390fd5b6000610b06610951565b905060008060005b83811015610c60576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614610c0057806000015192505b8773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c525786841415610c49578195505050505050610c9c565b83806001019450505b508080600101915050610b0e565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c93906131c5565b60405180910390fd5b92915050565b60095481565b610cb0611841565b73ffffffffffffffffffffffffffffffffffffffff16610cce611284565b73ffffffffffffffffffffffffffffffffffffffff1614610d24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1b90613085565b60405180910390fd5b6000479050739408c666a65f2867a3ef3060766077462f84c71773ffffffffffffffffffffffffffffffffffffffff166108fc6103e883604b610d679190613360565b610d71919061332f565b9081150290604051600060405180830381858888f19350505050158015610d9c573d6000803e3d6000fd5b50736b003507d437caf2bf3e1c79e536136513153cd873ffffffffffffffffffffffffffffffffffffffff166108fc6103e883604b610ddb9190613360565b610de5919061332f565b9081150290604051600060405180830381858888f19350505050158015610e10573d6000803e3d6000fd5b5073ba15ce943d9d1e84e4b01832e9b6dc114160c14573ffffffffffffffffffffffffffffffffffffffff166108fc6064836023610e4e9190613360565b610e58919061332f565b9081150290604051600060405180830381858888f19350505050158015610e83573d6000803e3d6000fd5b5073adedde1c9f75ce7c3a124b748784d7d8a4204c8773ffffffffffffffffffffffffffffffffffffffff166108fc600a83610ebf919061332f565b9081150290604051600060405180830381858888f19350505050158015610eea573d6000803e3d6000fd5b5073e2bbd85a471f6e084b41dd31015b742117167fcb73ffffffffffffffffffffffffffffffffffffffff166108fc600a83610f26919061332f565b9081150290604051600060405180830381858888f19350505050158015610f51573d6000803e3d6000fd5b507366c748b8b0811bf44b74159599c201a699fee12273ffffffffffffffffffffffffffffffffffffffff166108fc600a83610f8d919061332f565b9081150290604051600060405180830381858888f19350505050158015610fb8573d6000803e3d6000fd5b5073f3fb45503c974c34be6b6431e7ea5becc75f8b1073ffffffffffffffffffffffffffffffffffffffff166108fc600a83610ff4919061332f565b9081150290604051600060405180830381858888f1935050505015801561101f573d6000803e3d6000fd5b507312bab3833347f0e1de24cb063e92057be8397d3173ffffffffffffffffffffffffffffffffffffffff166108fc600a8361105b919061332f565b9081150290604051600060405180830381858888f19350505050158015611086573d6000803e3d6000fd5b5050565b6110a5838383604051806020016040528060008152506114c1565b505050565b60006110b4610951565b82106110f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ec90612fe5565b60405180910390fd5b819050919050565b600061110882611e59565b600001519050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b90613045565b60405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff169050919050565b611204611841565b73ffffffffffffffffffffffffffffffffffffffff16611222611284565b73ffffffffffffffffffffffffffffffffffffffff1614611278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126f90613085565b60405180910390fd5b6112826000611ff3565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546112bd906134a4565b80601f01602080910402602001604051908101604052809291908181526020018280546112e9906134a4565b80156113365780601f1061130b57610100808354040283529160200191611336565b820191906000526020600020905b81548152906001019060200180831161131957829003601f168201915b5050505050905090565b611348611841565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad906130a5565b60405180910390fd5b80600660006113c3611841565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611470611841565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516114b59190612f28565b60405180910390a35050565b6114cc8484846118fb565b6114d8848484846120b9565b611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e90613145565b60405180910390fd5b50505050565b60085481565b606061153a60018361153591906132d9565b612250565b60405160200161154a9190612e9f565b6040516020818303038152906040529050919050565b611568611841565b73ffffffffffffffffffffffffffffffffffffffff16611586611284565b73ffffffffffffffffffffffffffffffffffffffff16146115dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d390613085565b60405180910390fd5b600760149054906101000a900460ff1615600760146101000a81548160ff021916908315150217905550565b600760149054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6116b7611841565b73ffffffffffffffffffffffffffffffffffffffff166116d5611284565b73ffffffffffffffffffffffffffffffffffffffff161461172b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172290613085565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561179b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179290612fa5565b60405180910390fd5b6117a481611ff3565b50565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6000805482109050919050565b600033905090565b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600061190682611e59565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1661192d611841565b73ffffffffffffffffffffffffffffffffffffffff1614806119895750611952611841565b73ffffffffffffffffffffffffffffffffffffffff16611971846107b3565b73ffffffffffffffffffffffffffffffffffffffff16145b806119a557506119a4826000015161199f611841565b61161b565b5b9050806119e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119de906130c5565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5090613065565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611ac9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac090613005565b60405180910390fd5b611ad685858560016123b1565b611ae66000848460000151611849565b6001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160392506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550836003600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611dcb57611d2a81611834565b15611dca5782600001516003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611e3485858560016123b7565b5050505050565b611e558282604051806020016040528060008152506123bd565b5050565b611e6161274d565b611e6a82611834565b611ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea090612fc5565b60405180910390fd5b60008290505b60008110611fb2576000600360008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614611fa3578092505050611fee565b50808060019003915050611eaf565b506040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fe5906131e5565b60405180910390fd5b919050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006120da8473ffffffffffffffffffffffffffffffffffffffff166117a7565b15612243578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612103611841565b8786866040518563ffffffff1660e01b81526004016121259493929190612edc565b602060405180830381600087803b15801561213f57600080fd5b505af192505050801561217057506040513d601f19601f8201168201806040525081019061216d9190612a50565b60015b6121f3573d80600081146121a0576040519150601f19603f3d011682016040523d82523d6000602084013e6121a5565b606091505b506000815114156121eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e290613145565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612248565b600190505b949350505050565b60606000821415612298576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506123ac565b600082905060005b600082146122ca5780806122b390613507565b915050600a826122c3919061332f565b91506122a0565b60008167ffffffffffffffff8111156122e6576122e561363d565b5b6040519080825280601f01601f1916602001820160405280156123185781602001600182028036833780820191505090505b5090505b600085146123a55760018261233191906133ba565b9150600a856123409190613550565b603061234c91906132d9565b60f81b8183815181106123625761236161360e565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561239e919061332f565b945061231c565b8093505050505b919050565b50505050565b50505050565b6123ca83838360016123cf565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613165565b60405180910390fd5b6000841415612489576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612480906131a5565b60405180910390fd5b61249660008683876123b1565b83600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555083600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160108282829054906101000a90046fffffffffffffffffffffffffffffffff160192506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550846003600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426003600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060005b8581101561273057818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4831561271b576126db60008884886120b9565b61271a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161271190613145565b60405180910390fd5b5b81806001019250508080600101915050612664565b50806000819055505061274660008683876123b7565b5050505050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681525090565b600061279a61279584613265565b613240565b9050828152602081018484840111156127b6576127b5613671565b5b6127c1848285613462565b509392505050565b6000813590506127d881613cec565b92915050565b6000813590506127ed81613d03565b92915050565b60008135905061280281613d1a565b92915050565b60008151905061281781613d1a565b92915050565b600082601f8301126128325761283161366c565b5b8135612842848260208601612787565b91505092915050565b60008135905061285a81613d31565b92915050565b6000602082840312156128765761287561367b565b5b6000612884848285016127c9565b91505092915050565b600080604083850312156128a4576128a361367b565b5b60006128b2858286016127c9565b92505060206128c3858286016127c9565b9150509250929050565b6000806000606084860312156128e6576128e561367b565b5b60006128f4868287016127c9565b9350506020612905868287016127c9565b92505060406129168682870161284b565b9150509250925092565b6000806000806080858703121561293a5761293961367b565b5b6000612948878288016127c9565b9450506020612959878288016127c9565b935050604061296a8782880161284b565b925050606085013567ffffffffffffffff81111561298b5761298a613676565b5b6129978782880161281d565b91505092959194509250565b600080604083850312156129ba576129b961367b565b5b60006129c8858286016127c9565b92505060206129d9858286016127de565b9150509250929050565b600080604083850312156129fa576129f961367b565b5b6000612a08858286016127c9565b9250506020612a198582860161284b565b9150509250929050565b600060208284031215612a3957612a3861367b565b5b6000612a47848285016127f3565b91505092915050565b600060208284031215612a6657612a6561367b565b5b6000612a7484828501612808565b91505092915050565b600060208284031215612a9357612a9261367b565b5b6000612aa18482850161284b565b91505092915050565b612ab3816133ee565b82525050565b612ac281613400565b82525050565b6000612ad382613296565b612add81856132ac565b9350612aed818560208601613471565b612af681613680565b840191505092915050565b6000612b0c826132a1565b612b1681856132bd565b9350612b26818560208601613471565b612b2f81613680565b840191505092915050565b6000612b45826132a1565b612b4f81856132ce565b9350612b5f818560208601613471565b80840191505092915050565b6000612b786022836132bd565b9150612b8382613691565b604082019050919050565b6000612b9b602c836132bd565b9150612ba6826136e0565b604082019050919050565b6000612bbe6026836132bd565b9150612bc98261372f565b604082019050919050565b6000612be1602a836132bd565b9150612bec8261377e565b604082019050919050565b6000612c046023836132bd565b9150612c0f826137cd565b604082019050919050565b6000612c276025836132bd565b9150612c328261381c565b604082019050919050565b6000612c4a6024836132ce565b9150612c558261386b565b602482019050919050565b6000612c6d6039836132bd565b9150612c78826138ba565b604082019050919050565b6000612c90602b836132bd565b9150612c9b82613909565b604082019050919050565b6000612cb36026836132bd565b9150612cbe82613958565b604082019050919050565b6000612cd66020836132bd565b9150612ce1826139a7565b602082019050919050565b6000612cf9601a836132bd565b9150612d04826139d0565b602082019050919050565b6000612d1c6032836132bd565b9150612d27826139f9565b604082019050919050565b6000612d3f601e836132bd565b9150612d4a82613a48565b602082019050919050565b6000612d62601a836132bd565b9150612d6d82613a71565b602082019050919050565b6000612d856022836132bd565b9150612d9082613a9a565b604082019050919050565b6000612da86033836132bd565b9150612db382613ae9565b604082019050919050565b6000612dcb6021836132bd565b9150612dd682613b38565b604082019050919050565b6000612dee601a836132bd565b9150612df982613b87565b602082019050919050565b6000612e116028836132bd565b9150612e1c82613bb0565b604082019050919050565b6000612e34602e836132bd565b9150612e3f82613bff565b604082019050919050565b6000612e57602f836132bd565b9150612e6282613c4e565b604082019050919050565b6000612e7a602d836132bd565b9150612e8582613c9d565b604082019050919050565b612e9981613458565b82525050565b6000612eaa82612c3d565b9150612eb68284612b3a565b915081905092915050565b6000602082019050612ed66000830184612aaa565b92915050565b6000608082019050612ef16000830187612aaa565b612efe6020830186612aaa565b612f0b6040830185612e90565b8181036060830152612f1d8184612ac8565b905095945050505050565b6000602082019050612f3d6000830184612ab9565b92915050565b60006020820190508181036000830152612f5d8184612b01565b905092915050565b60006020820190508181036000830152612f7e81612b6b565b9050919050565b60006020820190508181036000830152612f9e81612b8e565b9050919050565b60006020820190508181036000830152612fbe81612bb1565b9050919050565b60006020820190508181036000830152612fde81612bd4565b9050919050565b60006020820190508181036000830152612ffe81612bf7565b9050919050565b6000602082019050818103600083015261301e81612c1a565b9050919050565b6000602082019050818103600083015261303e81612c60565b9050919050565b6000602082019050818103600083015261305e81612c83565b9050919050565b6000602082019050818103600083015261307e81612ca6565b9050919050565b6000602082019050818103600083015261309e81612cc9565b9050919050565b600060208201905081810360008301526130be81612cec565b9050919050565b600060208201905081810360008301526130de81612d0f565b9050919050565b600060208201905081810360008301526130fe81612d32565b9050919050565b6000602082019050818103600083015261311e81612d55565b9050919050565b6000602082019050818103600083015261313e81612d78565b9050919050565b6000602082019050818103600083015261315e81612d9b565b9050919050565b6000602082019050818103600083015261317e81612dbe565b9050919050565b6000602082019050818103600083015261319e81612de1565b9050919050565b600060208201905081810360008301526131be81612e04565b9050919050565b600060208201905081810360008301526131de81612e27565b9050919050565b600060208201905081810360008301526131fe81612e4a565b9050919050565b6000602082019050818103600083015261321e81612e6d565b9050919050565b600060208201905061323a6000830184612e90565b92915050565b600061324a61325b565b905061325682826134d6565b919050565b6000604051905090565b600067ffffffffffffffff8211156132805761327f61363d565b5b61328982613680565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132e482613458565b91506132ef83613458565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561332457613323613581565b5b828201905092915050565b600061333a82613458565b915061334583613458565b925082613355576133546135b0565b5b828204905092915050565b600061336b82613458565b915061337683613458565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133af576133ae613581565b5b828202905092915050565b60006133c582613458565b91506133d083613458565b9250828210156133e3576133e2613581565b5b828203905092915050565b60006133f982613438565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561348f578082015181840152602081019050613474565b8381111561349e576000848401525b50505050565b600060028204905060018216806134bc57607f821691505b602082108114156134d0576134cf6135df565b5b50919050565b6134df82613680565b810181811067ffffffffffffffff821117156134fe576134fd61363d565b5b80604052505050565b600061351282613458565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561354557613544613581565b5b600182019050919050565b600061355b82613458565b915061356683613458565b925082613576576135756135b0565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231413a206f776e657220696e646578206f7574206f6620626f756e60008201527f6473000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e76616c6964206e756d626572206f6620746f6b656e73207175657269657360008201527f20666f72206d696e74696e670000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a206f776e657220717565727920666f72206e6f6e6578697360008201527f74656e7420746f6b656e00000000000000000000000000000000000000000000602082015250565b7f455243373231413a20676c6f62616c20696e646578206f7574206f6620626f7560008201527f6e64730000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f68747470733a2f2f776f726c646f6677697463682e636f2e756b2f6d6574616460008201527f6174612f00000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76652063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f76656420666f7220616c6c00000000000000602082015250565b7f455243373231413a2062616c616e636520717565727920666f7220746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e736665722066726f6d20696e636f727265637460008201527f206f776e65720000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f455243373231413a20617070726f766520746f2063616c6c6572000000000000600082015250565b7f455243373231413a207472616e736665722063616c6c6572206973206e6f742060008201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000602082015250565b7f4e6f7420656e6f75676820746f6b656e73206c65667420746f206d696e740000600082015250565b7f5075626c69632073616c65206973206e6f742072756e6e696e67000000000000600082015250565b7f455243373231413a20617070726f76616c20746f2063757272656e74206f776e60008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a207472616e7366657220746f206e6f6e204552433732315260008201527f6563656976657220696d706c656d656e74657200000000000000000000000000602082015250565b7f455243373231413a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f496e636f7272656374204554482073656e7420746f206d696e74000000000000600082015250565b7f455243373231413a207175616e74697479206d7573742062652067726561746560008201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2067657420746f6b656e206f662060008201527f6f776e657220627920696e646578000000000000000000000000000000000000602082015250565b7f455243373231413a20756e61626c6520746f2064657465726d696e652074686560008201527f206f776e6572206f6620746f6b656e0000000000000000000000000000000000602082015250565b7f455243373231413a20617070726f76656420717565727920666f72206e6f6e6560008201527f78697374656e7420746f6b656e00000000000000000000000000000000000000602082015250565b613cf5816133ee565b8114613d0057600080fd5b50565b613d0c81613400565b8114613d1757600080fd5b50565b613d238161340c565b8114613d2e57600080fd5b50565b613d3a81613458565b8114613d4557600080fd5b5056fea2646970667358221220f846b282317b296c71d7212b5efae1291ea19b2a2fc1f89d4914d78fde8769c864736f6c63430008070033