<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>84128</bug_id>
          
          <creation_ts>2012-04-16 23:30:28 -0700</creation_ts>
          <short_desc>Move some code of LocalizedNumberICU.cpp to ICULocale.cpp</short_desc>
          <delta_ts>2012-04-17 01:21:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>84119</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>haraken</cc>
    
    <cc>morrita</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>603827</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-16 23:30:28 -0700</bug_when>
    <thetext>Move some code of LocalizedNumberICU.cpp to ICULocale.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603828</commentid>
    <comment_count>1</comment_count>
      <attachid>137483</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-16 23:36:32 -0700</bug_when>
    <thetext>Created attachment 137483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603855</commentid>
    <comment_count>2</comment_count>
      <attachid>137483</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 01:20:56 -0700</bug_when>
    <thetext>Comment on attachment 137483
Patch

Clearing flags on attachment: 137483

Committed r114359: &lt;http://trac.webkit.org/changeset/114359&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603856</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-17 01:21:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137483</attachid>
            <date>2012-04-16 23:36:32 -0700</date>
            <delta_ts>2012-04-17 01:20:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-84128-20120417153630.patch</filename>
            <type>text/plain</type>
            <size>20420</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYyMDUwNzI3NzFiYjE5
YTI3MzVlNWNkOWJlOWU2NWI1YjBkYTI0NC4uNGMzNmFkYTIyZGJhNjhhYTUzMGUzNjQ2MDcxMjBl
MGM3MWZmN2NiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA0LTE1ICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBNb3ZlIHNvbWUgY29kZSBv
ZiBMb2NhbGl6ZWROdW1iZXJJQ1UuY3BwIHRvIElDVUxvY2FsZS5jcHAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0MTI4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlv
ciBjaGFuZ2UuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IEFkZCBJQ1VMb2NhbGUuY3BwCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9JQ1VMb2NhbGUuY3BwOgorICAgICAgICBBZGRlZC4gTW92
ZSBzb21lIGNvZGUgZnJvbSBMb2NhbGl6ZWROdW1iZXJJQ1UuY3BwCisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9JQ1VMb2NhbGUuaDoKKyAgICAgICAgKElDVUxvY2FsZSk6IEFkZCBjdXJyZW50TG9j
YWxlKCkuCisgICAgICAgICogcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJJQ1UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTG9jYWxpemVkTnVtYmVyKTogVXNlIElDVUxvY2Fs
ZTo6Y3VycmVudExvY2FsZSgpLgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEZyb21Mb2NhbGl6
ZWROdW1iZXIpOiBkaXR0by4KKwogMjAxMi0wNC0xNiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIExvY2FsaXplZE51bWJlcklDVS5oIHRvIElDVUxv
Y2FsZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjg0MzAyODcyOWVjZjBlOTI0NzVkZWY0ZDk4ZTZj
ZWJlOGNmMzYwZS4uYTdjNDQ5YzFlNTcxYzkwOGUzZDY2NmJiNzMzMjZkZGY5Y2UyNDNhMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtNDQ0OSw2ICs0NDQ5LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS90ZXh0L0JpZGlDb250ZXh0LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9IeXBo
ZW5hdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvSHlwaGVuYXRpb24uaCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9JQ1VMb2NhbGUuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS90ZXh0L0lDVUxvY2FsZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0xpbmVFbmRpbmcuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2Ny
aXB0TWFwcGluZy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
SUNVTG9jYWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvSUNVTG9jYWxlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44YzFlMmE2NDYyMGQyODNkNjVlY2JjYjEzMzVmNzRlNDYxMjEyOWFkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9JQ1VMb2NhbGUu
Y3BwCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDVUxv
Y2FsZS5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBpY3U7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSUNVTG9jYWxlOjpJQ1VMb2NhbGUoY29uc3QgY2hhciogbG9jYWxlKQorICAg
IDogbV9sb2NhbGUobG9jYWxlKQorICAgICwgbV9udW1iZXJGb3JtYXQoMCkKKyAgICAsIG1fZGlk
Q3JlYXRlRGVjaW1hbEZvcm1hdChmYWxzZSkKK3sKK30KKworSUNVTG9jYWxlOjp+SUNVTG9jYWxl
KCkKK3sKKyAgICB1bnVtX2Nsb3NlKG1fbnVtYmVyRm9ybWF0KTsKK30KKworUGFzc093blB0cjxJ
Q1VMb2NhbGU+IElDVUxvY2FsZTo6Y3JlYXRlKGNvbnN0IGNoYXIqIGxvY2FsZVN0cmluZykKK3sK
KyAgICByZXR1cm4gYWRvcHRQdHIobmV3IElDVUxvY2FsZShsb2NhbGVTdHJpbmcpKTsKK30KKwor
UGFzc093blB0cjxJQ1VMb2NhbGU+IElDVUxvY2FsZTo6Y3JlYXRlRm9yQ3VycmVudExvY2FsZSgp
Cit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJQ1VMb2NhbGUoMCkpOworfQorCitJQ1VMb2Nh
bGUqIElDVUxvY2FsZTo6Y3VycmVudExvY2FsZSgpCit7CisgICAgc3RhdGljIElDVUxvY2FsZSog
Y3VycmVudElDVUxvY2FsZSA9IElDVUxvY2FsZTo6Y3JlYXRlRm9yQ3VycmVudExvY2FsZSgpLmxl
YWtQdHIoKTsKKyAgICByZXR1cm4gY3VycmVudElDVUxvY2FsZTsKK30KKwordm9pZCBJQ1VMb2Nh
bGU6OnNldERlY2ltYWxTeW1ib2wodW5zaWduZWQgaW5kZXgsIFVOdW1iZXJGb3JtYXRTeW1ib2wg
c3ltYm9sKQoreworICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOworICAgIGlu
dDMyX3QgYnVmZmVyTGVuZ3RoID0gdW51bV9nZXRTeW1ib2wobV9udW1iZXJGb3JtYXQsIHN5bWJv
bCwgMCwgMCwgJnN0YXR1cyk7CisgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpIHx8IHN0YXR1
cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
ICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKKyAgICAgICAgcmV0dXJuOwor
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7CisgICAgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOworICAgIHVudW1fZ2V0U3ltYm9sKG1fbnVtYmVyRm9ybWF0LCBzeW1ib2wsIGJ1
ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7CisgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQorICAgICAgICByZXR1cm47CisgICAgbV9kZWNpbWFsU3ltYm9sc1tpbmRleF0gPSBT
dHJpbmc6OmFkb3B0KGJ1ZmZlcik7Cit9CisKK3ZvaWQgSUNVTG9jYWxlOjpzZXREZWNpbWFsVGV4
dEF0dHJpYnV0ZShTdHJpbmcmIGRlc3RpbmF0aW9uLCBVTnVtYmVyRm9ybWF0VGV4dEF0dHJpYnV0
ZSB0YWcpCit7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CisgICAgaW50
MzJfdCBidWZmZXJMZW5ndGggPSB1bnVtX2dldFRleHRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQs
IHRhZywgMCwgMCwgJnN0YXR1cyk7CisgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpIHx8IHN0
YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUik7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKKyAgICAgICAgcmV0dXJu
OworICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7CisgICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOworICAgIHVudW1fZ2V0VGV4dEF0dHJpYnV0ZShtX251bWJlckZvcm1hdCwg
dGFnLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOworICAgIEFTU0VSVChV
X1NVQ0NFU1Moc3RhdHVzKSk7CisgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQorICAgICAgICBy
ZXR1cm47CisgICAgZGVzdGluYXRpb24gPSBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7Cit9CisKK3Zv
aWQgSUNVTG9jYWxlOjppbml0aWFsaXplRGVjaW1hbEZvcm1hdCgpCit7CisgICAgaWYgKG1fZGlk
Q3JlYXRlRGVjaW1hbEZvcm1hdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGlkQ3JlYXRlRGVj
aW1hbEZvcm1hdCA9IHRydWU7CisgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7
CisgICAgbV9udW1iZXJGb3JtYXQgPSB1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCAwLCAwLCBtX2xv
Y2FsZS5kYXRhKCksIDAsICZzdGF0dXMpOworICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpCisg
ICAgICAgIHJldHVybjsKKworICAgIHNldERlY2ltYWxTeW1ib2woMCwgVU5VTV9aRVJPX0RJR0lU
X1NZTUJPTCk7CisgICAgc2V0RGVjaW1hbFN5bWJvbCgxLCBVTlVNX09ORV9ESUdJVF9TWU1CT0wp
OworICAgIHNldERlY2ltYWxTeW1ib2woMiwgVU5VTV9UV09fRElHSVRfU1lNQk9MKTsKKyAgICBz
ZXREZWNpbWFsU3ltYm9sKDMsIFVOVU1fVEhSRUVfRElHSVRfU1lNQk9MKTsKKyAgICBzZXREZWNp
bWFsU3ltYm9sKDQsIFVOVU1fRk9VUl9ESUdJVF9TWU1CT0wpOworICAgIHNldERlY2ltYWxTeW1i
b2woNSwgVU5VTV9GSVZFX0RJR0lUX1NZTUJPTCk7CisgICAgc2V0RGVjaW1hbFN5bWJvbCg2LCBV
TlVNX1NJWF9ESUdJVF9TWU1CT0wpOworICAgIHNldERlY2ltYWxTeW1ib2woNywgVU5VTV9TRVZF
Tl9ESUdJVF9TWU1CT0wpOworICAgIHNldERlY2ltYWxTeW1ib2woOCwgVU5VTV9FSUdIVF9ESUdJ
VF9TWU1CT0wpOworICAgIHNldERlY2ltYWxTeW1ib2woOSwgVU5VTV9OSU5FX0RJR0lUX1NZTUJP
TCk7CisgICAgc2V0RGVjaW1hbFN5bWJvbChEZWNpbWFsU2VwYXJhdG9ySW5kZXgsIFVOVU1fREVD
SU1BTF9TRVBBUkFUT1JfU1lNQk9MKTsKKyAgICBzZXREZWNpbWFsU3ltYm9sKEdyb3VwU2VwYXJh
dG9ySW5kZXgsIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX1NZTUJPTCk7CisgICAgc2V0RGVjaW1h
bFRleHRBdHRyaWJ1dGUobV9wb3NpdGl2ZVByZWZpeCwgVU5VTV9QT1NJVElWRV9QUkVGSVgpOwor
ICAgIHNldERlY2ltYWxUZXh0QXR0cmlidXRlKG1fcG9zaXRpdmVTdWZmaXgsIFVOVU1fUE9TSVRJ
VkVfU1VGRklYKTsKKyAgICBzZXREZWNpbWFsVGV4dEF0dHJpYnV0ZShtX25lZ2F0aXZlUHJlZml4
LCBVTlVNX05FR0FUSVZFX1BSRUZJWCk7CisgICAgc2V0RGVjaW1hbFRleHRBdHRyaWJ1dGUobV9u
ZWdhdGl2ZVN1ZmZpeCwgVU5VTV9ORUdBVElWRV9TVUZGSVgpOworICAgIEFTU0VSVCghbV9wb3Np
dGl2ZVByZWZpeC5pc0VtcHR5KCkgfHwgIW1fcG9zaXRpdmVTdWZmaXguaXNFbXB0eSgpIHx8ICFt
X25lZ2F0aXZlUHJlZml4LmlzRW1wdHkoKSB8fCAhbV9uZWdhdGl2ZVN1ZmZpeC5pc0VtcHR5KCkp
OworfQorCitTdHJpbmcgSUNVTG9jYWxlOjpjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoY29uc3Qg
U3RyaW5nJiBpbnB1dCkKK3sKKyAgICBpbml0aWFsaXplRGVjaW1hbEZvcm1hdCgpOworICAgIGlm
ICghbV9udW1iZXJGb3JtYXQgfHwgaW5wdXQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gaW5w
dXQ7CisKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBib29sIGlzTmVnYXRpdmUgPSBmYWxzZTsK
KyAgICBVbmljb2RlU3RyaW5nIHVzdHJpbmc7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGlucHV0Lmxlbmd0aCgpKTsKKworICAgIGlmIChp
bnB1dFswXSA9PSAnLScpIHsKKyAgICAgICAgKytpOworICAgICAgICBpc05lZ2F0aXZlID0gdHJ1
ZTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQobV9uZWdhdGl2ZVByZWZpeCk7CisgICAgfSBlbHNl
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcG9zaXRpdmVQcmVmaXgpOworCisgICAgZm9yICg7
IGkgPCBpbnB1dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIHN3aXRjaCAoaW5wdXRbaV0pIHsK
KyAgICAgICAgY2FzZSAnMCc6CisgICAgICAgIGNhc2UgJzEnOgorICAgICAgICBjYXNlICcyJzoK
KyAgICAgICAgY2FzZSAnMyc6CisgICAgICAgIGNhc2UgJzQnOgorICAgICAgICBjYXNlICc1JzoK
KyAgICAgICAgY2FzZSAnNic6CisgICAgICAgIGNhc2UgJzcnOgorICAgICAgICBjYXNlICc4JzoK
KyAgICAgICAgY2FzZSAnOSc6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2ltYWxT
eW1ib2xzW2lucHV0W2ldIC0gJzAnXSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAnLic6CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2ltYWxTeW1ib2xzW0RlY2lt
YWxTZXBhcmF0b3JJbmRleF0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGJ1aWxkZXIuYXBwZW5kKGlzTmVnYXRpdmUgPyBtX25lZ2F0aXZlU3VmZml4IDogbV9wb3Np
dGl2ZVN1ZmZpeCk7CisKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0
aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgcG9zaXRpb24sIGNv
bnN0IFN0cmluZyYgcGFydCkKK3sKKyAgICBpZiAocGFydC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChwb3NpdGlvbiArIHBhcnQubGVuZ3RoKCkgPiB0ZXh0Lmxlbmd0
aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHBhcnQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBpZiAodGV4dFtwb3NpdGlvbiArIGldICE9
IHBhcnRbaV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCitib29sIElDVUxvY2FsZTo6ZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2UoY29u
c3QgU3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5kZXgs
IHVuc2lnbmVkJiBlbmRJbmRleCkKK3sKKyAgICBzdGFydEluZGV4ID0gMDsKKyAgICBlbmRJbmRl
eCA9IGlucHV0Lmxlbmd0aCgpOworICAgIGlmIChtX25lZ2F0aXZlUHJlZml4LmlzRW1wdHkoKSAm
JiBtX25lZ2F0aXZlU3VmZml4LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoaW5wdXQuc3RhcnRz
V2l0aChtX3Bvc2l0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX3Bvc2l0aXZlU3VmZml4
KSkgeworICAgICAgICAgICAgaXNOZWdhdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgc3RhcnRJ
bmRleCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7CisgICAgICAgICAgICBlbmRJbmRleCAt
PSBtX3Bvc2l0aXZlU3VmZml4Lmxlbmd0aCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGlzTmVnYXRpdmUgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChpbnB1dC5zdGFy
dHNXaXRoKG1fbmVnYXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fbmVnYXRpdmVTdWZm
aXgpKSB7CisgICAgICAgICAgICBpc05lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0YXJ0
SW5kZXggPSBtX25lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpOworICAgICAgICAgICAgZW5kSW5kZXgg
LT0gbV9uZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlzTmVnYXRpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRo
KG1fcG9zaXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fcG9zaXRpdmVTdWZmaXgpKSB7
CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7
CisgICAgICAgICAgICAgICAgZW5kSW5kZXggLT0gbV9wb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKTsK
KyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordW5zaWduZWQgSUNVTG9jYWxlOjpt
YXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVkJiBw
b3NpdGlvbikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIHN5bWJvbEluZGV4ID0gMDsgc3ltYm9sSW5k
ZXggPCBEZWNpbWFsU3ltYm9sc1NpemU7ICsrc3ltYm9sSW5kZXgpIHsKKyAgICAgICAgaWYgKG1f
ZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpICYmIG1hdGNoZXMoaW5wdXQsIHBv
c2l0aW9uLCBtX2RlY2ltYWxTeW1ib2xzW3N5bWJvbEluZGV4XSkpIHsKKyAgICAgICAgICAgIHBv
c2l0aW9uICs9IG1fZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpOworICAgICAg
ICAgICAgcmV0dXJuIHN5bWJvbEluZGV4OworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBE
ZWNpbWFsU3ltYm9sc1NpemU7Cit9CisKK1N0cmluZyBJQ1VMb2NhbGU6OmNvbnZlcnRGcm9tTG9j
YWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkKQoreworICAgIGluaXRpYWxpemVE
ZWNpbWFsRm9ybWF0KCk7CisgICAgU3RyaW5nIGlucHV0ID0gbG9jYWxpemVkLnN0cmlwV2hpdGVT
cGFjZSgpOworICAgIGlmICghbV9udW1iZXJGb3JtYXQgfHwgaW5wdXQuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gaW5wdXQ7CisKKyAgICBib29sIGlzTmVnYXRpdmU7CisgICAgdW5zaWduZWQg
c3RhcnRJbmRleDsKKyAgICB1bnNpZ25lZCBlbmRJbmRleDsKKyAgICBpZiAoIWRldGVjdFNpZ25B
bmRHZXREaWdpdFJhbmdlKGlucHV0LCBpc05lZ2F0aXZlLCBzdGFydEluZGV4LCBlbmRJbmRleCkp
IHsKKyAgICAgICAgLy8gSW5wdXQgaXMgYnJva2VuLiBSZXR1cm5pbmcgYW4gaW52YWxpZCBudW1i
ZXIgc3RyaW5nLgorICAgICAgICByZXR1cm4gIioiOworICAgIH0KKworICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShpbnB1dC5sZW5ndGgoKSk7
CisgICAgaWYgKGlzTmVnYXRpdmUpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OykgeworICAgICAgICB1
bnNpZ25lZCBzeW1ib2xJbmRleCA9IG1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgoaW5wdXQsIGkp
OworICAgICAgICBpZiAoc3ltYm9sSW5kZXggPj0gRGVjaW1hbFN5bWJvbHNTaXplKQorICAgICAg
ICAgICAgcmV0dXJuICIqIjsKKyAgICAgICAgaWYgKHN5bWJvbEluZGV4ID09IERlY2ltYWxTZXBh
cmF0b3JJbmRleCkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAgIGVs
c2UgaWYgKHN5bWJvbEluZGV4ID09IEdyb3VwU2VwYXJhdG9ySW5kZXgpIHsKKyAgICAgICAgICAg
IC8vIElnbm9yZSBncm91cCBzZXBhcmF0b3JzLgorCisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KCcwJyArIHN5bWJvbEluZGV4KSk7
CisgICAgfQorICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9J
Q1VMb2NhbGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvSUNVTG9jYWxlLmgKaW5k
ZXggNjdmNzcwNDcxOGMwMmUyOTE4MTJjOTlmZjI4OGRmMzdlMWY2NjY4OC4uMGEyNDI4MDI2MzE1
ODNlOTIyYTRhMWMyMWYyMDcyNzU0NzIwM2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9JQ1VMb2NhbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0lDVUxvY2FsZS5oCkBAIC00MywxMiArNDMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSUNVTG9jYWxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxJQ1VMb2Nh
bGU+IGNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcpOwotICAgIHN0YXRpYyBQYXNzT3du
UHRyPElDVUxvY2FsZT4gY3JlYXRlRm9yQ3VycmVudExvY2FsZSgpOworICAgIHN0YXRpYyBJQ1VM
b2NhbGUqIGN1cnJlbnRMb2NhbGUoKTsKICAgICB+SUNVTG9jYWxlKCk7CiAgICAgU3RyaW5nIGNv
bnZlcnRUb0xvY2FsaXplZE51bWJlcihjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgY29udmVy
dEZyb21Mb2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJik7CiAKIHByaXZhdGU6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8SUNVTG9jYWxlPiBjcmVhdGVGb3JDdXJyZW50TG9jYWxlKCk7CiAgICAg
ZXhwbGljaXQgSUNVTG9jYWxlKGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIHNldERlY2ltYWxTeW1i
b2wodW5zaWduZWQgaW5kZXgsIFVOdW1iZXJGb3JtYXRTeW1ib2wpOwogICAgIHZvaWQgc2V0RGVj
aW1hbFRleHRBdHRyaWJ1dGUoU3RyaW5nJiwgVU51bWJlckZvcm1hdFRleHRBdHRyaWJ1dGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJJ
Q1UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGl6ZWROdW1iZXJJQ1Uu
Y3BwCmluZGV4IGQ4N2FjNDIxNDhjYWVlNzM4ZGRkOTQ0YWM4OTM2YTY2ODE1OWExMjguLmE5OTE0
MTM1NGQ0NTI2ZDIyOWRlN2Y3NWFiMzk0NmFlYWIzNDQ4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxpemVkTnVtYmVySUNVLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsaXplZE51bWJlcklDVS5jcHAKQEAgLTMyLDI0MSAr
MzIsMTcgQEAKIAogI2luY2x1ZGUgIklDVUxvY2FsZS5oIgogI2luY2x1ZGUgIkxvY2FsaXplZE51
bWJlci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgotCi11c2luZyBuYW1lc3BhY2UgaWN1OwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLUlDVUxvY2FsZTo6SUNVTG9jYWxlKGNvbnN0IGNoYXIqIGxvY2FsZSkKLSAgICA6
IG1fbG9jYWxlKGxvY2FsZSkKLSAgICAsIG1fbnVtYmVyRm9ybWF0KDApCi0gICAgLCBtX2RpZENy
ZWF0ZURlY2ltYWxGb3JtYXQoZmFsc2UpCi17Ci19Ci0KLUlDVUxvY2FsZTo6fklDVUxvY2FsZSgp
Ci17Ci0gICAgdW51bV9jbG9zZShtX251bWJlckZvcm1hdCk7Ci19Ci0KLVBhc3NPd25QdHI8SUNV
TG9jYWxlPiBJQ1VMb2NhbGU6OmNyZWF0ZShjb25zdCBjaGFyKiBsb2NhbGVTdHJpbmcpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJQ1VMb2NhbGUobG9jYWxlU3RyaW5nKSk7Ci19Ci0KLVBh
c3NPd25QdHI8SUNVTG9jYWxlPiBJQ1VMb2NhbGU6OmNyZWF0ZUZvckN1cnJlbnRMb2NhbGUoKQot
ewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgSUNVTG9jYWxlKDApKTsKLX0KLQotdm9pZCBJQ1VM
b2NhbGU6OnNldERlY2ltYWxTeW1ib2wodW5zaWduZWQgaW5kZXgsIFVOdW1iZXJGb3JtYXRTeW1i
b2wgc3ltYm9sKQotewotICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAg
IGludDMyX3QgYnVmZmVyTGVuZ3RoID0gdW51bV9nZXRTeW1ib2wobV9udW1iZXJGb3JtYXQsIHN5
bWJvbCwgMCwgMCwgJnN0YXR1cyk7Ci0gICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpIHx8IHN0
YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUik7Ci0gICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKLSAgICAgICAgcmV0dXJu
OwotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7Ci0gICAgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwotICAgIHVudW1fZ2V0U3ltYm9sKG1fbnVtYmVyRm9ybWF0LCBzeW1ib2ws
IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlckxlbmd0aCwgJnN0YXR1cyk7Ci0gICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kZWNpbWFsU3ltYm9sc1tpbmRleF0g
PSBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7Ci19Ci0KLXZvaWQgSUNVTG9jYWxlOjpzZXREZWNpbWFs
VGV4dEF0dHJpYnV0ZShTdHJpbmcmIGRlc3RpbmF0aW9uLCBVTnVtYmVyRm9ybWF0VGV4dEF0dHJp
YnV0ZSB0YWcpCi17Ci0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7Ci0gICAg
aW50MzJfdCBidWZmZXJMZW5ndGggPSB1bnVtX2dldFRleHRBdHRyaWJ1dGUobV9udW1iZXJGb3Jt
YXQsIHRhZywgMCwgMCwgJnN0YXR1cyk7Ci0gICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpIHx8
IHN0YXR1cyA9PSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUik7Ci0gICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpICYmIHN0YXR1cyAhPSBVX0JVRkZFUl9PVkVSRkxPV19FUlJPUikKLSAgICAgICAgcmV0
dXJuOwotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyKGJ1ZmZlckxlbmd0aCk7Ci0gICAgc3RhdHVz
ID0gVV9aRVJPX0VSUk9SOwotICAgIHVudW1fZ2V0VGV4dEF0dHJpYnV0ZShtX251bWJlckZvcm1h
dCwgdGFnLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGgsICZzdGF0dXMpOwotICAgIEFTU0VS
VChVX1NVQ0NFU1Moc3RhdHVzKSk7Ci0gICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAg
ICByZXR1cm47Ci0gICAgZGVzdGluYXRpb24gPSBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7Ci19Ci0K
LXZvaWQgSUNVTG9jYWxlOjppbml0aWFsaXplRGVjaW1hbEZvcm1hdCgpCi17Ci0gICAgaWYgKG1f
ZGlkQ3JlYXRlRGVjaW1hbEZvcm1hdCkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZGlkQ3JlYXRl
RGVjaW1hbEZvcm1hdCA9IHRydWU7Ci0gICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7Ci0gICAgbV9udW1iZXJGb3JtYXQgPSB1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCAwLCAwLCBt
X2xvY2FsZS5kYXRhKCksIDAsICZzdGF0dXMpOwotICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHNldERlY2ltYWxTeW1ib2woMCwgVU5VTV9aRVJPX0RJ
R0lUX1NZTUJPTCk7Ci0gICAgc2V0RGVjaW1hbFN5bWJvbCgxLCBVTlVNX09ORV9ESUdJVF9TWU1C
T0wpOwotICAgIHNldERlY2ltYWxTeW1ib2woMiwgVU5VTV9UV09fRElHSVRfU1lNQk9MKTsKLSAg
ICBzZXREZWNpbWFsU3ltYm9sKDMsIFVOVU1fVEhSRUVfRElHSVRfU1lNQk9MKTsKLSAgICBzZXRE
ZWNpbWFsU3ltYm9sKDQsIFVOVU1fRk9VUl9ESUdJVF9TWU1CT0wpOwotICAgIHNldERlY2ltYWxT
eW1ib2woNSwgVU5VTV9GSVZFX0RJR0lUX1NZTUJPTCk7Ci0gICAgc2V0RGVjaW1hbFN5bWJvbCg2
LCBVTlVNX1NJWF9ESUdJVF9TWU1CT0wpOwotICAgIHNldERlY2ltYWxTeW1ib2woNywgVU5VTV9T
RVZFTl9ESUdJVF9TWU1CT0wpOwotICAgIHNldERlY2ltYWxTeW1ib2woOCwgVU5VTV9FSUdIVF9E
SUdJVF9TWU1CT0wpOwotICAgIHNldERlY2ltYWxTeW1ib2woOSwgVU5VTV9OSU5FX0RJR0lUX1NZ
TUJPTCk7Ci0gICAgc2V0RGVjaW1hbFN5bWJvbChEZWNpbWFsU2VwYXJhdG9ySW5kZXgsIFVOVU1f
REVDSU1BTF9TRVBBUkFUT1JfU1lNQk9MKTsKLSAgICBzZXREZWNpbWFsU3ltYm9sKEdyb3VwU2Vw
YXJhdG9ySW5kZXgsIFVOVU1fR1JPVVBJTkdfU0VQQVJBVE9SX1NZTUJPTCk7Ci0gICAgc2V0RGVj
aW1hbFRleHRBdHRyaWJ1dGUobV9wb3NpdGl2ZVByZWZpeCwgVU5VTV9QT1NJVElWRV9QUkVGSVgp
OwotICAgIHNldERlY2ltYWxUZXh0QXR0cmlidXRlKG1fcG9zaXRpdmVTdWZmaXgsIFVOVU1fUE9T
SVRJVkVfU1VGRklYKTsKLSAgICBzZXREZWNpbWFsVGV4dEF0dHJpYnV0ZShtX25lZ2F0aXZlUHJl
Zml4LCBVTlVNX05FR0FUSVZFX1BSRUZJWCk7Ci0gICAgc2V0RGVjaW1hbFRleHRBdHRyaWJ1dGUo
bV9uZWdhdGl2ZVN1ZmZpeCwgVU5VTV9ORUdBVElWRV9TVUZGSVgpOwotICAgIEFTU0VSVCghbV9w
b3NpdGl2ZVByZWZpeC5pc0VtcHR5KCkgfHwgIW1fcG9zaXRpdmVTdWZmaXguaXNFbXB0eSgpIHx8
ICFtX25lZ2F0aXZlUHJlZml4LmlzRW1wdHkoKSB8fCAhbV9uZWdhdGl2ZVN1ZmZpeC5pc0VtcHR5
KCkpOwotfQotCi1TdHJpbmcgSUNVTG9jYWxlOjpjb252ZXJ0VG9Mb2NhbGl6ZWROdW1iZXIoY29u
c3QgU3RyaW5nJiBpbnB1dCkKLXsKLSAgICBpbml0aWFsaXplRGVjaW1hbEZvcm1hdCgpOwotICAg
IGlmICghbV9udW1iZXJGb3JtYXQgfHwgaW5wdXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
aW5wdXQ7Ci0KLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBib29sIGlzTmVnYXRpdmUgPSBmYWxz
ZTsKLSAgICBVbmljb2RlU3RyaW5nIHVzdHJpbmc7Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwotICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGlucHV0Lmxlbmd0aCgpKTsKLQotICAgIGlm
IChpbnB1dFswXSA9PSAnLScpIHsKLSAgICAgICAgKytpOwotICAgICAgICBpc05lZ2F0aXZlID0g
dHJ1ZTsKLSAgICAgICAgYnVpbGRlci5hcHBlbmQobV9uZWdhdGl2ZVByZWZpeCk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKG1fcG9zaXRpdmVQcmVmaXgpOwotCi0gICAgZm9y
ICg7IGkgPCBpbnB1dC5sZW5ndGgoKTsgKytpKSB7Ci0gICAgICAgIHN3aXRjaCAoaW5wdXRbaV0p
IHsKLSAgICAgICAgY2FzZSAnMCc6Ci0gICAgICAgIGNhc2UgJzEnOgotICAgICAgICBjYXNlICcy
JzoKLSAgICAgICAgY2FzZSAnMyc6Ci0gICAgICAgIGNhc2UgJzQnOgotICAgICAgICBjYXNlICc1
JzoKLSAgICAgICAgY2FzZSAnNic6Ci0gICAgICAgIGNhc2UgJzcnOgotICAgICAgICBjYXNlICc4
JzoKLSAgICAgICAgY2FzZSAnOSc6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2lt
YWxTeW1ib2xzW2lucHV0W2ldIC0gJzAnXSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSAnLic6Ci0gICAgICAgICAgICBidWlsZGVyLmFwcGVuZChtX2RlY2ltYWxTeW1ib2xzW0Rl
Y2ltYWxTZXBhcmF0b3JJbmRleF0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGJ1aWxkZXIuYXBwZW5kKGlzTmVnYXRpdmUgPyBtX25lZ2F0aXZlU3VmZml4IDogbV9w
b3NpdGl2ZVN1ZmZpeCk7Ci0KLSAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwotfQotCi1z
dGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdGV4dCwgdW5zaWduZWQgcG9zaXRpb24s
IGNvbnN0IFN0cmluZyYgcGFydCkKLXsKLSAgICBpZiAocGFydC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIGlmIChwb3NpdGlvbiArIHBhcnQubGVuZ3RoKCkgPiB0ZXh0Lmxl
bmd0aCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHBhcnQubGVuZ3RoKCk7ICsraSkgewotICAgICAgICBpZiAodGV4dFtwb3NpdGlvbiArIGld
ICE9IHBhcnRbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIElDVUxvY2FsZTo6ZGV0ZWN0U2lnbkFuZEdldERpZ2l0UmFuZ2Uo
Y29uc3QgU3RyaW5nJiBpbnB1dCwgYm9vbCYgaXNOZWdhdGl2ZSwgdW5zaWduZWQmIHN0YXJ0SW5k
ZXgsIHVuc2lnbmVkJiBlbmRJbmRleCkKLXsKLSAgICBzdGFydEluZGV4ID0gMDsKLSAgICBlbmRJ
bmRleCA9IGlucHV0Lmxlbmd0aCgpOwotICAgIGlmIChtX25lZ2F0aXZlUHJlZml4LmlzRW1wdHko
KSAmJiBtX25lZ2F0aXZlU3VmZml4LmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoaW5wdXQuc3Rh
cnRzV2l0aChtX3Bvc2l0aXZlUHJlZml4KSAmJiBpbnB1dC5lbmRzV2l0aChtX3Bvc2l0aXZlU3Vm
Zml4KSkgewotICAgICAgICAgICAgaXNOZWdhdGl2ZSA9IGZhbHNlOwotICAgICAgICAgICAgc3Rh
cnRJbmRleCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7Ci0gICAgICAgICAgICBlbmRJbmRl
eCAtPSBtX3Bvc2l0aXZlU3VmZml4Lmxlbmd0aCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGlzTmVnYXRpdmUgPSB0cnVlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChpbnB1dC5z
dGFydHNXaXRoKG1fbmVnYXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fbmVnYXRpdmVT
dWZmaXgpKSB7Ci0gICAgICAgICAgICBpc05lZ2F0aXZlID0gdHJ1ZTsKLSAgICAgICAgICAgIHN0
YXJ0SW5kZXggPSBtX25lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpOwotICAgICAgICAgICAgZW5kSW5k
ZXggLT0gbV9uZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlzTmVnYXRpdmUgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNX
aXRoKG1fcG9zaXRpdmVQcmVmaXgpICYmIGlucHV0LmVuZHNXaXRoKG1fcG9zaXRpdmVTdWZmaXgp
KSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IG1fcG9zaXRpdmVQcmVmaXgubGVuZ3Ro
KCk7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXggLT0gbV9wb3NpdGl2ZVN1ZmZpeC5sZW5ndGgo
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWduZWQgSUNVTG9jYWxl
OjptYXRjaGVkRGVjaW1hbFN5bWJvbEluZGV4KGNvbnN0IFN0cmluZyYgaW5wdXQsIHVuc2lnbmVk
JiBwb3NpdGlvbikKLXsKLSAgICBmb3IgKHVuc2lnbmVkIHN5bWJvbEluZGV4ID0gMDsgc3ltYm9s
SW5kZXggPCBEZWNpbWFsU3ltYm9sc1NpemU7ICsrc3ltYm9sSW5kZXgpIHsKLSAgICAgICAgaWYg
KG1fZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpICYmIG1hdGNoZXMoaW5wdXQs
IHBvc2l0aW9uLCBtX2RlY2ltYWxTeW1ib2xzW3N5bWJvbEluZGV4XSkpIHsKLSAgICAgICAgICAg
IHBvc2l0aW9uICs9IG1fZGVjaW1hbFN5bWJvbHNbc3ltYm9sSW5kZXhdLmxlbmd0aCgpOwotICAg
ICAgICAgICAgcmV0dXJuIHN5bWJvbEluZGV4OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVy
biBEZWNpbWFsU3ltYm9sc1NpemU7Ci19Ci0KLVN0cmluZyBJQ1VMb2NhbGU6OmNvbnZlcnRGcm9t
TG9jYWxpemVkTnVtYmVyKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkKQotewotICAgIGluaXRpYWxp
emVEZWNpbWFsRm9ybWF0KCk7Ci0gICAgU3RyaW5nIGlucHV0ID0gbG9jYWxpemVkLnN0cmlwV2hp
dGVTcGFjZSgpOwotICAgIGlmICghbV9udW1iZXJGb3JtYXQgfHwgaW5wdXQuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gaW5wdXQ7Ci0KLSAgICBib29sIGlzTmVnYXRpdmU7Ci0gICAgdW5zaWdu
ZWQgc3RhcnRJbmRleDsKLSAgICB1bnNpZ25lZCBlbmRJbmRleDsKLSAgICBpZiAoIWRldGVjdFNp
Z25BbmRHZXREaWdpdFJhbmdlKGlucHV0LCBpc05lZ2F0aXZlLCBzdGFydEluZGV4LCBlbmRJbmRl
eCkpIHsKLSAgICAgICAgLy8gSW5wdXQgaXMgYnJva2VuLiBSZXR1cm5pbmcgYW4gaW52YWxpZCBu
dW1iZXIgc3RyaW5nLgotICAgICAgICByZXR1cm4gIioiOwotICAgIH0KLQotICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShpbnB1dC5sZW5ndGgo
KSk7Ci0gICAgaWYgKGlzTmVnYXRpdmUpCi0gICAgICAgIGJ1aWxkZXIuYXBwZW5kKCItIik7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OykgewotICAgICAg
ICB1bnNpZ25lZCBzeW1ib2xJbmRleCA9IG1hdGNoZWREZWNpbWFsU3ltYm9sSW5kZXgoaW5wdXQs
IGkpOwotICAgICAgICBpZiAoc3ltYm9sSW5kZXggPj0gRGVjaW1hbFN5bWJvbHNTaXplKQotICAg
ICAgICAgICAgcmV0dXJuICIqIjsKLSAgICAgICAgaWYgKHN5bWJvbEluZGV4ID09IERlY2ltYWxT
ZXBhcmF0b3JJbmRleCkKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcuJyk7Ci0gICAgICAg
IGVsc2UgaWYgKHN5bWJvbEluZGV4ID09IEdyb3VwU2VwYXJhdG9ySW5kZXgpIHsKLSAgICAgICAg
ICAgIC8vIElnbm9yZSBncm91cCBzZXBhcmF0b3JzLgotCi0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KCcwJyArIHN5bWJvbEluZGV4
KSk7Ci0gICAgfQotICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KLXN0YXRpYyBJ
Q1VMb2NhbGUqIGN1cnJlbnRMb2NhbGUoKQotewotICAgIHN0YXRpYyBJQ1VMb2NhbGUqIGN1cnJl
bnRJQ1VMb2NhbGUgPSBJQ1VMb2NhbGU6OmNyZWF0ZUZvckN1cnJlbnRMb2NhbGUoKS5sZWFrUHRy
KCk7Ci0gICAgcmV0dXJuIGN1cnJlbnRJQ1VMb2NhbGU7Ci19Ci0KIFN0cmluZyBjb252ZXJ0VG9M
b2NhbGl6ZWROdW1iZXIoY29uc3QgU3RyaW5nJiBjYW5vbmljYWxOdW1iZXJTdHJpbmcsIHVuc2ln
bmVkIGZyYWN0aW9uRGlnaXRzKQogewotICAgIHJldHVybiBjdXJyZW50TG9jYWxlKCktPmNvbnZl
cnRUb0xvY2FsaXplZE51bWJlcihjYW5vbmljYWxOdW1iZXJTdHJpbmcpOworICAgIHJldHVybiBJ
Q1VMb2NhbGU6OmN1cnJlbnRMb2NhbGUoKS0+Y29udmVydFRvTG9jYWxpemVkTnVtYmVyKGNhbm9u
aWNhbE51bWJlclN0cmluZyk7CiB9CiAKIFN0cmluZyBjb252ZXJ0RnJvbUxvY2FsaXplZE51bWJl
cihjb25zdCBTdHJpbmcmIGxvY2FsaXplZE51bWJlclN0cmluZykKIHsKLSAgICByZXR1cm4gY3Vy
cmVudExvY2FsZSgpLT5jb252ZXJ0RnJvbUxvY2FsaXplZE51bWJlcihsb2NhbGl6ZWROdW1iZXJT
dHJpbmcpOworICAgIHJldHVybiBJQ1VMb2NhbGU6OmN1cnJlbnRMb2NhbGUoKS0+Y29udmVydEZy
b21Mb2NhbGl6ZWROdW1iZXIobG9jYWxpemVkTnVtYmVyU3RyaW5nKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>