{"diffoscope-json-version": 1, "source1": "/input1", "source2": "/input2", "unified_diff": null, "details": [{"source1": "zipinfo {}", "source2": "zipinfo {}", "unified_diff": "@@ -1,8 +1,8 @@\n-Zip file size: 13080 bytes, number of entries: 21\n+Zip file size: 13095 bytes, number of entries: 21\n -rw-r--r--  2.0 unx       64 b- defN 20-Apr-01 08:04 META-INF/MANIFEST.MF\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/configcenter/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/\n@@ -11,13 +11,13 @@\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/dubbo/internal/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/\n drwxr-xr-x  2.0 unx        0 b- stor 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/\n -rw-r--r--  2.0 unx    10351 b- defN 20-Apr-01 08:04 META-INF/DEPENDENCIES\n -rw-r--r--  2.0 unx    11358 b- defN 20-Apr-01 08:04 META-INF/LICENSE\n -rw-r--r--  2.0 unx      180 b- defN 20-Apr-01 08:04 META-INF/NOTICE\n--rw-r--r--  2.0 unx     7055 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java\n--rw-r--r--  2.0 unx     1373 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java\n+-rw-r--r--  2.0 unx     7252 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java\n+-rw-r--r--  2.0 unx     1406 b- defN 20-Apr-01 08:04 org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java\n -rw-r--r--  2.0 unx       79 b- defN 20-Apr-01 08:04 META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory\n--rw-r--r--  2.0 unx     2771 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml\n+-rw-r--r--  2.0 unx     2698 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml\n -rw-r--r--  2.0 unx       78 b- defN 20-Apr-01 08:04 META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.properties\n-21 files, 33309 bytes uncompressed, 9972 bytes compressed:  70.1%\n+21 files, 33466 bytes uncompressed, 9987 bytes compressed:  70.2%\n"}, {"source1": "zipdetails --redact --scan --utc {}", "source2": "zipdetails --redact --scan --utc {}", "unified_diff": "@@ -299,781 +299,781 @@\n 1B43 Extract Zip Spec      14 (20) '2.0'\n 1B44 Extract OS            00 (0) 'MS-DOS'\n 1B45 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n 1B47 Compression Method    0008 (8) 'Deflated'\n 1B49 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-1B4D CRC                   F0553B98 (4032117656)\n-1B51 Compressed Size       000007FC (2044)\n-1B55 Uncompressed Size     00001B8F (7055)\n+1B4D CRC                   B44A5E3E (3024772670)\n+1B51 Compressed Size       00000809 (2057)\n+1B55 Uncompressed Size     00001C54 (7252)\n 1B59 Filename Length       0048 (72)\n 1B5B Extra Length          0000 (0)\n 1B5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n # WARNING: Offset 0x1B5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n 1BA5 PAYLOAD\n \n-23A1 LOCAL HEADER #18      04034B50 (67324752)\n-23A5 Extract Zip Spec      14 (20) '2.0'\n-23A6 Extract OS            00 (0) 'MS-DOS'\n-23A7 General Purpose Flag  0800 (2048)\n+23AE LOCAL HEADER #18      04034B50 (67324752)\n+23B2 Extract Zip Spec      14 (20) '2.0'\n+23B3 Extract OS            00 (0) 'MS-DOS'\n+23B4 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-23A9 Compression Method    0008 (8) 'Deflated'\n-23AB Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-23AF CRC                   D59518E0 (3583318240)\n-23B3 Compressed Size       00000285 (645)\n-23B7 Uncompressed Size     0000055D (1373)\n-23BB Filename Length       004F (79)\n-23BD Extra Length          0000 (0)\n-23BF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+23B6 Compression Method    0008 (8) 'Deflated'\n+23B8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+23BC CRC                   2C654259 (744833625)\n+23C0 Compressed Size       0000028C (652)\n+23C4 Uncompressed Size     0000057E (1406)\n+23C8 Filename Length       004F (79)\n+23CA Extra Length          0000 (0)\n+23CC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x23BF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x23CC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-240E PAYLOAD\n+241B PAYLOAD\n \n-2693 LOCAL HEADER #19      04034B50 (67324752)\n-2697 Extract Zip Spec      14 (20) '2.0'\n-2698 Extract OS            00 (0) 'MS-DOS'\n-2699 General Purpose Flag  0800 (2048)\n+26A7 LOCAL HEADER #19      04034B50 (67324752)\n+26AB Extract Zip Spec      14 (20) '2.0'\n+26AC Extract OS            00 (0) 'MS-DOS'\n+26AD General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-269B Compression Method    0008 (8) 'Deflated'\n-269D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-26A1 CRC                   26FDC05F (654164063)\n-26A5 Compressed Size       00000046 (70)\n-26A9 Uncompressed Size     0000004F (79)\n-26AD Filename Length       005F (95)\n-26AF Extra Length          0000 (0)\n-26B1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+26AF Compression Method    0008 (8) 'Deflated'\n+26B1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+26B5 CRC                   26FDC05F (654164063)\n+26B9 Compressed Size       00000046 (70)\n+26BD Uncompressed Size     0000004F (79)\n+26C1 Filename Length       005F (95)\n+26C3 Extra Length          0000 (0)\n+26C5 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x26B1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x26C5: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2710 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2724 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-2756 LOCAL HEADER #20      04034B50 (67324752)\n-275A Extract Zip Spec      14 (20) '2.0'\n-275B Extract OS            00 (0) 'MS-DOS'\n-275C General Purpose Flag  0800 (2048)\n+276A LOCAL HEADER #20      04034B50 (67324752)\n+276E Extract Zip Spec      14 (20) '2.0'\n+276F Extract OS            00 (0) 'MS-DOS'\n+2770 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-275E Compression Method    0008 (8) 'Deflated'\n-2760 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2764 CRC                   FB57BB2D (4216830765)\n-2768 Compressed Size       000003F2 (1010)\n-276C Uncompressed Size     00000AD3 (2771)\n-2770 Filename Length       003F (63)\n-2772 Extra Length          0000 (0)\n-2774 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2772 Compression Method    0008 (8) 'Deflated'\n+2774 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2778 CRC                   4486615B (1149657435)\n+277C Compressed Size       000003ED (1005)\n+2780 Uncompressed Size     00000A8A (2698)\n+2784 Filename Length       003F (63)\n+2786 Extra Length          0000 (0)\n+2788 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2774: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2788: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-27B3 PAYLOAD\n+27C7 PAYLOAD\n \n-2BA5 LOCAL HEADER #21      04034B50 (67324752)\n-2BA9 Extract Zip Spec      14 (20) '2.0'\n-2BAA Extract OS            00 (0) 'MS-DOS'\n-2BAB General Purpose Flag  0800 (2048)\n+2BB4 LOCAL HEADER #21      04034B50 (67324752)\n+2BB8 Extract Zip Spec      14 (20) '2.0'\n+2BB9 Extract OS            00 (0) 'MS-DOS'\n+2BBA General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2BAD Compression Method    0008 (8) 'Deflated'\n-2BAF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2BB3 CRC                   1E03A4CD (503555277)\n-2BB7 Compressed Size       0000004A (74)\n-2BBB Uncompressed Size     0000004E (78)\n-2BBF Filename Length       0046 (70)\n-2BC1 Extra Length          0000 (0)\n-2BC3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2BBC Compression Method    0008 (8) 'Deflated'\n+2BBE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2BC2 CRC                   1E03A4CD (503555277)\n+2BC6 Compressed Size       0000004A (74)\n+2BCA Uncompressed Size     0000004E (78)\n+2BCE Filename Length       0046 (70)\n+2BD0 Extra Length          0000 (0)\n+2BD2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2BC3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2BD2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-2C09 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n+2C18 PAYLOAD               XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n \n-2C53 CENTRAL HEADER #1     02014B50 (33639248)\n-2C57 Created Zip Spec      14 (20) '2.0'\n-2C58 Created OS            03 (3) 'Unix'\n-2C59 Extract Zip Spec      14 (20) '2.0'\n-2C5A Extract OS            00 (0) 'MS-DOS'\n-2C5B General Purpose Flag  0800 (2048)\n+2C62 CENTRAL HEADER #1     02014B50 (33639248)\n+2C66 Created Zip Spec      14 (20) '2.0'\n+2C67 Created OS            03 (3) 'Unix'\n+2C68 Extract Zip Spec      14 (20) '2.0'\n+2C69 Extract OS            00 (0) 'MS-DOS'\n+2C6A General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2C5D Compression Method    0008 (8) 'Deflated'\n-2C5F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2C63 CRC                   A689EB18 (2794056472)\n-2C67 Compressed Size       00000042 (66)\n-2C6B Uncompressed Size     00000040 (64)\n-2C6F Filename Length       0014 (20)\n-2C71 Extra Length          0000 (0)\n-2C73 Comment Length        0000 (0)\n-2C75 Disk Start            0000 (0)\n-2C77 Int File Attributes   0000 (0)\n+2C6C Compression Method    0008 (8) 'Deflated'\n+2C6E Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2C72 CRC                   A689EB18 (2794056472)\n+2C76 Compressed Size       00000042 (66)\n+2C7A Uncompressed Size     00000040 (64)\n+2C7E Filename Length       0014 (20)\n+2C80 Extra Length          0000 (0)\n+2C82 Comment Length        0000 (0)\n+2C84 Disk Start            0000 (0)\n+2C86 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2C79 Ext File Attributes   81A40000 (2175008768)\n+2C88 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-2C7D Local Header Offset   00000000 (0)\n-2C81 Filename              'XXXXXXXXXXXXXXXXXXXX'\n+2C8C Local Header Offset   00000000 (0)\n+2C90 Filename              'XXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2C81: Filename 'XXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2C90: Filename 'XXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-2C95 CENTRAL HEADER #2     02014B50 (33639248)\n-2C99 Created Zip Spec      14 (20) '2.0'\n-2C9A Created OS            03 (3) 'Unix'\n-2C9B Extract Zip Spec      0A (10) '1.0'\n-2C9C Extract OS            00 (0) 'MS-DOS'\n-2C9D General Purpose Flag  0800 (2048)\n+2CA4 CENTRAL HEADER #2     02014B50 (33639248)\n+2CA8 Created Zip Spec      14 (20) '2.0'\n+2CA9 Created OS            03 (3) 'Unix'\n+2CAA Extract Zip Spec      0A (10) '1.0'\n+2CAB Extract OS            00 (0) 'MS-DOS'\n+2CAC General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2C9F Compression Method    0000 (0) 'Stored'\n-2CA1 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2CA5 CRC                   00000000 (0)\n-2CA9 Compressed Size       00000000 (0)\n-2CAD Uncompressed Size     00000000 (0)\n-2CB1 Filename Length       0009 (9)\n-2CB3 Extra Length          0000 (0)\n-2CB5 Comment Length        0000 (0)\n-2CB7 Disk Start            0000 (0)\n-2CB9 Int File Attributes   0000 (0)\n+2CAE Compression Method    0000 (0) 'Stored'\n+2CB0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2CB4 CRC                   00000000 (0)\n+2CB8 Compressed Size       00000000 (0)\n+2CBC Uncompressed Size     00000000 (0)\n+2CC0 Filename Length       0009 (9)\n+2CC2 Extra Length          0000 (0)\n+2CC4 Comment Length        0000 (0)\n+2CC6 Disk Start            0000 (0)\n+2CC8 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2CBB Ext File Attributes   41ED0010 (1106051088)\n+2CCA Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2CBF Local Header Offset   00000074 (116)\n-2CC3 Filename              'XXXXXXXXX'\n+2CCE Local Header Offset   00000074 (116)\n+2CD2 Filename              'XXXXXXXXX'\n #\n-# WARNING: Offset 0x2CC3: Filename 'XXXXXXXXX'\n+# WARNING: Offset 0x2CD2: Filename 'XXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2CC3: Directory 'XXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2CD2: Directory 'XXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2C9B: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n+# WARNING: Offset 0x2CAA: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXX'\n #\n \n-2CCC CENTRAL HEADER #3     02014B50 (33639248)\n-2CD0 Created Zip Spec      14 (20) '2.0'\n-2CD1 Created OS            03 (3) 'Unix'\n-2CD2 Extract Zip Spec      0A (10) '1.0'\n-2CD3 Extract OS            00 (0) 'MS-DOS'\n-2CD4 General Purpose Flag  0800 (2048)\n+2CDB CENTRAL HEADER #3     02014B50 (33639248)\n+2CDF Created Zip Spec      14 (20) '2.0'\n+2CE0 Created OS            03 (3) 'Unix'\n+2CE1 Extract Zip Spec      0A (10) '1.0'\n+2CE2 Extract OS            00 (0) 'MS-DOS'\n+2CE3 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2CD6 Compression Method    0000 (0) 'Stored'\n-2CD8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2CDC CRC                   00000000 (0)\n-2CE0 Compressed Size       00000000 (0)\n-2CE4 Uncompressed Size     00000000 (0)\n-2CE8 Filename Length       0004 (4)\n-2CEA Extra Length          0000 (0)\n-2CEC Comment Length        0000 (0)\n-2CEE Disk Start            0000 (0)\n-2CF0 Int File Attributes   0000 (0)\n+2CE5 Compression Method    0000 (0) 'Stored'\n+2CE7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2CEB CRC                   00000000 (0)\n+2CEF Compressed Size       00000000 (0)\n+2CF3 Uncompressed Size     00000000 (0)\n+2CF7 Filename Length       0004 (4)\n+2CF9 Extra Length          0000 (0)\n+2CFB Comment Length        0000 (0)\n+2CFD Disk Start            0000 (0)\n+2CFF Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2CF2 Ext File Attributes   41ED0010 (1106051088)\n+2D01 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2CF6 Local Header Offset   0000009B (155)\n-2CFA Filename              'XXXX'\n+2D05 Local Header Offset   0000009B (155)\n+2D09 Filename              'XXXX'\n #\n-# WARNING: Offset 0x2CFA: Filename 'XXXX'\n+# WARNING: Offset 0x2D09: Filename 'XXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2CFA: Directory 'XXXX' must end in a '/'\n+# ERROR: Offset 0x2D09: Directory 'XXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2CD2: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n+# WARNING: Offset 0x2CE1: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXX'\n #\n \n-2CFE CENTRAL HEADER #4     02014B50 (33639248)\n-2D02 Created Zip Spec      14 (20) '2.0'\n-2D03 Created OS            03 (3) 'Unix'\n-2D04 Extract Zip Spec      0A (10) '1.0'\n-2D05 Extract OS            00 (0) 'MS-DOS'\n-2D06 General Purpose Flag  0800 (2048)\n+2D0D CENTRAL HEADER #4     02014B50 (33639248)\n+2D11 Created Zip Spec      14 (20) '2.0'\n+2D12 Created OS            03 (3) 'Unix'\n+2D13 Extract Zip Spec      0A (10) '1.0'\n+2D14 Extract OS            00 (0) 'MS-DOS'\n+2D15 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2D08 Compression Method    0000 (0) 'Stored'\n-2D0A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2D0E CRC                   00000000 (0)\n-2D12 Compressed Size       00000000 (0)\n-2D16 Uncompressed Size     00000000 (0)\n-2D1A Filename Length       000B (11)\n-2D1C Extra Length          0000 (0)\n-2D1E Comment Length        0000 (0)\n-2D20 Disk Start            0000 (0)\n-2D22 Int File Attributes   0000 (0)\n+2D17 Compression Method    0000 (0) 'Stored'\n+2D19 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2D1D CRC                   00000000 (0)\n+2D21 Compressed Size       00000000 (0)\n+2D25 Uncompressed Size     00000000 (0)\n+2D29 Filename Length       000B (11)\n+2D2B Extra Length          0000 (0)\n+2D2D Comment Length        0000 (0)\n+2D2F Disk Start            0000 (0)\n+2D31 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2D24 Ext File Attributes   41ED0010 (1106051088)\n+2D33 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2D28 Local Header Offset   000000BD (189)\n-2D2C Filename              'XXXXXXXXXXX'\n+2D37 Local Header Offset   000000BD (189)\n+2D3B Filename              'XXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2D2C: Filename 'XXXXXXXXXXX'\n+# WARNING: Offset 0x2D3B: Filename 'XXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2D2C: Directory 'XXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2D3B: Directory 'XXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2D04: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n+# WARNING: Offset 0x2D13: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXX'\n #\n \n-2D37 CENTRAL HEADER #5     02014B50 (33639248)\n-2D3B Created Zip Spec      14 (20) '2.0'\n-2D3C Created OS            03 (3) 'Unix'\n-2D3D Extract Zip Spec      0A (10) '1.0'\n-2D3E Extract OS            00 (0) 'MS-DOS'\n-2D3F General Purpose Flag  0800 (2048)\n+2D46 CENTRAL HEADER #5     02014B50 (33639248)\n+2D4A Created Zip Spec      14 (20) '2.0'\n+2D4B Created OS            03 (3) 'Unix'\n+2D4C Extract Zip Spec      0A (10) '1.0'\n+2D4D Extract OS            00 (0) 'MS-DOS'\n+2D4E General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2D41 Compression Method    0000 (0) 'Stored'\n-2D43 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2D47 CRC                   00000000 (0)\n-2D4B Compressed Size       00000000 (0)\n-2D4F Uncompressed Size     00000000 (0)\n-2D53 Filename Length       0011 (17)\n-2D55 Extra Length          0000 (0)\n-2D57 Comment Length        0000 (0)\n-2D59 Disk Start            0000 (0)\n-2D5B Int File Attributes   0000 (0)\n+2D50 Compression Method    0000 (0) 'Stored'\n+2D52 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2D56 CRC                   00000000 (0)\n+2D5A Compressed Size       00000000 (0)\n+2D5E Uncompressed Size     00000000 (0)\n+2D62 Filename Length       0011 (17)\n+2D64 Extra Length          0000 (0)\n+2D66 Comment Length        0000 (0)\n+2D68 Disk Start            0000 (0)\n+2D6A Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2D5D Ext File Attributes   41ED0010 (1106051088)\n+2D6C Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2D61 Local Header Offset   000000E6 (230)\n-2D65 Filename              'XXXXXXXXXXXXXXXXX'\n+2D70 Local Header Offset   000000E6 (230)\n+2D74 Filename              'XXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2D65: Filename 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2D74: Filename 'XXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2D65: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2D74: Directory 'XXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2D3D: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2D4C: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXX'\n #\n \n-2D76 CENTRAL HEADER #6     02014B50 (33639248)\n-2D7A Created Zip Spec      14 (20) '2.0'\n-2D7B Created OS            03 (3) 'Unix'\n-2D7C Extract Zip Spec      0A (10) '1.0'\n-2D7D Extract OS            00 (0) 'MS-DOS'\n-2D7E General Purpose Flag  0800 (2048)\n+2D85 CENTRAL HEADER #6     02014B50 (33639248)\n+2D89 Created Zip Spec      14 (20) '2.0'\n+2D8A Created OS            03 (3) 'Unix'\n+2D8B Extract Zip Spec      0A (10) '1.0'\n+2D8C Extract OS            00 (0) 'MS-DOS'\n+2D8D General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2D80 Compression Method    0000 (0) 'Stored'\n-2D82 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2D86 CRC                   00000000 (0)\n-2D8A Compressed Size       00000000 (0)\n-2D8E Uncompressed Size     00000000 (0)\n-2D92 Filename Length       001E (30)\n-2D94 Extra Length          0000 (0)\n-2D96 Comment Length        0000 (0)\n-2D98 Disk Start            0000 (0)\n-2D9A Int File Attributes   0000 (0)\n+2D8F Compression Method    0000 (0) 'Stored'\n+2D91 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2D95 CRC                   00000000 (0)\n+2D99 Compressed Size       00000000 (0)\n+2D9D Uncompressed Size     00000000 (0)\n+2DA1 Filename Length       001E (30)\n+2DA3 Extra Length          0000 (0)\n+2DA5 Comment Length        0000 (0)\n+2DA7 Disk Start            0000 (0)\n+2DA9 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2D9C Ext File Attributes   41ED0010 (1106051088)\n+2DAB Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2DA0 Local Header Offset   00000115 (277)\n-2DA4 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2DAF Local Header Offset   00000115 (277)\n+2DB3 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2DA4: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2DB3: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2DA4: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2DB3: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2D7C: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2D8B: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-2DC2 CENTRAL HEADER #7     02014B50 (33639248)\n-2DC6 Created Zip Spec      14 (20) '2.0'\n-2DC7 Created OS            03 (3) 'Unix'\n-2DC8 Extract Zip Spec      0A (10) '1.0'\n-2DC9 Extract OS            00 (0) 'MS-DOS'\n-2DCA General Purpose Flag  0800 (2048)\n+2DD1 CENTRAL HEADER #7     02014B50 (33639248)\n+2DD5 Created Zip Spec      14 (20) '2.0'\n+2DD6 Created OS            03 (3) 'Unix'\n+2DD7 Extract Zip Spec      0A (10) '1.0'\n+2DD8 Extract OS            00 (0) 'MS-DOS'\n+2DD9 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2DCC Compression Method    0000 (0) 'Stored'\n-2DCE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2DD2 CRC                   00000000 (0)\n-2DD6 Compressed Size       00000000 (0)\n-2DDA Uncompressed Size     00000000 (0)\n-2DDE Filename Length       0026 (38)\n-2DE0 Extra Length          0000 (0)\n-2DE2 Comment Length        0000 (0)\n-2DE4 Disk Start            0000 (0)\n-2DE6 Int File Attributes   0000 (0)\n+2DDB Compression Method    0000 (0) 'Stored'\n+2DDD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2DE1 CRC                   00000000 (0)\n+2DE5 Compressed Size       00000000 (0)\n+2DE9 Uncompressed Size     00000000 (0)\n+2DED Filename Length       0026 (38)\n+2DEF Extra Length          0000 (0)\n+2DF1 Comment Length        0000 (0)\n+2DF3 Disk Start            0000 (0)\n+2DF5 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2DE8 Ext File Attributes   41ED0010 (1106051088)\n+2DF7 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2DEC Local Header Offset   00000151 (337)\n-2DF0 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2DFB Local Header Offset   00000151 (337)\n+2DFF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2DF0: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2DFF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2DF0: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2DFF: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2DC8: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2DD7: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-2E16 CENTRAL HEADER #8     02014B50 (33639248)\n-2E1A Created Zip Spec      14 (20) '2.0'\n-2E1B Created OS            03 (3) 'Unix'\n-2E1C Extract Zip Spec      0A (10) '1.0'\n-2E1D Extract OS            00 (0) 'MS-DOS'\n-2E1E General Purpose Flag  0800 (2048)\n+2E25 CENTRAL HEADER #8     02014B50 (33639248)\n+2E29 Created Zip Spec      14 (20) '2.0'\n+2E2A Created OS            03 (3) 'Unix'\n+2E2B Extract Zip Spec      0A (10) '1.0'\n+2E2C Extract OS            00 (0) 'MS-DOS'\n+2E2D General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2E20 Compression Method    0000 (0) 'Stored'\n-2E22 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2E26 CRC                   00000000 (0)\n-2E2A Compressed Size       00000000 (0)\n-2E2E Uncompressed Size     00000000 (0)\n-2E32 Filename Length       002B (43)\n-2E34 Extra Length          0000 (0)\n-2E36 Comment Length        0000 (0)\n-2E38 Disk Start            0000 (0)\n-2E3A Int File Attributes   0000 (0)\n+2E2F Compression Method    0000 (0) 'Stored'\n+2E31 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2E35 CRC                   00000000 (0)\n+2E39 Compressed Size       00000000 (0)\n+2E3D Uncompressed Size     00000000 (0)\n+2E41 Filename Length       002B (43)\n+2E43 Extra Length          0000 (0)\n+2E45 Comment Length        0000 (0)\n+2E47 Disk Start            0000 (0)\n+2E49 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2E3C Ext File Attributes   41ED0010 (1106051088)\n+2E4B Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2E40 Local Header Offset   00000195 (405)\n-2E44 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2E4F Local Header Offset   00000195 (405)\n+2E53 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2E44: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E53: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2E44: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2E53: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2E1C: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E2B: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-2E6F CENTRAL HEADER #9     02014B50 (33639248)\n-2E73 Created Zip Spec      14 (20) '2.0'\n-2E74 Created OS            03 (3) 'Unix'\n-2E75 Extract Zip Spec      0A (10) '1.0'\n-2E76 Extract OS            00 (0) 'MS-DOS'\n-2E77 General Purpose Flag  0800 (2048)\n+2E7E CENTRAL HEADER #9     02014B50 (33639248)\n+2E82 Created Zip Spec      14 (20) '2.0'\n+2E83 Created OS            03 (3) 'Unix'\n+2E84 Extract Zip Spec      0A (10) '1.0'\n+2E85 Extract OS            00 (0) 'MS-DOS'\n+2E86 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2E79 Compression Method    0000 (0) 'Stored'\n-2E7B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2E7F CRC                   00000000 (0)\n-2E83 Compressed Size       00000000 (0)\n-2E87 Uncompressed Size     00000000 (0)\n-2E8B Filename Length       000F (15)\n-2E8D Extra Length          0000 (0)\n-2E8F Comment Length        0000 (0)\n-2E91 Disk Start            0000 (0)\n-2E93 Int File Attributes   0000 (0)\n+2E88 Compression Method    0000 (0) 'Stored'\n+2E8A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2E8E CRC                   00000000 (0)\n+2E92 Compressed Size       00000000 (0)\n+2E96 Uncompressed Size     00000000 (0)\n+2E9A Filename Length       000F (15)\n+2E9C Extra Length          0000 (0)\n+2E9E Comment Length        0000 (0)\n+2EA0 Disk Start            0000 (0)\n+2EA2 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2E95 Ext File Attributes   41ED0010 (1106051088)\n+2EA4 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2E99 Local Header Offset   000001DE (478)\n-2E9D Filename              'XXXXXXXXXXXXXXX'\n+2EA8 Local Header Offset   000001DE (478)\n+2EAC Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2E9D: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2EAC: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2E9D: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2EAC: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2E75: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2E84: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-2EAC CENTRAL HEADER #10    02014B50 (33639248)\n-2EB0 Created Zip Spec      14 (20) '2.0'\n-2EB1 Created OS            03 (3) 'Unix'\n-2EB2 Extract Zip Spec      0A (10) '1.0'\n-2EB3 Extract OS            00 (0) 'MS-DOS'\n-2EB4 General Purpose Flag  0800 (2048)\n+2EBB CENTRAL HEADER #10    02014B50 (33639248)\n+2EBF Created Zip Spec      14 (20) '2.0'\n+2EC0 Created OS            03 (3) 'Unix'\n+2EC1 Extract Zip Spec      0A (10) '1.0'\n+2EC2 Extract OS            00 (0) 'MS-DOS'\n+2EC3 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2EB6 Compression Method    0000 (0) 'Stored'\n-2EB8 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2EBC CRC                   00000000 (0)\n-2EC0 Compressed Size       00000000 (0)\n-2EC4 Uncompressed Size     00000000 (0)\n-2EC8 Filename Length       0018 (24)\n-2ECA Extra Length          0000 (0)\n-2ECC Comment Length        0000 (0)\n-2ECE Disk Start            0000 (0)\n-2ED0 Int File Attributes   0000 (0)\n+2EC5 Compression Method    0000 (0) 'Stored'\n+2EC7 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2ECB CRC                   00000000 (0)\n+2ECF Compressed Size       00000000 (0)\n+2ED3 Uncompressed Size     00000000 (0)\n+2ED7 Filename Length       0018 (24)\n+2ED9 Extra Length          0000 (0)\n+2EDB Comment Length        0000 (0)\n+2EDD Disk Start            0000 (0)\n+2EDF Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2ED2 Ext File Attributes   41ED0010 (1106051088)\n+2EE1 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2ED6 Local Header Offset   0000020B (523)\n-2EDA Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n+2EE5 Local Header Offset   0000020B (523)\n+2EE9 Filename              'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2EDA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2EE9: Filename 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2EDA: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2EE9: Directory 'XXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2EB2: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2EC1: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-2EF2 CENTRAL HEADER #11    02014B50 (33639248)\n-2EF6 Created Zip Spec      14 (20) '2.0'\n-2EF7 Created OS            03 (3) 'Unix'\n-2EF8 Extract Zip Spec      0A (10) '1.0'\n-2EF9 Extract OS            00 (0) 'MS-DOS'\n-2EFA General Purpose Flag  0800 (2048)\n+2F01 CENTRAL HEADER #11    02014B50 (33639248)\n+2F05 Created Zip Spec      14 (20) '2.0'\n+2F06 Created OS            03 (3) 'Unix'\n+2F07 Extract Zip Spec      0A (10) '1.0'\n+2F08 Extract OS            00 (0) 'MS-DOS'\n+2F09 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2EFC Compression Method    0000 (0) 'Stored'\n-2EFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2F02 CRC                   00000000 (0)\n-2F06 Compressed Size       00000000 (0)\n-2F0A Uncompressed Size     00000000 (0)\n-2F0E Filename Length       000F (15)\n-2F10 Extra Length          0000 (0)\n-2F12 Comment Length        0000 (0)\n-2F14 Disk Start            0000 (0)\n-2F16 Int File Attributes   0000 (0)\n+2F0B Compression Method    0000 (0) 'Stored'\n+2F0D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2F11 CRC                   00000000 (0)\n+2F15 Compressed Size       00000000 (0)\n+2F19 Uncompressed Size     00000000 (0)\n+2F1D Filename Length       000F (15)\n+2F1F Extra Length          0000 (0)\n+2F21 Comment Length        0000 (0)\n+2F23 Disk Start            0000 (0)\n+2F25 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2F18 Ext File Attributes   41ED0010 (1106051088)\n+2F27 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2F1C Local Header Offset   00000241 (577)\n-2F20 Filename              'XXXXXXXXXXXXXXX'\n+2F2B Local Header Offset   00000241 (577)\n+2F2F Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2F20: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F2F: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2F20: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2F2F: Directory 'XXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2EF8: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F07: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXX'\n #\n \n-2F2F CENTRAL HEADER #12    02014B50 (33639248)\n-2F33 Created Zip Spec      14 (20) '2.0'\n-2F34 Created OS            03 (3) 'Unix'\n-2F35 Extract Zip Spec      0A (10) '1.0'\n-2F36 Extract OS            00 (0) 'MS-DOS'\n-2F37 General Purpose Flag  0800 (2048)\n+2F3E CENTRAL HEADER #12    02014B50 (33639248)\n+2F42 Created Zip Spec      14 (20) '2.0'\n+2F43 Created OS            03 (3) 'Unix'\n+2F44 Extract Zip Spec      0A (10) '1.0'\n+2F45 Extract OS            00 (0) 'MS-DOS'\n+2F46 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2F39 Compression Method    0000 (0) 'Stored'\n-2F3B Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2F3F CRC                   00000000 (0)\n-2F43 Compressed Size       00000000 (0)\n-2F47 Uncompressed Size     00000000 (0)\n-2F4B Filename Length       0020 (32)\n-2F4D Extra Length          0000 (0)\n-2F4F Comment Length        0000 (0)\n-2F51 Disk Start            0000 (0)\n-2F53 Int File Attributes   0000 (0)\n+2F48 Compression Method    0000 (0) 'Stored'\n+2F4A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2F4E CRC                   00000000 (0)\n+2F52 Compressed Size       00000000 (0)\n+2F56 Uncompressed Size     00000000 (0)\n+2F5A Filename Length       0020 (32)\n+2F5C Extra Length          0000 (0)\n+2F5E Comment Length        0000 (0)\n+2F60 Disk Start            0000 (0)\n+2F62 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2F55 Ext File Attributes   41ED0010 (1106051088)\n+2F64 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2F59 Local Header Offset   0000026E (622)\n-2F5D Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2F68 Local Header Offset   0000026E (622)\n+2F6C Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2F5D: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F6C: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2F5D: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2F6C: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2F35: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F44: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-2F7D CENTRAL HEADER #13    02014B50 (33639248)\n-2F81 Created Zip Spec      14 (20) '2.0'\n-2F82 Created OS            03 (3) 'Unix'\n-2F83 Extract Zip Spec      0A (10) '1.0'\n-2F84 Extract OS            00 (0) 'MS-DOS'\n-2F85 General Purpose Flag  0800 (2048)\n+2F8C CENTRAL HEADER #13    02014B50 (33639248)\n+2F90 Created Zip Spec      14 (20) '2.0'\n+2F91 Created OS            03 (3) 'Unix'\n+2F92 Extract Zip Spec      0A (10) '1.0'\n+2F93 Extract OS            00 (0) 'MS-DOS'\n+2F94 General Purpose Flag  0800 (2048)\n      [Bit 11]              1 'Language Encoding'\n-2F87 Compression Method    0000 (0) 'Stored'\n-2F89 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2F8D CRC                   00000000 (0)\n-2F91 Compressed Size       00000000 (0)\n-2F95 Uncompressed Size     00000000 (0)\n-2F99 Filename Length       0038 (56)\n-2F9B Extra Length          0000 (0)\n-2F9D Comment Length        0000 (0)\n-2F9F Disk Start            0000 (0)\n-2FA1 Int File Attributes   0000 (0)\n+2F96 Compression Method    0000 (0) 'Stored'\n+2F98 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+2F9C CRC                   00000000 (0)\n+2FA0 Compressed Size       00000000 (0)\n+2FA4 Uncompressed Size     00000000 (0)\n+2FA8 Filename Length       0038 (56)\n+2FAA Extra Length          0000 (0)\n+2FAC Comment Length        0000 (0)\n+2FAE Disk Start            0000 (0)\n+2FB0 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-2FA3 Ext File Attributes   41ED0010 (1106051088)\n+2FB2 Ext File Attributes   41ED0010 (1106051088)\n      [Bit 4]               Directory\n      [Bits 16-24]          01ED (493) 'Unix attrib: rwxr-xr-x'\n      [Bits 28-31]          04 (4) 'Directory'\n-2FA7 Local Header Offset   000002AC (684)\n-2FAB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+2FB6 Local Header Offset   000002AC (684)\n+2FBA Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x2FAB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2FBA: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n-# ERROR: Offset 0x2FAB: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n+# ERROR: Offset 0x2FBA: Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' must end in a '/'\n #        'External Attributes' flag this as a directory\n #\n-# WARNING: Offset 0x2F83: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x2F92: 'Extract Zip Spec' is '1.0'. Need value >= '2.0' for Directory 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n \n-2FE3 CENTRAL HEADER #14    02014B50 (33639248)\n-2FE7 Created Zip Spec      14 (20) '2.0'\n-2FE8 Created OS            03 (3) 'Unix'\n-2FE9 Extract Zip Spec      14 (20) '2.0'\n-2FEA Extract OS            00 (0) 'MS-DOS'\n-2FEB General Purpose Flag  0800 (2048)\n+2FF2 CENTRAL HEADER #14    02014B50 (33639248)\n+2FF6 Created Zip Spec      14 (20) '2.0'\n+2FF7 Created OS            03 (3) 'Unix'\n+2FF8 Extract Zip Spec      14 (20) '2.0'\n+2FF9 Extract OS            00 (0) 'MS-DOS'\n+2FFA General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-2FED Compression Method    0008 (8) 'Deflated'\n-2FEF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-2FF3 CRC                   2967E200 (694673920)\n-2FF7 Compressed Size       000007C0 (1984)\n-2FFB Uncompressed Size     0000286F (10351)\n-2FFF Filename Length       0015 (21)\n-3001 Extra Length          0000 (0)\n-3003 Comment Length        0000 (0)\n-3005 Disk Start            0000 (0)\n-3007 Int File Attributes   0000 (0)\n+2FFC Compression Method    0008 (8) 'Deflated'\n+2FFE Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3002 CRC                   2967E200 (694673920)\n+3006 Compressed Size       000007C0 (1984)\n+300A Uncompressed Size     0000286F (10351)\n+300E Filename Length       0015 (21)\n+3010 Extra Length          0000 (0)\n+3012 Comment Length        0000 (0)\n+3014 Disk Start            0000 (0)\n+3016 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3009 Ext File Attributes   81A40000 (2175008768)\n+3018 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-300D Local Header Offset   00000302 (770)\n-3011 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n+301C Local Header Offset   00000302 (770)\n+3020 Filename              'XXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3011: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3020: Filename 'XXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3026 CENTRAL HEADER #15    02014B50 (33639248)\n-302A Created Zip Spec      14 (20) '2.0'\n-302B Created OS            03 (3) 'Unix'\n-302C Extract Zip Spec      14 (20) '2.0'\n-302D Extract OS            00 (0) 'MS-DOS'\n-302E General Purpose Flag  0800 (2048)\n+3035 CENTRAL HEADER #15    02014B50 (33639248)\n+3039 Created Zip Spec      14 (20) '2.0'\n+303A Created OS            03 (3) 'Unix'\n+303B Extract Zip Spec      14 (20) '2.0'\n+303C Extract OS            00 (0) 'MS-DOS'\n+303D General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3030 Compression Method    0008 (8) 'Deflated'\n-3032 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3036 CRC                   86E2B4B4 (2263004340)\n-303A Compressed Size       00000F6D (3949)\n-303E Uncompressed Size     00002C5E (11358)\n-3042 Filename Length       0010 (16)\n-3044 Extra Length          0000 (0)\n-3046 Comment Length        0000 (0)\n-3048 Disk Start            0000 (0)\n-304A Int File Attributes   0000 (0)\n+303F Compression Method    0008 (8) 'Deflated'\n+3041 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3045 CRC                   86E2B4B4 (2263004340)\n+3049 Compressed Size       00000F6D (3949)\n+304D Uncompressed Size     00002C5E (11358)\n+3051 Filename Length       0010 (16)\n+3053 Extra Length          0000 (0)\n+3055 Comment Length        0000 (0)\n+3057 Disk Start            0000 (0)\n+3059 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-304C Ext File Attributes   81A40000 (2175008768)\n+305B Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3050 Local Header Offset   00000AF5 (2805)\n-3054 Filename              'XXXXXXXXXXXXXXXX'\n+305F Local Header Offset   00000AF5 (2805)\n+3063 Filename              'XXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3054: Filename 'XXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3063: Filename 'XXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3064 CENTRAL HEADER #16    02014B50 (33639248)\n-3068 Created Zip Spec      14 (20) '2.0'\n-3069 Created OS            03 (3) 'Unix'\n-306A Extract Zip Spec      14 (20) '2.0'\n-306B Extract OS            00 (0) 'MS-DOS'\n-306C General Purpose Flag  0800 (2048)\n+3073 CENTRAL HEADER #16    02014B50 (33639248)\n+3077 Created Zip Spec      14 (20) '2.0'\n+3078 Created OS            03 (3) 'Unix'\n+3079 Extract Zip Spec      14 (20) '2.0'\n+307A Extract OS            00 (0) 'MS-DOS'\n+307B General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-306E Compression Method    0008 (8) 'Deflated'\n-3070 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3074 CRC                   2CF5AE84 (754298500)\n-3078 Compressed Size       00000082 (130)\n-307C Uncompressed Size     000000B4 (180)\n-3080 Filename Length       000F (15)\n-3082 Extra Length          0000 (0)\n-3084 Comment Length        0000 (0)\n-3086 Disk Start            0000 (0)\n-3088 Int File Attributes   0000 (0)\n+307D Compression Method    0008 (8) 'Deflated'\n+307F Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3083 CRC                   2CF5AE84 (754298500)\n+3087 Compressed Size       00000082 (130)\n+308B Uncompressed Size     000000B4 (180)\n+308F Filename Length       000F (15)\n+3091 Extra Length          0000 (0)\n+3093 Comment Length        0000 (0)\n+3095 Disk Start            0000 (0)\n+3097 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-308A Ext File Attributes   81A40000 (2175008768)\n+3099 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-308E Local Header Offset   00001A90 (6800)\n-3092 Filename              'XXXXXXXXXXXXXXX'\n+309D Local Header Offset   00001A90 (6800)\n+30A1 Filename              'XXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3092: Filename 'XXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x30A1: Filename 'XXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-30A1 CENTRAL HEADER #17    02014B50 (33639248)\n-30A5 Created Zip Spec      14 (20) '2.0'\n-30A6 Created OS            03 (3) 'Unix'\n-30A7 Extract Zip Spec      14 (20) '2.0'\n-30A8 Extract OS            00 (0) 'MS-DOS'\n-30A9 General Purpose Flag  0800 (2048)\n+30B0 CENTRAL HEADER #17    02014B50 (33639248)\n+30B4 Created Zip Spec      14 (20) '2.0'\n+30B5 Created OS            03 (3) 'Unix'\n+30B6 Extract Zip Spec      14 (20) '2.0'\n+30B7 Extract OS            00 (0) 'MS-DOS'\n+30B8 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-30AB Compression Method    0008 (8) 'Deflated'\n-30AD Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-30B1 CRC                   F0553B98 (4032117656)\n-30B5 Compressed Size       000007FC (2044)\n-30B9 Uncompressed Size     00001B8F (7055)\n-30BD Filename Length       0048 (72)\n-30BF Extra Length          0000 (0)\n-30C1 Comment Length        0000 (0)\n-30C3 Disk Start            0000 (0)\n-30C5 Int File Attributes   0000 (0)\n+30BA Compression Method    0008 (8) 'Deflated'\n+30BC Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+30C0 CRC                   B44A5E3E (3024772670)\n+30C4 Compressed Size       00000809 (2057)\n+30C8 Uncompressed Size     00001C54 (7252)\n+30CC Filename Length       0048 (72)\n+30CE Extra Length          0000 (0)\n+30D0 Comment Length        0000 (0)\n+30D2 Disk Start            0000 (0)\n+30D4 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-30C7 Ext File Attributes   81A40000 (2175008768)\n+30D6 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-30CB Local Header Offset   00001B3F (6975)\n-30CF Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+30DA Local Header Offset   00001B3F (6975)\n+30DE Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x30CF: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x30DE: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3117 CENTRAL HEADER #18    02014B50 (33639248)\n-311B Created Zip Spec      14 (20) '2.0'\n-311C Created OS            03 (3) 'Unix'\n-311D Extract Zip Spec      14 (20) '2.0'\n-311E Extract OS            00 (0) 'MS-DOS'\n-311F General Purpose Flag  0800 (2048)\n+3126 CENTRAL HEADER #18    02014B50 (33639248)\n+312A Created Zip Spec      14 (20) '2.0'\n+312B Created OS            03 (3) 'Unix'\n+312C Extract Zip Spec      14 (20) '2.0'\n+312D Extract OS            00 (0) 'MS-DOS'\n+312E General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3121 Compression Method    0008 (8) 'Deflated'\n-3123 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3127 CRC                   D59518E0 (3583318240)\n-312B Compressed Size       00000285 (645)\n-312F Uncompressed Size     0000055D (1373)\n-3133 Filename Length       004F (79)\n-3135 Extra Length          0000 (0)\n-3137 Comment Length        0000 (0)\n-3139 Disk Start            0000 (0)\n-313B Int File Attributes   0000 (0)\n+3130 Compression Method    0008 (8) 'Deflated'\n+3132 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3136 CRC                   2C654259 (744833625)\n+313A Compressed Size       0000028C (652)\n+313E Uncompressed Size     0000057E (1406)\n+3142 Filename Length       004F (79)\n+3144 Extra Length          0000 (0)\n+3146 Comment Length        0000 (0)\n+3148 Disk Start            0000 (0)\n+314A Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-313D Ext File Attributes   81A40000 (2175008768)\n+314C Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-3141 Local Header Offset   000023A1 (9121)\n-3145 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+3150 Local Header Offset   000023AE (9134)\n+3154 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x3145: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x3154: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3194 CENTRAL HEADER #19    02014B50 (33639248)\n-3198 Created Zip Spec      14 (20) '2.0'\n-3199 Created OS            03 (3) 'Unix'\n-319A Extract Zip Spec      14 (20) '2.0'\n-319B Extract OS            00 (0) 'MS-DOS'\n-319C General Purpose Flag  0800 (2048)\n+31A3 CENTRAL HEADER #19    02014B50 (33639248)\n+31A7 Created Zip Spec      14 (20) '2.0'\n+31A8 Created OS            03 (3) 'Unix'\n+31A9 Extract Zip Spec      14 (20) '2.0'\n+31AA Extract OS            00 (0) 'MS-DOS'\n+31AB General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-319E Compression Method    0008 (8) 'Deflated'\n-31A0 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-31A4 CRC                   26FDC05F (654164063)\n-31A8 Compressed Size       00000046 (70)\n-31AC Uncompressed Size     0000004F (79)\n-31B0 Filename Length       005F (95)\n-31B2 Extra Length          0000 (0)\n-31B4 Comment Length        0000 (0)\n-31B6 Disk Start            0000 (0)\n-31B8 Int File Attributes   0000 (0)\n+31AD Compression Method    0008 (8) 'Deflated'\n+31AF Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+31B3 CRC                   26FDC05F (654164063)\n+31B7 Compressed Size       00000046 (70)\n+31BB Uncompressed Size     0000004F (79)\n+31BF Filename Length       005F (95)\n+31C1 Extra Length          0000 (0)\n+31C3 Comment Length        0000 (0)\n+31C5 Disk Start            0000 (0)\n+31C7 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-31BA Ext File Attributes   81A40000 (2175008768)\n+31C9 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-31BE Local Header Offset   00002693 (9875)\n-31C2 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+31CD Local Header Offset   000026A7 (9895)\n+31D1 Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x31C2: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x31D1: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3221 CENTRAL HEADER #20    02014B50 (33639248)\n-3225 Created Zip Spec      14 (20) '2.0'\n-3226 Created OS            03 (3) 'Unix'\n-3227 Extract Zip Spec      14 (20) '2.0'\n-3228 Extract OS            00 (0) 'MS-DOS'\n-3229 General Purpose Flag  0800 (2048)\n+3230 CENTRAL HEADER #20    02014B50 (33639248)\n+3234 Created Zip Spec      14 (20) '2.0'\n+3235 Created OS            03 (3) 'Unix'\n+3236 Extract Zip Spec      14 (20) '2.0'\n+3237 Extract OS            00 (0) 'MS-DOS'\n+3238 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-322B Compression Method    0008 (8) 'Deflated'\n-322D Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-3231 CRC                   FB57BB2D (4216830765)\n-3235 Compressed Size       000003F2 (1010)\n-3239 Uncompressed Size     00000AD3 (2771)\n-323D Filename Length       003F (63)\n-323F Extra Length          0000 (0)\n-3241 Comment Length        0000 (0)\n-3243 Disk Start            0000 (0)\n-3245 Int File Attributes   0000 (0)\n+323A Compression Method    0008 (8) 'Deflated'\n+323C Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+3240 CRC                   4486615B (1149657435)\n+3244 Compressed Size       000003ED (1005)\n+3248 Uncompressed Size     00000A8A (2698)\n+324C Filename Length       003F (63)\n+324E Extra Length          0000 (0)\n+3250 Comment Length        0000 (0)\n+3252 Disk Start            0000 (0)\n+3254 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-3247 Ext File Attributes   81A40000 (2175008768)\n+3256 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-324B Local Header Offset   00002756 (10070)\n-324F Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+325A Local Header Offset   0000276A (10090)\n+325E Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x324F: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x325E: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-328E CENTRAL HEADER #21    02014B50 (33639248)\n-3292 Created Zip Spec      14 (20) '2.0'\n-3293 Created OS            03 (3) 'Unix'\n-3294 Extract Zip Spec      14 (20) '2.0'\n-3295 Extract OS            00 (0) 'MS-DOS'\n-3296 General Purpose Flag  0800 (2048)\n+329D CENTRAL HEADER #21    02014B50 (33639248)\n+32A1 Created Zip Spec      14 (20) '2.0'\n+32A2 Created OS            03 (3) 'Unix'\n+32A3 Extract Zip Spec      14 (20) '2.0'\n+32A4 Extract OS            00 (0) 'MS-DOS'\n+32A5 General Purpose Flag  0800 (2048)\n      [Bits 1-2]            0 'Normal Compression'\n      [Bit 11]              1 'Language Encoding'\n-3298 Compression Method    0008 (8) 'Deflated'\n-329A Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n-329E CRC                   1E03A4CD (503555277)\n-32A2 Compressed Size       0000004A (74)\n-32A6 Uncompressed Size     0000004E (78)\n-32AA Filename Length       0046 (70)\n-32AC Extra Length          0000 (0)\n-32AE Comment Length        0000 (0)\n-32B0 Disk Start            0000 (0)\n-32B2 Int File Attributes   0000 (0)\n+32A7 Compression Method    0008 (8) 'Deflated'\n+32A9 Modification Time     50814080 (1350647936) 'Wed Apr  1 08:04:00 2020'\n+32AD CRC                   1E03A4CD (503555277)\n+32B1 Compressed Size       0000004A (74)\n+32B5 Uncompressed Size     0000004E (78)\n+32B9 Filename Length       0046 (70)\n+32BB Extra Length          0000 (0)\n+32BD Comment Length        0000 (0)\n+32BF Disk Start            0000 (0)\n+32C1 Int File Attributes   0000 (0)\n      [Bit 0]               0 'Binary Data'\n-32B4 Ext File Attributes   81A40000 (2175008768)\n+32C3 Ext File Attributes   81A40000 (2175008768)\n      [Bits 16-24]          01A4 (420) 'Unix attrib: rw-r--r--'\n      [Bits 28-31]          08 (8) 'Regular File'\n-32B8 Local Header Offset   00002BA5 (11173)\n-32BC Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+32C7 Local Header Offset   00002BB4 (11188)\n+32CB Filename              'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #\n-# WARNING: Offset 0x32BC: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n+# WARNING: Offset 0x32CB: Filename 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'\n #          Zero length filename\n #\n \n-3302 END CENTRAL HEADER    06054B50 (101010256)\n-3306 Number of this disk   0000 (0)\n-3308 Central Dir Disk no   0000 (0)\n-330A Entries in this disk  0015 (21)\n-330C Total Entries         0015 (21)\n-330E Size of Central Dir   000006AF (1711)\n-3312 Offset to Central Dir 00002C53 (11347)\n-3316 Comment Length        0000 (0)\n+3311 END CENTRAL HEADER    06054B50 (101010256)\n+3315 Number of this disk   0000 (0)\n+3317 Central Dir Disk no   0000 (0)\n+3319 Entries in this disk  0015 (21)\n+331B Total Entries         0015 (21)\n+331D Size of Central Dir   000006AF (1711)\n+3321 Offset to Central Dir 00002C62 (11362)\n+3325 Comment Length        0000 (0)\n #\n # Error Count: 12\n # Warning Count: 54\n #\n # Done\n"}, {"source1": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java", "source2": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfiguration.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,197 +1,197 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.support.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\n-import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\n-import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-import org.apache.dubbo.common.utils.StringUtils;\n-import org.apache.dubbo.remoting.etcd.StateListener;\n-import org.apache.dubbo.remoting.etcd.jetcd.JEtcdClient;\n-\n-import com.google.protobuf.ByteString;\n-import io.etcd.jetcd.api.Event;\n-import io.etcd.jetcd.api.WatchCancelRequest;\n-import io.etcd.jetcd.api.WatchCreateRequest;\n-import io.etcd.jetcd.api.WatchGrpc;\n-import io.etcd.jetcd.api.WatchRequest;\n-import io.etcd.jetcd.api.WatchResponse;\n-import io.grpc.ManagedChannel;\n-import io.grpc.stub.StreamObserver;\n-\n-import java.util.concurrent.ConcurrentHashMap;\n-import java.util.concurrent.ConcurrentMap;\n-\n-import static java.nio.charset.StandardCharsets.UTF_8;\n-import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\n-import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\n-\n-/**\n- * The etcd implementation of {@link DynamicConfiguration}\n- */\n-public class EtcdDynamicConfiguration implements DynamicConfiguration {\n-\n-    /**\n-     * The final root path would be: /$NAME_SPACE/config\n-     */\n-    private String rootPath;\n-\n-    /**\n-     * The etcd client\n-     */\n-    private final JEtcdClient etcdClient;\n-\n-    /**\n-     * The map store the key to {@link EtcdConfigWatcher} mapping\n-     */\n-    private final ConcurrentMap<ConfigurationListener, EtcdConfigWatcher> watchListenerMap;\n-\n-    EtcdDynamicConfiguration(URL url) {\n-        rootPath = PATH_SEPARATOR + url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP) + \"/config\";\n-        etcdClient = new JEtcdClient(url);\n-        etcdClient.addStateListener(state -> {\n-            if (state == StateListener.CONNECTED) {\n-                try {\n-                    recover();\n-                } catch (Exception e) {\n-                    // ignore\n-                }\n-            }\n-        });\n-        watchListenerMap = new ConcurrentHashMap<>();\n-    }\n-\n-    @Override\n-    public void addListener(String key, String group, ConfigurationListener listener) {\n-        if (watchListenerMap.get(listener) == null) {\n-            EtcdConfigWatcher watcher = new EtcdConfigWatcher(key, group, listener);\n-            watchListenerMap.put(listener, watcher);\n-            watcher.watch();\n-        }\n-    }\n-\n-    @Override\n-    public void removeListener(String key, String group, ConfigurationListener listener) {\n-        EtcdConfigWatcher watcher = watchListenerMap.get(listener);\n-        watcher.cancelWatch();\n-    }\n-\n-    @Override\n-    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\n-        return (String) getInternalProperty(convertKey(group, key));\n-    }\n-\n-//    @Override\n-//    public String getConfigs(String key, String group, long timeout) throws IllegalStateException {\n-//        if (StringUtils.isEmpty(group)) {\n-//            group = DEFAULT_GROUP;\n-//        }\n-//        return (String) getInternalProperty(convertKey(group, key));\n-//    }\n-\n-    @Override\n-    public Object getInternalProperty(String key) {\n-        return etcdClient.getKVValue(key);\n-    }\n-\n-    private String buildPath(String group) {\n-        String actualGroup = StringUtils.isEmpty(group) ? DEFAULT_GROUP : group;\n-        return rootPath + PATH_SEPARATOR + actualGroup;\n-    }\n-\n-    private String convertKey(String group, String key) {\n-        return buildPath(group) + PATH_SEPARATOR + key;\n-    }\n-\n-    private void recover() {\n-        for (EtcdConfigWatcher watcher : watchListenerMap.values()) {\n-            watcher.watch();\n-        }\n-    }\n-\n-    public class EtcdConfigWatcher implements StreamObserver<WatchResponse> {\n-\n-        private ConfigurationListener listener;\n-        protected WatchGrpc.WatchStub watchStub;\n-        private StreamObserver<WatchRequest> observer;\n-        protected long watchId;\n-        private ManagedChannel channel;\n-\n-        private final String key;\n-\n-        private final String group;\n-\n-        private String normalizedKey;\n-\n-        public EtcdConfigWatcher(String key, String group, ConfigurationListener listener) {\n-            this.key = key;\n-            this.group = group;\n-            this.normalizedKey = convertKey(group, key);\n-            this.listener = listener;\n-            this.channel = etcdClient.getChannel();\n-        }\n-\n-        @Override\n-        public void onNext(WatchResponse watchResponse) {\n-            this.watchId = watchResponse.getWatchId();\n-            for (Event etcdEvent : watchResponse.getEventsList()) {\n-                ConfigChangeType type = ConfigChangeType.MODIFIED;\n-                if (etcdEvent.getType() == Event.EventType.DELETE) {\n-                    type = ConfigChangeType.DELETED;\n-                }\n-                ConfigChangedEvent event = new ConfigChangedEvent(key, group,\n-                        etcdEvent.getKv().getValue().toString(UTF_8), type);\n-                listener.process(event);\n-            }\n-        }\n-\n-        @Override\n-        public void onError(Throwable throwable) {\n-            // ignore\n-        }\n-\n-        @Override\n-        public void onCompleted() {\n-            // ignore\n-        }\n-\n-        public long getWatchId() {\n-            return watchId;\n-        }\n-\n-        private void watch() {\n-            watchStub = WatchGrpc.newStub(channel);\n-            observer = watchStub.watch(this);\n-            WatchCreateRequest.Builder builder = WatchCreateRequest.newBuilder()\n-                    .setKey(ByteString.copyFromUtf8(normalizedKey))\n-                    .setProgressNotify(true);\n-            WatchRequest req = WatchRequest.newBuilder().setCreateRequest(builder).build();\n-            observer.onNext(req);\n-        }\n-\n-        private void cancelWatch() {\n-            WatchCancelRequest watchCancelRequest =\n-                    WatchCancelRequest.newBuilder().setWatchId(watchId).build();\n-            WatchRequest cancelRequest = WatchRequest.newBuilder()\n-                    .setCancelRequest(watchCancelRequest).build();\n-            observer.onNext(cancelRequest);\n-        }\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.support.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangeType;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent;\r\n+import org.apache.dubbo.common.config.configcenter.ConfigurationListener;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+import org.apache.dubbo.common.utils.StringUtils;\r\n+import org.apache.dubbo.remoting.etcd.StateListener;\r\n+import org.apache.dubbo.remoting.etcd.jetcd.JEtcdClient;\r\n+\r\n+import com.google.protobuf.ByteString;\r\n+import io.etcd.jetcd.api.Event;\r\n+import io.etcd.jetcd.api.WatchCancelRequest;\r\n+import io.etcd.jetcd.api.WatchCreateRequest;\r\n+import io.etcd.jetcd.api.WatchGrpc;\r\n+import io.etcd.jetcd.api.WatchRequest;\r\n+import io.etcd.jetcd.api.WatchResponse;\r\n+import io.grpc.ManagedChannel;\r\n+import io.grpc.stub.StreamObserver;\r\n+\r\n+import java.util.concurrent.ConcurrentHashMap;\r\n+import java.util.concurrent.ConcurrentMap;\r\n+\r\n+import static java.nio.charset.StandardCharsets.UTF_8;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.CONFIG_NAMESPACE_KEY;\r\n+import static org.apache.dubbo.common.constants.CommonConstants.PATH_SEPARATOR;\r\n+\r\n+/**\r\n+ * The etcd implementation of {@link DynamicConfiguration}\r\n+ */\r\n+public class EtcdDynamicConfiguration implements DynamicConfiguration {\r\n+\r\n+    /**\r\n+     * The final root path would be: /$NAME_SPACE/config\r\n+     */\r\n+    private String rootPath;\r\n+\r\n+    /**\r\n+     * The etcd client\r\n+     */\r\n+    private final JEtcdClient etcdClient;\r\n+\r\n+    /**\r\n+     * The map store the key to {@link EtcdConfigWatcher} mapping\r\n+     */\r\n+    private final ConcurrentMap<ConfigurationListener, EtcdConfigWatcher> watchListenerMap;\r\n+\r\n+    EtcdDynamicConfiguration(URL url) {\r\n+        rootPath = PATH_SEPARATOR + url.getParameter(CONFIG_NAMESPACE_KEY, DEFAULT_GROUP) + \"/config\";\r\n+        etcdClient = new JEtcdClient(url);\r\n+        etcdClient.addStateListener(state -> {\r\n+            if (state == StateListener.CONNECTED) {\r\n+                try {\r\n+                    recover();\r\n+                } catch (Exception e) {\r\n+                    // ignore\r\n+                }\r\n+            }\r\n+        });\r\n+        watchListenerMap = new ConcurrentHashMap<>();\r\n+    }\r\n+\r\n+    @Override\r\n+    public void addListener(String key, String group, ConfigurationListener listener) {\r\n+        if (watchListenerMap.get(listener) == null) {\r\n+            EtcdConfigWatcher watcher = new EtcdConfigWatcher(key, group, listener);\r\n+            watchListenerMap.put(listener, watcher);\r\n+            watcher.watch();\r\n+        }\r\n+    }\r\n+\r\n+    @Override\r\n+    public void removeListener(String key, String group, ConfigurationListener listener) {\r\n+        EtcdConfigWatcher watcher = watchListenerMap.get(listener);\r\n+        watcher.cancelWatch();\r\n+    }\r\n+\r\n+    @Override\r\n+    public String getConfig(String key, String group, long timeout) throws IllegalStateException {\r\n+        return (String) getInternalProperty(convertKey(group, key));\r\n+    }\r\n+\r\n+//    @Override\r\n+//    public String getConfigs(String key, String group, long timeout) throws IllegalStateException {\r\n+//        if (StringUtils.isEmpty(group)) {\r\n+//            group = DEFAULT_GROUP;\r\n+//        }\r\n+//        return (String) getInternalProperty(convertKey(group, key));\r\n+//    }\r\n+\r\n+    @Override\r\n+    public Object getInternalProperty(String key) {\r\n+        return etcdClient.getKVValue(key);\r\n+    }\r\n+\r\n+    private String buildPath(String group) {\r\n+        String actualGroup = StringUtils.isEmpty(group) ? DEFAULT_GROUP : group;\r\n+        return rootPath + PATH_SEPARATOR + actualGroup;\r\n+    }\r\n+\r\n+    private String convertKey(String group, String key) {\r\n+        return buildPath(group) + PATH_SEPARATOR + key;\r\n+    }\r\n+\r\n+    private void recover() {\r\n+        for (EtcdConfigWatcher watcher : watchListenerMap.values()) {\r\n+            watcher.watch();\r\n+        }\r\n+    }\r\n+\r\n+    public class EtcdConfigWatcher implements StreamObserver<WatchResponse> {\r\n+\r\n+        private ConfigurationListener listener;\r\n+        protected WatchGrpc.WatchStub watchStub;\r\n+        private StreamObserver<WatchRequest> observer;\r\n+        protected long watchId;\r\n+        private ManagedChannel channel;\r\n+\r\n+        private final String key;\r\n+\r\n+        private final String group;\r\n+\r\n+        private String normalizedKey;\r\n+\r\n+        public EtcdConfigWatcher(String key, String group, ConfigurationListener listener) {\r\n+            this.key = key;\r\n+            this.group = group;\r\n+            this.normalizedKey = convertKey(group, key);\r\n+            this.listener = listener;\r\n+            this.channel = etcdClient.getChannel();\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onNext(WatchResponse watchResponse) {\r\n+            this.watchId = watchResponse.getWatchId();\r\n+            for (Event etcdEvent : watchResponse.getEventsList()) {\r\n+                ConfigChangeType type = ConfigChangeType.MODIFIED;\r\n+                if (etcdEvent.getType() == Event.EventType.DELETE) {\r\n+                    type = ConfigChangeType.DELETED;\r\n+                }\r\n+                ConfigChangedEvent event = new ConfigChangedEvent(key, group,\r\n+                        etcdEvent.getKv().getValue().toString(UTF_8), type);\r\n+                listener.process(event);\r\n+            }\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onError(Throwable throwable) {\r\n+            // ignore\r\n+        }\r\n+\r\n+        @Override\r\n+        public void onCompleted() {\r\n+            // ignore\r\n+        }\r\n+\r\n+        public long getWatchId() {\r\n+            return watchId;\r\n+        }\r\n+\r\n+        private void watch() {\r\n+            watchStub = WatchGrpc.newStub(channel);\r\n+            observer = watchStub.watch(this);\r\n+            WatchCreateRequest.Builder builder = WatchCreateRequest.newBuilder()\r\n+                    .setKey(ByteString.copyFromUtf8(normalizedKey))\r\n+                    .setProgressNotify(true);\r\n+            WatchRequest req = WatchRequest.newBuilder().setCreateRequest(builder).build();\r\n+            observer.onNext(req);\r\n+        }\r\n+\r\n+        private void cancelWatch() {\r\n+            WatchCancelRequest watchCancelRequest =\r\n+                    WatchCancelRequest.newBuilder().setWatchId(watchId).build();\r\n+            WatchRequest cancelRequest = WatchRequest.newBuilder()\r\n+                    .setCancelRequest(watchCancelRequest).build();\r\n+            observer.onNext(cancelRequest);\r\n+        }\r\n+    }\r\n+}\r\n"}, {"source1": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java", "source2": "org/apache/dubbo/configcenter/support/etcd/EtcdDynamicConfigurationFactory.java", "comments": ["Ordering differences only"], "unified_diff": "@@ -1,33 +1,33 @@\n-/*\n- * Licensed to the Apache Software Foundation (ASF) under one or more\n- * contributor license agreements.  See the NOTICE file distributed with\n- * this work for additional information regarding copyright ownership.\n- * The ASF licenses this file to You under the Apache License, Version 2.0\n- * (the \"License\"); you may not use this file except in compliance with\n- * the License.  You may obtain a copy of the License at\n- *\n- *     http://www.apache.org/licenses/LICENSE-2.0\n- *\n- * Unless required by applicable law or agreed to in writing, software\n- * distributed under the License is distributed on an \"AS IS\" BASIS,\n- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n- * See the License for the specific language governing permissions and\n- * limitations under the License.\n- */\n-\n-package org.apache.dubbo.configcenter.support.etcd;\n-\n-import org.apache.dubbo.common.URL;\n-import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\n-import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\n-\n-/**\n- * The etcd implementation of {@link AbstractDynamicConfigurationFactory}\n- */\n-public class EtcdDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\n-\n-    @Override\n-    protected DynamicConfiguration createDynamicConfiguration(URL url) {\n-        return new EtcdDynamicConfiguration(url);\n-    }\n-}\n+/*\r\n+ * Licensed to the Apache Software Foundation (ASF) under one or more\r\n+ * contributor license agreements.  See the NOTICE file distributed with\r\n+ * this work for additional information regarding copyright ownership.\r\n+ * The ASF licenses this file to You under the Apache License, Version 2.0\r\n+ * (the \"License\"); you may not use this file except in compliance with\r\n+ * the License.  You may obtain a copy of the License at\r\n+ *\r\n+ *     http://www.apache.org/licenses/LICENSE-2.0\r\n+ *\r\n+ * Unless required by applicable law or agreed to in writing, software\r\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n+ * See the License for the specific language governing permissions and\r\n+ * limitations under the License.\r\n+ */\r\n+\r\n+package org.apache.dubbo.configcenter.support.etcd;\r\n+\r\n+import org.apache.dubbo.common.URL;\r\n+import org.apache.dubbo.common.config.configcenter.AbstractDynamicConfigurationFactory;\r\n+import org.apache.dubbo.common.config.configcenter.DynamicConfiguration;\r\n+\r\n+/**\r\n+ * The etcd implementation of {@link AbstractDynamicConfigurationFactory}\r\n+ */\r\n+public class EtcdDynamicConfigurationFactory extends AbstractDynamicConfigurationFactory {\r\n+\r\n+    @Override\r\n+    protected DynamicConfiguration createDynamicConfiguration(URL url) {\r\n+        return new EtcdDynamicConfiguration(url);\r\n+    }\r\n+}\r\n"}, {"source1": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml", "source2": "META-INF/maven/org.apache.dubbo/dubbo-configcenter-etcd/pom.xml", "comments": ["Format-specific differences are supported for XML files but no file-specific differences were detected; falling back to a binary diff. file(1) reports: XML 1.0 document, ASCII text, with CRLF line terminators"], "has_internal_linenos": true, "unified_diff": "@@ -1,174 +1,169 @@\n 00000000: 3c3f 786d 6c20 7665 7273 696f 6e3d 2231  <?xml version=\"1\n 00000010: 2e30 2220 656e 636f 6469 6e67 3d22 5554  .0\" encoding=\"UT\n-00000020: 462d 3822 3f3e 0d0a 3c21 2d2d 0d0a 2020  F-8\"?>..<!--..  \n-00000030: 7e20 4c69 6365 6e73 6564 2074 6f20 7468  ~ Licensed to th\n-00000040: 6520 4170 6163 6865 2053 6f66 7477 6172  e Apache Softwar\n-00000050: 6520 466f 756e 6461 7469 6f6e 2028 4153  e Foundation (AS\n-00000060: 4629 2075 6e64 6572 206f 6e65 206f 7220  F) under one or \n-00000070: 6d6f 7265 0d0a 2020 7e20 636f 6e74 7269  more..  ~ contri\n-00000080: 6275 746f 7220 6c69 6365 6e73 6520 6167  butor license ag\n-00000090: 7265 656d 656e 7473 2e20 2053 6565 2074  reements.  See t\n-000000a0: 6865 204e 4f54 4943 4520 6669 6c65 2064  he NOTICE file d\n-000000b0: 6973 7472 6962 7574 6564 2077 6974 680d  istributed with.\n-000000c0: 0a20 207e 2074 6869 7320 776f 726b 2066  .  ~ this work f\n-000000d0: 6f72 2061 6464 6974 696f 6e61 6c20 696e  or additional in\n-000000e0: 666f 726d 6174 696f 6e20 7265 6761 7264  formation regard\n-000000f0: 696e 6720 636f 7079 7269 6768 7420 6f77  ing copyright ow\n-00000100: 6e65 7273 6869 702e 0d0a 2020 7e20 5468  nership...  ~ Th\n-00000110: 6520 4153 4620 6c69 6365 6e73 6573 2074  e ASF licenses t\n-00000120: 6869 7320 6669 6c65 2074 6f20 596f 7520  his file to You \n-00000130: 756e 6465 7220 7468 6520 4170 6163 6865  under the Apache\n-00000140: 204c 6963 656e 7365 2c20 5665 7273 696f   License, Versio\n-00000150: 6e20 322e 300d 0a20 207e 2028 7468 6520  n 2.0..  ~ (the \n-00000160: 224c 6963 656e 7365 2229 3b20 796f 7520  \"License\"); you \n-00000170: 6d61 7920 6e6f 7420 7573 6520 7468 6973  may not use this\n-00000180: 2066 696c 6520 6578 6365 7074 2069 6e20   file except in \n-00000190: 636f 6d70 6c69 616e 6365 2077 6974 680d  compliance with.\n-000001a0: 0a20 207e 2074 6865 204c 6963 656e 7365  .  ~ the License\n-000001b0: 2e20 2059 6f75 206d 6179 206f 6274 6169  .  You may obtai\n-000001c0: 6e20 6120 636f 7079 206f 6620 7468 6520  n a copy of the \n-000001d0: 4c69 6365 6e73 6520 6174 0d0a 2020 7e0d  License at..  ~.\n-000001e0: 0a20 207e 2020 2020 2068 7474 703a 2f2f  .  ~     http://\n-000001f0: 7777 772e 6170 6163 6865 2e6f 7267 2f6c  www.apache.org/l\n-00000200: 6963 656e 7365 732f 4c49 4345 4e53 452d  icenses/LICENSE-\n-00000210: 322e 300d 0a20 207e 0d0a 2020 7e20 556e  2.0..  ~..  ~ Un\n-00000220: 6c65 7373 2072 6571 7569 7265 6420 6279  less required by\n-00000230: 2061 7070 6c69 6361 626c 6520 6c61 7720   applicable law \n-00000240: 6f72 2061 6772 6565 6420 746f 2069 6e20  or agreed to in \n-00000250: 7772 6974 696e 672c 2073 6f66 7477 6172  writing, softwar\n-00000260: 650d 0a20 207e 2064 6973 7472 6962 7574  e..  ~ distribut\n-00000270: 6564 2075 6e64 6572 2074 6865 204c 6963  ed under the Lic\n-00000280: 656e 7365 2069 7320 6469 7374 7269 6275  ense is distribu\n-00000290: 7465 6420 6f6e 2061 6e20 2241 5320 4953  ted on an \"AS IS\n-000002a0: 2220 4241 5349 532c 0d0a 2020 7e20 5749  \" BASIS,..  ~ WI\n-000002b0: 5448 4f55 5420 5741 5252 414e 5449 4553  THOUT WARRANTIES\n-000002c0: 204f 5220 434f 4e44 4954 494f 4e53 204f   OR CONDITIONS O\n-000002d0: 4620 414e 5920 4b49 4e44 2c20 6569 7468  F ANY KIND, eith\n-000002e0: 6572 2065 7870 7265 7373 206f 7220 696d  er express or im\n-000002f0: 706c 6965 642e 0d0a 2020 7e20 5365 6520  plied...  ~ See \n-00000300: 7468 6520 4c69 6365 6e73 6520 666f 7220  the License for \n-00000310: 7468 6520 7370 6563 6966 6963 206c 616e  the specific lan\n-00000320: 6775 6167 6520 676f 7665 726e 696e 6720  guage governing \n-00000330: 7065 726d 6973 7369 6f6e 7320 616e 640d  permissions and.\n-00000340: 0a20 207e 206c 696d 6974 6174 696f 6e73  .  ~ limitations\n-00000350: 2075 6e64 6572 2074 6865 204c 6963 656e   under the Licen\n-00000360: 7365 2e0d 0a20 202d 2d3e 0d0a 3c70 726f  se...  -->..<pro\n-00000370: 6a65 6374 2078 7369 3a73 6368 656d 614c  ject xsi:schemaL\n-00000380: 6f63 6174 696f 6e3d 2268 7474 703a 2f2f  ocation=\"http://\n-00000390: 6d61 7665 6e2e 6170 6163 6865 2e6f 7267  maven.apache.org\n-000003a0: 2f50 4f4d 2f34 2e30 2e30 2068 7474 7073  /POM/4.0.0 https\n-000003b0: 3a2f 2f6d 6176 656e 2e61 7061 6368 652e  ://maven.apache.\n-000003c0: 6f72 672f 7873 642f 6d61 7665 6e2d 342e  org/xsd/maven-4.\n-000003d0: 302e 302e 7873 6422 2078 6d6c 6e73 3d22  0.0.xsd\" xmlns=\"\n-000003e0: 6874 7470 3a2f 2f6d 6176 656e 2e61 7061  http://maven.apa\n-000003f0: 6368 652e 6f72 672f 504f 4d2f 342e 302e  che.org/POM/4.0.\n-00000400: 3022 0d0a 2020 2020 786d 6c6e 733a 7873  0\"..    xmlns:xs\n-00000410: 693d 2268 7474 703a 2f2f 7777 772e 7733  i=\"http://www.w3\n-00000420: 2e6f 7267 2f32 3030 312f 584d 4c53 6368  .org/2001/XMLSch\n-00000430: 656d 612d 696e 7374 616e 6365 223e 0d0a  ema-instance\">..\n-00000440: 2020 3c6d 6f64 656c 5665 7273 696f 6e3e    <modelVersion>\n-00000450: 342e 302e 303c 2f6d 6f64 656c 5665 7273  4.0.0</modelVers\n-00000460: 696f 6e3e 0d0a 2020 3c70 6172 656e 743e  ion>..  <parent>\n-00000470: 0d0a 2020 2020 3c67 726f 7570 4964 3e6f  ..    <groupId>o\n-00000480: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000490: 2f67 726f 7570 4964 3e0d 0a20 2020 203c  /groupId>..    <\n-000004a0: 6172 7469 6661 6374 4964 3e64 7562 626f  artifactId>dubbo\n-000004b0: 2d63 6f6e 6669 6763 656e 7465 723c 2f61  -configcenter</a\n-000004c0: 7274 6966 6163 7449 643e 0d0a 2020 2020  rtifactId>..    \n-000004d0: 3c76 6572 7369 6f6e 3e32 2e37 2e31 303c  <version>2.7.10<\n-000004e0: 2f76 6572 7369 6f6e 3e0d 0a20 203c 2f70  /version>..  </p\n-000004f0: 6172 656e 743e 0d0a 2020 3c67 726f 7570  arent>..  <group\n-00000500: 4964 3e6f 7267 2e61 7061 6368 652e 6475  Id>org.apache.du\n-00000510: 6262 6f3c 2f67 726f 7570 4964 3e0d 0a20  bbo</groupId>.. \n-00000520: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-00000530: 626f 2d63 6f6e 6669 6763 656e 7465 722d  bo-configcenter-\n-00000540: 6574 6364 3c2f 6172 7469 6661 6374 4964  etcd</artifactId\n-00000550: 3e0d 0a20 203c 7665 7273 696f 6e3e 322e  >..  <version>2.\n-00000560: 372e 3130 3c2f 7665 7273 696f 6e3e 0d0a  7.10</version>..\n-00000570: 2020 3c6e 616d 653e 247b 7072 6f6a 6563    <name>${projec\n-00000580: 742e 6172 7469 6661 6374 4964 7d3c 2f6e  t.artifactId}</n\n-00000590: 616d 653e 0d0a 2020 3c64 6573 6372 6970  ame>..  <descrip\n-000005a0: 7469 6f6e 3e54 6865 2065 7463 6420 696d  tion>The etcd im\n-000005b0: 706c 656d 656e 7461 7469 6f6e 206f 6620  plementation of \n-000005c0: 7468 6520 636f 6e66 6967 2d63 656e 7465  the config-cente\n-000005d0: 7220 6170 693c 2f64 6573 6372 6970 7469  r api</descripti\n-000005e0: 6f6e 3e0d 0a20 203c 6c69 6365 6e73 6573  on>..  <licenses\n-000005f0: 3e0d 0a20 2020 203c 6c69 6365 6e73 653e  >..    <license>\n-00000600: 0d0a 2020 2020 2020 3c6e 616d 653e 4170  ..      <name>Ap\n-00000610: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n-00000620: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n-00000630: 0d0a 2020 2020 2020 3c75 726c 3e68 7474  ..      <url>htt\n-00000640: 703a 2f2f 7777 772e 6170 6163 6865 2e6f  p://www.apache.o\n-00000650: 7267 2f6c 6963 656e 7365 732f 4c49 4345  rg/licenses/LICE\n-00000660: 4e53 452d 322e 303c 2f75 726c 3e0d 0a20  NSE-2.0</url>.. \n-00000670: 2020 2020 203c 6469 7374 7269 6275 7469       <distributi\n-00000680: 6f6e 3e72 6570 6f3c 2f64 6973 7472 6962  on>repo</distrib\n-00000690: 7574 696f 6e3e 0d0a 2020 2020 3c2f 6c69  ution>..    </li\n-000006a0: 6365 6e73 653e 0d0a 2020 3c2f 6c69 6365  cense>..  </lice\n-000006b0: 6e73 6573 3e0d 0a20 203c 7072 6f70 6572  nses>..  <proper\n-000006c0: 7469 6573 3e0d 0a20 2020 203c 736b 6970  ties>..    <skip\n-000006d0: 496e 7465 6772 6174 696f 6e54 6573 7473  IntegrationTests\n-000006e0: 3e74 7275 653c 2f73 6b69 7049 6e74 6567  >true</skipInteg\n-000006f0: 7261 7469 6f6e 5465 7374 733e 0d0a 2020  rationTests>..  \n-00000700: 3c2f 7072 6f70 6572 7469 6573 3e0d 0a20  </properties>.. \n-00000710: 203c 6465 7065 6e64 656e 6369 6573 3e0d   <dependencies>.\n-00000720: 0a20 2020 203c 6465 7065 6e64 656e 6379  .    <dependency\n-00000730: 3e0d 0a20 2020 2020 203c 6772 6f75 7049  >..      <groupI\n-00000740: 643e 696f 2e65 7463 643c 2f67 726f 7570  d>io.etcd</group\n-00000750: 4964 3e0d 0a20 2020 2020 203c 6172 7469  Id>..      <arti\n-00000760: 6661 6374 4964 3e6a 6574 6364 2d6c 6175  factId>jetcd-lau\n-00000770: 6e63 6865 723c 2f61 7274 6966 6163 7449  ncher</artifactI\n-00000780: 643e 0d0a 2020 2020 2020 3c73 636f 7065  d>..      <scope\n-00000790: 3e74 6573 743c 2f73 636f 7065 3e0d 0a20  >test</scope>.. \n-000007a0: 2020 203c 2f64 6570 656e 6465 6e63 793e     </dependency>\n-000007b0: 0d0a 2020 2020 3c64 6570 656e 6465 6e63  ..    <dependenc\n-000007c0: 793e 0d0a 2020 2020 2020 3c67 726f 7570  y>..      <group\n-000007d0: 4964 3e6f 7267 2e74 6573 7463 6f6e 7461  Id>org.testconta\n-000007e0: 696e 6572 733c 2f67 726f 7570 4964 3e0d  iners</groupId>.\n-000007f0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n-00000800: 4964 3e74 6573 7463 6f6e 7461 696e 6572  Id>testcontainer\n-00000810: 733c 2f61 7274 6966 6163 7449 643e 0d0a  s</artifactId>..\n-00000820: 2020 2020 2020 3c73 636f 7065 3e74 6573        <scope>tes\n-00000830: 743c 2f73 636f 7065 3e0d 0a20 2020 203c  t</scope>..    <\n-00000840: 2f64 6570 656e 6465 6e63 793e 0d0a 2020  /dependency>..  \n-00000850: 2020 3c64 6570 656e 6465 6e63 793e 0d0a    <dependency>..\n-00000860: 2020 2020 2020 3c67 726f 7570 4964 3e6f        <groupId>o\n-00000870: 7267 2e61 7061 6368 652e 6475 6262 6f3c  rg.apache.dubbo<\n-00000880: 2f67 726f 7570 4964 3e0d 0a20 2020 2020  /groupId>..     \n-00000890: 203c 6172 7469 6661 6374 4964 3e64 7562   <artifactId>dub\n-000008a0: 626f 2d63 6f6d 6d6f 6e3c 2f61 7274 6966  bo-common</artif\n-000008b0: 6163 7449 643e 0d0a 2020 2020 2020 3c76  actId>..      <v\n-000008c0: 6572 7369 6f6e 3e24 7b70 726f 6a65 6374  ersion>${project\n-000008d0: 2e70 6172 656e 742e 7665 7273 696f 6e7d  .parent.version}\n-000008e0: 3c2f 7665 7273 696f 6e3e 0d0a 2020 2020  </version>..    \n-000008f0: 3c2f 6465 7065 6e64 656e 6379 3e0d 0a20  </dependency>.. \n-00000900: 2020 203c 6465 7065 6e64 656e 6379 3e0d     <dependency>.\n-00000910: 0a20 2020 2020 203c 6772 6f75 7049 643e  .      <groupId>\n-00000920: 6f72 672e 6170 6163 6865 2e64 7562 626f  org.apache.dubbo\n-00000930: 3c2f 6772 6f75 7049 643e 0d0a 2020 2020  </groupId>..    \n-00000940: 2020 3c61 7274 6966 6163 7449 643e 6475    <artifactId>du\n-00000950: 6262 6f2d 7265 6d6f 7469 6e67 2d65 7463  bbo-remoting-etc\n-00000960: 6433 3c2f 6172 7469 6661 6374 4964 3e0d  d3</artifactId>.\n-00000970: 0a20 2020 2020 203c 7665 7273 696f 6e3e  .      <version>\n-00000980: 247b 7072 6f6a 6563 742e 7061 7265 6e74  ${project.parent\n-00000990: 2e76 6572 7369 6f6e 7d3c 2f76 6572 7369  .version}</versi\n-000009a0: 6f6e 3e0d 0a20 2020 203c 2f64 6570 656e  on>..    </depen\n-000009b0: 6465 6e63 793e 0d0a 2020 3c2f 6465 7065  dency>..  </depe\n-000009c0: 6e64 656e 6369 6573 3e0d 0a20 203c 6275  ndencies>..  <bu\n-000009d0: 696c 643e 0d0a 2020 2020 3c70 6c75 6769  ild>..    <plugi\n-000009e0: 6e73 3e0d 0a20 2020 2020 203c 706c 7567  ns>..      <plug\n-000009f0: 696e 3e0d 0a20 2020 2020 2020 203c 6172  in>..        <ar\n-00000a00: 7469 6661 6374 4964 3e6d 6176 656e 2d73  tifactId>maven-s\n-00000a10: 7572 6566 6972 652d 706c 7567 696e 3c2f  urefire-plugin</\n-00000a20: 6172 7469 6661 6374 4964 3e0d 0a20 2020  artifactId>..   \n-00000a30: 2020 2020 203c 636f 6e66 6967 7572 6174       <configurat\n-00000a40: 696f 6e3e 0d0a 2020 2020 2020 2020 2020  ion>..          \n-00000a50: 3c73 6b69 7054 6573 7473 3e24 7b73 6b69  <skipTests>${ski\n-00000a60: 7049 6e74 6567 7261 7469 6f6e 5465 7374  pIntegrationTest\n-00000a70: 737d 3c2f 736b 6970 5465 7374 733e 0d0a  s}</skipTests>..\n-00000a80: 2020 2020 2020 2020 3c2f 636f 6e66 6967          </config\n-00000a90: 7572 6174 696f 6e3e 0d0a 2020 2020 2020  uration>..      \n-00000aa0: 3c2f 706c 7567 696e 3e0d 0a20 2020 203c  </plugin>..    <\n-00000ab0: 2f70 6c75 6769 6e73 3e0d 0a20 203c 2f62  /plugins>..  </b\n-00000ac0: 7569 6c64 3e0d 0a3c 2f70 726f 6a65 6374  uild>..</project\n-00000ad0: 3e0d 0a                                  >..\n+00000020: 462d 3822 3f3e 0a3c 212d 2d0a 2020 7e20  F-8\"?>.<!--.  ~ \n+00000030: 4c69 6365 6e73 6564 2074 6f20 7468 6520  Licensed to the \n+00000040: 4170 6163 6865 2053 6f66 7477 6172 6520  Apache Software \n+00000050: 466f 756e 6461 7469 6f6e 2028 4153 4629  Foundation (ASF)\n+00000060: 2075 6e64 6572 206f 6e65 206f 7220 6d6f   under one or mo\n+00000070: 7265 0a20 207e 2063 6f6e 7472 6962 7574  re.  ~ contribut\n+00000080: 6f72 206c 6963 656e 7365 2061 6772 6565  or license agree\n+00000090: 6d65 6e74 732e 2020 5365 6520 7468 6520  ments.  See the \n+000000a0: 4e4f 5449 4345 2066 696c 6520 6469 7374  NOTICE file dist\n+000000b0: 7269 6275 7465 6420 7769 7468 0a20 207e  ributed with.  ~\n+000000c0: 2074 6869 7320 776f 726b 2066 6f72 2061   this work for a\n+000000d0: 6464 6974 696f 6e61 6c20 696e 666f 726d  dditional inform\n+000000e0: 6174 696f 6e20 7265 6761 7264 696e 6720  ation regarding \n+000000f0: 636f 7079 7269 6768 7420 6f77 6e65 7273  copyright owners\n+00000100: 6869 702e 0a20 207e 2054 6865 2041 5346  hip..  ~ The ASF\n+00000110: 206c 6963 656e 7365 7320 7468 6973 2066   licenses this f\n+00000120: 696c 6520 746f 2059 6f75 2075 6e64 6572  ile to You under\n+00000130: 2074 6865 2041 7061 6368 6520 4c69 6365   the Apache Lice\n+00000140: 6e73 652c 2056 6572 7369 6f6e 2032 2e30  nse, Version 2.0\n+00000150: 0a20 207e 2028 7468 6520 224c 6963 656e  .  ~ (the \"Licen\n+00000160: 7365 2229 3b20 796f 7520 6d61 7920 6e6f  se\"); you may no\n+00000170: 7420 7573 6520 7468 6973 2066 696c 6520  t use this file \n+00000180: 6578 6365 7074 2069 6e20 636f 6d70 6c69  except in compli\n+00000190: 616e 6365 2077 6974 680a 2020 7e20 7468  ance with.  ~ th\n+000001a0: 6520 4c69 6365 6e73 652e 2020 596f 7520  e License.  You \n+000001b0: 6d61 7920 6f62 7461 696e 2061 2063 6f70  may obtain a cop\n+000001c0: 7920 6f66 2074 6865 204c 6963 656e 7365  y of the License\n+000001d0: 2061 740a 2020 7e0a 2020 7e20 2020 2020   at.  ~.  ~     \n+000001e0: 6874 7470 3a2f 2f77 7777 2e61 7061 6368  http://www.apach\n+000001f0: 652e 6f72 672f 6c69 6365 6e73 6573 2f4c  e.org/licenses/L\n+00000200: 4943 454e 5345 2d32 2e30 0a20 207e 0a20  ICENSE-2.0.  ~. \n+00000210: 207e 2055 6e6c 6573 7320 7265 7175 6972   ~ Unless requir\n+00000220: 6564 2062 7920 6170 706c 6963 6162 6c65  ed by applicable\n+00000230: 206c 6177 206f 7220 6167 7265 6564 2074   law or agreed t\n+00000240: 6f20 696e 2077 7269 7469 6e67 2c20 736f  o in writing, so\n+00000250: 6674 7761 7265 0a20 207e 2064 6973 7472  ftware.  ~ distr\n+00000260: 6962 7574 6564 2075 6e64 6572 2074 6865  ibuted under the\n+00000270: 204c 6963 656e 7365 2069 7320 6469 7374   License is dist\n+00000280: 7269 6275 7465 6420 6f6e 2061 6e20 2241  ributed on an \"A\n+00000290: 5320 4953 2220 4241 5349 532c 0a20 207e  S IS\" BASIS,.  ~\n+000002a0: 2057 4954 484f 5554 2057 4152 5241 4e54   WITHOUT WARRANT\n+000002b0: 4945 5320 4f52 2043 4f4e 4449 5449 4f4e  IES OR CONDITION\n+000002c0: 5320 4f46 2041 4e59 204b 494e 442c 2065  S OF ANY KIND, e\n+000002d0: 6974 6865 7220 6578 7072 6573 7320 6f72  ither express or\n+000002e0: 2069 6d70 6c69 6564 2e0a 2020 7e20 5365   implied..  ~ Se\n+000002f0: 6520 7468 6520 4c69 6365 6e73 6520 666f  e the License fo\n+00000300: 7220 7468 6520 7370 6563 6966 6963 206c  r the specific l\n+00000310: 616e 6775 6167 6520 676f 7665 726e 696e  anguage governin\n+00000320: 6720 7065 726d 6973 7369 6f6e 7320 616e  g permissions an\n+00000330: 640a 2020 7e20 6c69 6d69 7461 7469 6f6e  d.  ~ limitation\n+00000340: 7320 756e 6465 7220 7468 6520 4c69 6365  s under the Lice\n+00000350: 6e73 652e 0a20 202d 2d3e 0a3c 7072 6f6a  nse..  -->.<proj\n+00000360: 6563 7420 7873 693a 7363 6865 6d61 4c6f  ect xsi:schemaLo\n+00000370: 6361 7469 6f6e 3d22 6874 7470 3a2f 2f6d  cation=\"http://m\n+00000380: 6176 656e 2e61 7061 6368 652e 6f72 672f  aven.apache.org/\n+00000390: 504f 4d2f 342e 302e 3020 6874 7470 733a  POM/4.0.0 https:\n+000003a0: 2f2f 6d61 7665 6e2e 6170 6163 6865 2e6f  //maven.apache.o\n+000003b0: 7267 2f78 7364 2f6d 6176 656e 2d34 2e30  rg/xsd/maven-4.0\n+000003c0: 2e30 2e78 7364 2220 786d 6c6e 733d 2268  .0.xsd\" xmlns=\"h\n+000003d0: 7474 703a 2f2f 6d61 7665 6e2e 6170 6163  ttp://maven.apac\n+000003e0: 6865 2e6f 7267 2f50 4f4d 2f34 2e30 2e30  he.org/POM/4.0.0\n+000003f0: 220a 2020 2020 786d 6c6e 733a 7873 693d  \".    xmlns:xsi=\n+00000400: 2268 7474 703a 2f2f 7777 772e 7733 2e6f  \"http://www.w3.o\n+00000410: 7267 2f32 3030 312f 584d 4c53 6368 656d  rg/2001/XMLSchem\n+00000420: 612d 696e 7374 616e 6365 223e 0a20 203c  a-instance\">.  <\n+00000430: 6d6f 6465 6c56 6572 7369 6f6e 3e34 2e30  modelVersion>4.0\n+00000440: 2e30 3c2f 6d6f 6465 6c56 6572 7369 6f6e  .0</modelVersion\n+00000450: 3e0a 2020 3c70 6172 656e 743e 0a20 2020  >.  <parent>.   \n+00000460: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+00000470: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000480: 7049 643e 0a20 2020 203c 6172 7469 6661  pId>.    <artifa\n+00000490: 6374 4964 3e64 7562 626f 2d63 6f6e 6669  ctId>dubbo-confi\n+000004a0: 6763 656e 7465 723c 2f61 7274 6966 6163  gcenter</artifac\n+000004b0: 7449 643e 0a20 2020 203c 7665 7273 696f  tId>.    <versio\n+000004c0: 6e3e 322e 372e 3130 3c2f 7665 7273 696f  n>2.7.10</versio\n+000004d0: 6e3e 0a20 203c 2f70 6172 656e 743e 0a20  n>.  </parent>. \n+000004e0: 203c 6772 6f75 7049 643e 6f72 672e 6170   <groupId>org.ap\n+000004f0: 6163 6865 2e64 7562 626f 3c2f 6772 6f75  ache.dubbo</grou\n+00000500: 7049 643e 0a20 203c 6172 7469 6661 6374  pId>.  <artifact\n+00000510: 4964 3e64 7562 626f 2d63 6f6e 6669 6763  Id>dubbo-configc\n+00000520: 656e 7465 722d 6574 6364 3c2f 6172 7469  enter-etcd</arti\n+00000530: 6661 6374 4964 3e0a 2020 3c76 6572 7369  factId>.  <versi\n+00000540: 6f6e 3e32 2e37 2e31 303c 2f76 6572 7369  on>2.7.10</versi\n+00000550: 6f6e 3e0a 2020 3c6e 616d 653e 247b 7072  on>.  <name>${pr\n+00000560: 6f6a 6563 742e 6172 7469 6661 6374 4964  oject.artifactId\n+00000570: 7d3c 2f6e 616d 653e 0a20 203c 6465 7363  }</name>.  <desc\n+00000580: 7269 7074 696f 6e3e 5468 6520 6574 6364  ription>The etcd\n+00000590: 2069 6d70 6c65 6d65 6e74 6174 696f 6e20   implementation \n+000005a0: 6f66 2074 6865 2063 6f6e 6669 672d 6365  of the config-ce\n+000005b0: 6e74 6572 2061 7069 3c2f 6465 7363 7269  nter api</descri\n+000005c0: 7074 696f 6e3e 0a20 203c 6c69 6365 6e73  ption>.  <licens\n+000005d0: 6573 3e0a 2020 2020 3c6c 6963 656e 7365  es>.    <license\n+000005e0: 3e0a 2020 2020 2020 3c6e 616d 653e 4170  >.      <name>Ap\n+000005f0: 6163 6865 204c 6963 656e 7365 2c20 5665  ache License, Ve\n+00000600: 7273 696f 6e20 322e 303c 2f6e 616d 653e  rsion 2.0</name>\n+00000610: 0a20 2020 2020 203c 7572 6c3e 6874 7470  .      <url>http\n+00000620: 3a2f 2f77 7777 2e61 7061 6368 652e 6f72  ://www.apache.or\n+00000630: 672f 6c69 6365 6e73 6573 2f4c 4943 454e  g/licenses/LICEN\n+00000640: 5345 2d32 2e30 3c2f 7572 6c3e 0a20 2020  SE-2.0</url>.   \n+00000650: 2020 203c 6469 7374 7269 6275 7469 6f6e     <distribution\n+00000660: 3e72 6570 6f3c 2f64 6973 7472 6962 7574  >repo</distribut\n+00000670: 696f 6e3e 0a20 2020 203c 2f6c 6963 656e  ion>.    </licen\n+00000680: 7365 3e0a 2020 3c2f 6c69 6365 6e73 6573  se>.  </licenses\n+00000690: 3e0a 2020 3c70 726f 7065 7274 6965 733e  >.  <properties>\n+000006a0: 0a20 2020 203c 736b 6970 496e 7465 6772  .    <skipIntegr\n+000006b0: 6174 696f 6e54 6573 7473 3e74 7275 653c  ationTests>true<\n+000006c0: 2f73 6b69 7049 6e74 6567 7261 7469 6f6e  /skipIntegration\n+000006d0: 5465 7374 733e 0a20 203c 2f70 726f 7065  Tests>.  </prope\n+000006e0: 7274 6965 733e 0a20 203c 6465 7065 6e64  rties>.  <depend\n+000006f0: 656e 6369 6573 3e0a 2020 2020 3c64 6570  encies>.    <dep\n+00000700: 656e 6465 6e63 793e 0a20 2020 2020 203c  endency>.      <\n+00000710: 6772 6f75 7049 643e 696f 2e65 7463 643c  groupId>io.etcd<\n+00000720: 2f67 726f 7570 4964 3e0a 2020 2020 2020  /groupId>.      \n+00000730: 3c61 7274 6966 6163 7449 643e 6a65 7463  <artifactId>jetc\n+00000740: 642d 6c61 756e 6368 6572 3c2f 6172 7469  d-launcher</arti\n+00000750: 6661 6374 4964 3e0a 2020 2020 2020 3c73  factId>.      <s\n+00000760: 636f 7065 3e74 6573 743c 2f73 636f 7065  cope>test</scope\n+00000770: 3e0a 2020 2020 3c2f 6465 7065 6e64 656e  >.    </dependen\n+00000780: 6379 3e0a 2020 2020 3c64 6570 656e 6465  cy>.    <depende\n+00000790: 6e63 793e 0a20 2020 2020 203c 6772 6f75  ncy>.      <grou\n+000007a0: 7049 643e 6f72 672e 7465 7374 636f 6e74  pId>org.testcont\n+000007b0: 6169 6e65 7273 3c2f 6772 6f75 7049 643e  ainers</groupId>\n+000007c0: 0a20 2020 2020 203c 6172 7469 6661 6374  .      <artifact\n+000007d0: 4964 3e74 6573 7463 6f6e 7461 696e 6572  Id>testcontainer\n+000007e0: 733c 2f61 7274 6966 6163 7449 643e 0a20  s</artifactId>. \n+000007f0: 2020 2020 203c 7363 6f70 653e 7465 7374       <scope>test\n+00000800: 3c2f 7363 6f70 653e 0a20 2020 203c 2f64  </scope>.    </d\n+00000810: 6570 656e 6465 6e63 793e 0a20 2020 203c  ependency>.    <\n+00000820: 6465 7065 6e64 656e 6379 3e0a 2020 2020  dependency>.    \n+00000830: 2020 3c67 726f 7570 4964 3e6f 7267 2e61    <groupId>org.a\n+00000840: 7061 6368 652e 6475 6262 6f3c 2f67 726f  pache.dubbo</gro\n+00000850: 7570 4964 3e0a 2020 2020 2020 3c61 7274  upId>.      <art\n+00000860: 6966 6163 7449 643e 6475 6262 6f2d 636f  ifactId>dubbo-co\n+00000870: 6d6d 6f6e 3c2f 6172 7469 6661 6374 4964  mmon</artifactId\n+00000880: 3e0a 2020 2020 2020 3c76 6572 7369 6f6e  >.      <version\n+00000890: 3e24 7b70 726f 6a65 6374 2e70 6172 656e  >${project.paren\n+000008a0: 742e 7665 7273 696f 6e7d 3c2f 7665 7273  t.version}</vers\n+000008b0: 696f 6e3e 0a20 2020 203c 2f64 6570 656e  ion>.    </depen\n+000008c0: 6465 6e63 793e 0a20 2020 203c 6465 7065  dency>.    <depe\n+000008d0: 6e64 656e 6379 3e0a 2020 2020 2020 3c67  ndency>.      <g\n+000008e0: 726f 7570 4964 3e6f 7267 2e61 7061 6368  roupId>org.apach\n+000008f0: 652e 6475 6262 6f3c 2f67 726f 7570 4964  e.dubbo</groupId\n+00000900: 3e0a 2020 2020 2020 3c61 7274 6966 6163  >.      <artifac\n+00000910: 7449 643e 6475 6262 6f2d 7265 6d6f 7469  tId>dubbo-remoti\n+00000920: 6e67 2d65 7463 6433 3c2f 6172 7469 6661  ng-etcd3</artifa\n+00000930: 6374 4964 3e0a 2020 2020 2020 3c76 6572  ctId>.      <ver\n+00000940: 7369 6f6e 3e24 7b70 726f 6a65 6374 2e70  sion>${project.p\n+00000950: 6172 656e 742e 7665 7273 696f 6e7d 3c2f  arent.version}</\n+00000960: 7665 7273 696f 6e3e 0a20 2020 203c 2f64  version>.    </d\n+00000970: 6570 656e 6465 6e63 793e 0a20 203c 2f64  ependency>.  </d\n+00000980: 6570 656e 6465 6e63 6965 733e 0a20 203c  ependencies>.  <\n+00000990: 6275 696c 643e 0a20 2020 203c 706c 7567  build>.    <plug\n+000009a0: 696e 733e 0a20 2020 2020 203c 706c 7567  ins>.      <plug\n+000009b0: 696e 3e0a 2020 2020 2020 2020 3c61 7274  in>.        <art\n+000009c0: 6966 6163 7449 643e 6d61 7665 6e2d 7375  ifactId>maven-su\n+000009d0: 7265 6669 7265 2d70 6c75 6769 6e3c 2f61  refire-plugin</a\n+000009e0: 7274 6966 6163 7449 643e 0a20 2020 2020  rtifactId>.     \n+000009f0: 2020 203c 636f 6e66 6967 7572 6174 696f     <configuratio\n+00000a00: 6e3e 0a20 2020 2020 2020 2020 203c 736b  n>.          <sk\n+00000a10: 6970 5465 7374 733e 247b 736b 6970 496e  ipTests>${skipIn\n+00000a20: 7465 6772 6174 696f 6e54 6573 7473 7d3c  tegrationTests}<\n+00000a30: 2f73 6b69 7054 6573 7473 3e0a 2020 2020  /skipTests>.    \n+00000a40: 2020 2020 3c2f 636f 6e66 6967 7572 6174      </configurat\n+00000a50: 696f 6e3e 0a20 2020 2020 203c 2f70 6c75  ion>.      </plu\n+00000a60: 6769 6e3e 0a20 2020 203c 2f70 6c75 6769  gin>.    </plugi\n+00000a70: 6e73 3e0a 2020 3c2f 6275 696c 643e 0a3c  ns>.  </build>.<\n+00000a80: 2f70 726f 6a65 6374 3e0a                 /project>.\n"}]}
