从二进制文件中提取JSON数组

3vpjnl9f  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(80)

我有一个二进制文件,我已经读入一个文本文件。这包含两个JSON数组,它们都有我希望取出的数据。
我已经尝试清理文件,我已经尝试通过utf-8ascii解码,并得到错误几次。
到目前为止,我最好的方法是从二进制文件中读入一个文本文件,作为string,然后我想我可以将JSON数组正则化?
到目前为止我只有这些

try:
    with open('TestReplays/replay_2023-04-14_21-28-07.rpl3', 'rb') as f:
        file = f.read()
        text = str(file)[2:-1]
        print(text)
except Exception as e:
    print(e)

我已经削减了下面的实际文件本身是超过700万字符长。

ESAV\x00\x00\x00\x03\x00\x1f\x8eB\x90\nQRmodd\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00rply\x00\x00\x00\x00\x00\x00\x089\x00\x00\x00\x00{"game":{"GameMode":"1","IsNetworkMode":"1","NbMaxPlayer":"2","NbPlayersAndIA":"2","AllowObservers":"1","ObserverDelay":"120","Seed":"1322943104","Private":"0","ServerName":"Lynchie vs Tiro Game 2","WithHost":"1","ServerProtocol":"1.0","TimeLeft":"0","Version":"94077","GameState":"0","NeedPassword":"0","NbIA":"0","TickRate":"10","UniqueSessionId":"1ae482a7:5597c6e6:45d98090:3ee8f755","ModList":"","ModTagList":"","ServerTag":"","GameType":"1","Map":"_2x3_BlackForestStorm","InitMoney":"1500","TimeLimit":"2400","ScoreLimit":"2000","DeploymentMode":"1","CombatRule":"2","IncomeRate":"3","WarmupCountdown":"10","DeploiementTimeMax":"180","DebriefingTimeMax":"180","LoadingTimeMax":"1200","NbMinPlayer":"10","DeltaMaxTeamSize":"10","MaxTeamSize":"10","PhaseADuration":"-1","PhaseBDuration":"-1","MapSelection":"0","MapRotationType":"0","CoopVsAI":"0","InverseSpawnPoints":"0","DivisionTagFilter":"DEFAULT","AutoFillAI":"0","DeltaTimeCheckAutoFillAI":"60"},"player_1":{"PlayerUserId":"684602","PlayerIALevel":"-1","PlayerObserver":"0","PlayerAlliance":"1","PlayerReady":"1","PlayerElo":"1600.75803065","PlayerLevel":"9","PlayerName":"Lynchie","PlayerTeamName":"","PlayerAvatar":"VirtualData/SteamGamerPicture/76561198043635455","PlayerDeckName":"","PlayerDeckContent":"FBE40YlpKTHojDCpywASZwLQGQAQwzHwLgAQLAALRTEQGwAQGwAIIgAIyAAIhwLIuwAJ8gAQtQdQvAARwwAQJgAQJgAQxTEQGwAWQQ9ovwAQ1w9wFAAIDQALlQAK/zHoiTEIDwAIEAAQLgAJLjEBAA==","PlayerSkinIndexUsed":"","PlayerIsAIAutoFilled":"0","PlayerScoreLimit":"2000","PlayerIncomeRate":"1"},"player_2":{"PlayerUserId":"323931","PlayerIALevel":"-1","PlayerObserver":"0","PlayerAlliance":"0","PlayerReady":"0","PlayerElo":"1559.63376877","PlayerLevel":"10","PlayerName":"Tiro","PlayerTeamName":"","PlayerAvatar":"VirtualData/SteamGamerPicture/76561198065998403","PlayerDeckName":"","PlayerDeckContent":"FBF6aIS1tYAFtYAGLwAKKYAEeAAEfUVIfYAIfYAEgoAKKUVGLUVKL4AEwYAEwYAGMoAIfYAIqsVKK8RKK8REq0VqUkRIfYAKIoAKIoAKJwAKUQAGJMRKLA9UegAEeIAEfgAGKsVGMQAKUQAAgA==","PlayerSkinIndexUsed":"","PlayerIsAIAutoFilled":"0","PlayerScoreLimit":"2000","PlayerIncomeRate":"1"},"ingamePlayerId":1}star\x00\x00\x00\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x003\x00\x00\x00\xff\xff\xff\xff\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\xa4\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff3\x00\x00\x00\xff\xff\xff\xff\xaf\x04\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff3\x00\x00\x00\xff\xff\xff\xff\xae\x04\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff3\x00\x00\x00\xff\xff\xff\xff\xad\x04\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff3\x00\x00\x00\xff\xff\xff\xff\xac\x04\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\x00\x00\xff\xff\xff\xff3\x00\x00\x00\xff\xff\xff\xff\xab\x04\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\xff\xff\xff\xff3\x00\x00\x004\x00\x00\x00\xff\xff\xff\xff\x01\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00j\x00\x02\x1c\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\xcd\xcc\xcc>\r\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x1c\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\xcd\xcc\xcc>\r\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00j\x00\x02\x1d\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\xcd\xcc\xcc>\r\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x1d\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\xcd\xcc\xcc>\r\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x08\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\t\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\t\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\n\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x0b\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x0c\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x19\x00(\x00\x00\x00\x00\x1c\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\r\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\r\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\'\x00\x00\x00\x00\x0e\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x19\x00(\x00\x00\x00\x00\x1d\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x002\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x0f\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x0f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x11\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x11\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x12\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x13\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x14\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x15\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x16\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x16\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x17\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x18\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x19\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1a\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1b\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1c\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1d\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1e\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\x1f\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00 \x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00!\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00!\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00"\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00#\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00#\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00$\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00%\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00%\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00&\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00&\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00\'\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00(\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00(\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00)\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00)\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00*\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00*\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00+\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00,\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00,\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00-\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00.\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00/\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00/\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x000\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x001\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x001\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x002\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x002\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x003\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x003\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x004\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x004\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x005\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x005\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x006\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x006\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x007\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x007\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x008\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x008\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x009\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x009\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00:\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00;\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00;\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00<\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00?\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00?x0c\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00A\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00endt\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00star\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\x00\x00I\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00pact\x00\x00\x00\x00\x00\x00\x00\x0e\x00\x00\{"result":{"Duration":"1247","Victory":"6"}}

我能想到的唯一其他事情是使用索引来获取“游戏”和“结果”,然后向前搜索,直到我得到下一个括号关闭JSON,或者这太复杂了?

ki0zmccv

ki0zmccv1#

这当然不是最快或最有效的方法,但对于您提供的文件部分,它工作得非常好!

def parse_file(file):
    json_return = []
    bracket_indentation = 0
    first_bracket = 0
    for idx, c in enumerate(file):
        if c == ord("{"):
            if bracket_indentation == 0:
                first_bracket = idx
            bracket_indentation += 1

        elif c == ord("}"):
            bracket_indentation -= 1
            if bracket_indentation == 0:
                try:
                    json_return.append(eval(file[first_bracket : idx + 1]))
                except Exception as e:
                    print(e)
    return json_return

try:
    with open("TestReplays/replay_2023-04-14_21-28-07.rpl3", "rb") as f:
        file = f.read()
        print(parse_file(file))
except Exception as e:
    print(e)

用你的字符串我得到:

[{'game': {'GameMode': '1', 'IsNetworkMode': '1', 'NbMaxPlayer': '2', 'NbPlayersAndIA': '2', 'AllowObservers': '1', 'ObserverDelay': '120', 'Seed': '1322943104', 'Private': '0', 'ServerName': 'Lynchie vs Tiro Game 2', 'WithHost': '1', 'ServerProtocol': '1.0', 'TimeLeft': '0', 'Version': '94077', 'GameState': '0', 'NeedPassword': '0', 'NbIA': '0', 'TickRate': '10', 'UniqueSessionId': '1ae482a7:5597c6e6:45d98090:3ee8f755', 'ModList': '', 'ModTagList': '', 'ServerTag': '', 'GameType': '1', 'Map': '_2x3_BlackForestStorm', 'InitMoney': '1500', 'TimeLimit': '2400', 'ScoreLimit': '2000', 'DeploymentMode': '1', 'CombatRule': '2', 'IncomeRate': '3', 'WarmupCountdown': '10', 'DeploiementTimeMax': '180', 'DebriefingTimeMax': '180', 'LoadingTimeMax': '1200', 'NbMinPlayer': '10', 'DeltaMaxTeamSize': '10', 'MaxTeamSize': '10', 'PhaseADuration': '-1', 'PhaseBDuration': '-1', 'MapSelection': '0', 'MapRotationType': '0', 'CoopVsAI': '0', 'InverseSpawnPoints': '0', 'DivisionTagFilter': 'DEFAULT', 'AutoFillAI': '0', 'DeltaTimeCheckAutoFillAI': '60'}, 'player_1': {'PlayerUserId': '684602', 'PlayerIALevel': '-1', 'PlayerObserver': '0', 'PlayerAlliance': '1', 'PlayerReady': '1', 'PlayerElo': '1600.75803065', 'PlayerLevel': '9', 'PlayerName': 'Lynchie', 'PlayerTeamName': '', 'PlayerAvatar': 'VirtualData/SteamGamerPicture/76561198043635455', 'PlayerDeckName': '', 'PlayerDeckContent': 'FBE40YlpKTHojDCpywASZwLQGQAQwzHwLgAQLAALRTEQGwAQGwAIIgAIyAAIhwLIuwAJ8gAQtQdQvAARwwAQJgAQJgAQxTEQGwAWQQ9ovwAQ1w9wFAAIDQALlQAK/zHoiTEIDwAIEAAQLgAJLjEBAA==', 'PlayerSkinIndexUsed': '', 'PlayerIsAIAutoFilled': '0', 'PlayerScoreLimit': '2000', 'PlayerIncomeRate': '1'}, 'player_2': {'PlayerUserId': '323931', 'PlayerIALevel': '-1', 'PlayerObserver': '0', 'PlayerAlliance': '0', 'PlayerReady': 
'0', 'PlayerElo': '1559.63376877', 'PlayerLevel': '10', 'PlayerName': 'Tiro', 'PlayerTeamName': '', 'PlayerAvatar': 'VirtualData/SteamGamerPicture/76561198065998403', 'PlayerDeckName': '', 'PlayerDeckContent': 'FBF6aIS1tYAFtYAGLwAKKYAEeAAEfUVIfYAIfYAEgoAKKUVGLUVKL4AEwYAEwYAGMoAIfYAIqsVKK8RKK8REq0VqUkRIfYAKIoAKIoAKJwAKUQAGJMRKLA9UegAEeIAEfgAGKsVGMQAKUQAAgA==', 'PlayerSkinIndexUsed': '', 'PlayerIsAIAutoFilled': '0', 'PlayerScoreLimit': '2000', 'PlayerIncomeRate': '1'}, 'ingamePlayerId': 1}, {'result': {'Duration': '1247', 'Victory': '6'}}]

更新

经过一些搜索,并直接在som.rpl3上测试,所以从我看到的,第一个json总是从“rply”后面10个字节开始,所以我从这里开始解析到最后一个'}',最后一个json总是结束文件,所以我反转文件,从第一个'}'到最后一个'',我来了这段代码:

def parse_first_json(file: bytes) -> dict[str, str]:
    rply_idx = file.find(b"rply")
    json_start_idx = rply_idx + 4 + 8 + 4

    first_bracket = 0
    bracket_indentation = 0
    for idx, c in enumerate(file[json_start_idx:]):
        if c == ord("{"):
            if bracket_indentation == 0:
                first_bracket = idx + json_start_idx
            bracket_indentation += 1
        elif c == ord("}"):
            bracket_indentation -= 1
            if bracket_indentation == 0:
                return eval(file[first_bracket : idx + json_start_idx + 1])
    raise Exception("Can't find first Json")

def parse_last_json(file: bytes) -> dict[str, str]:
    rev_file = file[::-1]
    last_bracket = 0
    bracket_indentation = 0

    for idx, c in enumerate(rev_file):
        if c == ord("}"):
            if bracket_indentation == 0:
                last_bracket = idx
            bracket_indentation += 1
        elif c == ord("{"):
            bracket_indentation -= 1
            if bracket_indentation == 0:
                return eval(rev_file[last_bracket : idx + 1][::-1])

    raise Exception("Can't find last Json")

def parse_file(file: bytes) -> tuple[dict[str, str], dict[str, str]]:
    first_json = parse_first_json(file)
    second_json = parse_last_json(file)

    return first_json, second_json

try:
    with open("C:/Users/Player/Downloads/replay_2017-04-23_22-29-04.rpl3", "rb") as f:
        file = f.read()
        print(parse_file(file))
except Exception as e:
    print(e)

相关问题