<?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>196133</bug_id>
          
          <creation_ts>2019-03-21 23:59:17 -0700</creation_ts>
          <short_desc>[JSC] Shrink sizeof(RegExp)</short_desc>
          <delta_ts>2019-03-23 17:49:32 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1520189</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-21 23:59:17 -0700</bug_when>
    <thetext>[JSC] Shrink sizeof(RegExp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520191</commentid>
    <comment_count>1</comment_count>
      <attachid>365685</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-22 00:04:43 -0700</bug_when>
    <thetext>Created attachment 365685
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520443</commentid>
    <comment_count>2</comment_count>
      <attachid>365752</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-22 11:44:09 -0700</bug_when>
    <thetext>Created attachment 365752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520460</commentid>
    <comment_count>3</comment_count>
      <attachid>365752</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-22 13:19:06 -0700</bug_when>
    <thetext>Comment on attachment 365752
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=365752&amp;action=review

r=me with fixes.

&gt; Source/JavaScriptCore/runtime/RegExp.cpp:266
&gt; +        auto&amp; jitCode = createRegExpJITCodeIfNecessary();

Let&apos;s rename createRegExpJITCodeIfNecessary() to ensureRegExpJITCode().  See below.

&gt; Source/JavaScriptCore/runtime/RegExp.cpp:324
&gt; +        auto&amp; jitCode = createRegExpJITCodeIfNecessary();

Ditto: rename.

&gt; Source/JavaScriptCore/runtime/RegExp.cpp:445
&gt; +            break;

Should this be a RELEASE_ASSERT_NOT_REACHED()?  The pre-existing code implies that it is not expecting these cases to be possible.

&gt; Source/JavaScriptCore/runtime/RegExp.h:164
&gt; +    Yarr::YarrCodeBlock&amp; createRegExpJITCodeIfNecessary()

Let&apos;s call this ensureRegExpJITCode().  I believe that is the way we typically name this idiom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520591</commentid>
    <comment_count>4</comment_count>
      <attachid>365752</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-23 00:55:41 -0700</bug_when>
    <thetext>Comment on attachment 365752
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=365752&amp;action=review

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/RegExp.cpp:266
&gt;&gt; +        auto&amp; jitCode = createRegExpJITCodeIfNecessary();
&gt; 
&gt; Let&apos;s rename createRegExpJITCodeIfNecessary() to ensureRegExpJITCode().  See below.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/RegExp.cpp:324
&gt;&gt; +        auto&amp; jitCode = createRegExpJITCodeIfNecessary();
&gt; 
&gt; Ditto: rename.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/RegExp.cpp:445
&gt;&gt; +            break;
&gt; 
&gt; Should this be a RELEASE_ASSERT_NOT_REACHED()?  The pre-existing code implies that it is not expecting these cases to be possible.

This function is only called for debugging. And I think we should dump null address instead if ParseError or NotCompiled appears.
I&apos;ve changed jit8BitMatchOnlyAddr etc. to take an initializer, which makes content of this array zero-filled.

&gt;&gt; Source/JavaScriptCore/runtime/RegExp.h:164
&gt;&gt; +    Yarr::YarrCodeBlock&amp; createRegExpJITCodeIfNecessary()
&gt; 
&gt; Let&apos;s call this ensureRegExpJITCode().  I believe that is the way we typically name this idiom.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520593</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-23 00:58:10 -0700</bug_when>
    <thetext>Committed r243408: &lt;https://trac.webkit.org/changeset/243408&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520654</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-23 17:49:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/49191251&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365685</attachid>
            <date>2019-03-22 00:04:43 -0700</date>
            <delta_ts>2019-03-22 11:44:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196133-20190322000443.patch</filename>
            <type>text/plain</type>
            <size>14709</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YmU5ZmY5ZWFhMTZlOGE5OGU0MmMyZTM4N2U4NWE3OGIyM2ZkZmI3Li5iMjJiZWNiZDdmNzczZDIw
OGRjOTVjMTJhOTcxNTRlOWI1NDE2MDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wMy0yMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBzaXplb2YoUmVnRXhwKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBhcHBsaWNhdGlvbnMgaGF2ZSBt
YW55IFJlZ0V4cCBjZWxscy4gQnV0IFJlZ0V4cCBjZWxscyBhcmUgdmVyeSBsYXJnZSAoMTQ0Qiku
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVkdWNlcyB0aGUgc2l6ZSBmcm9tIDE0NEIgdG8gNDhCIGJ5
LAorCisgICAgICAgIDEuIEFsbG9jYXRlIFlhcnI6OllhcnJDb2RlQmxvY2sgaW4gbm9uLUdDIGhl
YXAuIFdlIGNhbiBhdm9pZCB0aGlzIGFsbG9jYXRpb24gaWYgSklUIGlzIGRpc2FibGVkLgorICAg
ICAgICAyLiBtX2NhcHR1cmVHcm91cE5hbWVzIGFuZCBtX25hbWVkR3JvdXBUb1BhcmVuSW5kZXgg
YXJlIG1vdmVkIHRvIFJhcmVEYXRhLiBUaGV5IGFyZSBvbmx5IHVzZWQgd2hlbiBSZWdFeHAgaGFz
IG5hbWVkIGNhcHR1cmUgZ3JvdXBzLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlJl
Z0V4cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZGVsZXRlQ29k
ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6cHJpbnRUcmFjZURhdGEpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZUZvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0
Y2hJbmxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IpOgor
CiAyMDE5LTAzLTIxICBUb21hcyBQb3BlbGEgIDx0cG9wZWxhQHJlZGhhdC5jb20+CiAKICAgICAg
ICAgW0pTQ10gRml4IGJ1aWxkIGFmdGVyIHIyNDMyMzIgb24gdW5zdXBwb3J0ZWQgNjRiaXQgYXJj
aGl0ZWN0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKaW5kZXgg
OTNhZDJlOWE2YTlkYzU3NDI5ZDA4M2QwZDcyOWFhYjE1OTExOTg0My4uYjcwM2E5MmQzMGUzYmRk
M2Y2MTA3MDMxZTVkYzI3NmQ4MTNjNzdkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuY3BwCkBAIC0xNzEsMTIgKzE3MSwxNiBAQCB2b2lkIFJlZ0V4cDo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBZYXJy
OjpZYXJyUGF0dGVybiBwYXR0ZXJuKG1fcGF0dGVyblN0cmluZywgbV9mbGFncywgbV9jb25zdHJ1
Y3Rpb25FcnJvckNvZGUsIHZtLnN0YWNrTGltaXQoKSk7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCisg
ICAgaWYgKCFpc1ZhbGlkKCkpIHsKICAgICAgICAgbV9zdGF0ZSA9IFBhcnNlRXJyb3I7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3VicGF0dGVy
bnM7Ci0gICAgICAgIG1fY2FwdHVyZUdyb3VwTmFtZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdy
b3VwTmFtZXMpOwotICAgICAgICBtX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0ZXJu
Lm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX251bVN1YnBhdHRlcm5zID0gcGF0dGVybi5tX251bVN1YnBhdHRlcm5zOworICAgIGlmICgh
cGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKSB8fCAhcGF0dGVybi5tX25hbWVk
R3JvdXBUb1BhcmVuSW5kZXguaXNFbXB0eSgpKSB7CisgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFJhcmVEYXRhPigpOworICAgICAgICBtX3JhcmVEYXRhLT5tX2NhcHR1cmVH
cm91cE5hbWVzLnN3YXAocGF0dGVybi5tX2NhcHR1cmVHcm91cE5hbWVzKTsKKyAgICAgICAgbV9y
YXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LnN3YXAocGF0dGVybi5tX25hbWVkR3Jv
dXBUb1BhcmVuSW5kZXgpOwogICAgIH0KIH0KIApAQCAtMTk0LDcgKzE5OCw4IEBAIHNpemVfdCBS
ZWdFeHA6OmVzdGltYXRlZFNpemUoSlNDZWxsKiBjZWxsLCBWTSYgdm0pCiAgICAgUmVnRXhwKiB0
aGlzT2JqZWN0ID0gc3RhdGljX2Nhc3Q8UmVnRXhwKj4oY2VsbCk7CiAgICAgc2l6ZV90IHJlZ2V4
RGF0YVNpemUgPSB0aGlzT2JqZWN0LT5tX3JlZ0V4cEJ5dGVjb2RlID8gdGhpc09iamVjdC0+bV9y
ZWdFeHBCeXRlY29kZS0+ZXN0aW1hdGVkU2l6ZUluQnl0ZXMoKSA6IDA7CiAjaWYgRU5BQkxFKFlB
UlJfSklUKQotICAgIHJlZ2V4RGF0YVNpemUgKz0gdGhpc09iamVjdC0+bV9yZWdFeHBKSVRDb2Rl
LnNpemUoKTsKKyAgICBpZiAoYXV0byogaml0Q29kZSA9IHRoaXNPYmplY3QtPm1fcmVnRXhwSklU
Q29kZS5nZXQoKSkKKyAgICAgICAgcmVnZXhEYXRhU2l6ZSArPSBqaXRDb2RlLT5zaXplKCk7CiAj
ZW5kaWYKICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsLCB2bSkgKyByZWdleERh
dGFTaXplOwogfQpAQCAtMjM3LDcgKzI0Miw3IEBAIHZvaWQgUmVnRXhwOjpieXRlQ29kZUNvbXBp
bGVJZk5lY2Vzc2FyeShWTSogdm0pCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFy
cjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOwogICAg
IAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2ZsYWdz
LCBtX2NvbnN0cnVjdGlvbkVycm9yQ29kZSwgdm0tPnN0YWNrTGltaXQoKSk7CiAgICAgaWYgKGhh
c0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkgewpAQCAtMjU4LDggKzI2Myw5IEBAIHZv
aWQgUmVnRXhwOjpjb21waWxlKFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQog
ICAgICAgICAmJiAhcGF0dGVybi5tX2NvbnRhaW5zQmFja3JlZmVyZW5jZXMKICNlbmRpZgogICAg
ICAgICApIHsKLSAgICAgICAgWWFycjo6aml0Q29tcGlsZShwYXR0ZXJuLCBtX3BhdHRlcm5TdHJp
bmcsIGNoYXJTaXplLCB2bSwgbV9yZWdFeHBKSVRDb2RlKTsKLSAgICAgICAgaWYgKCFtX3JlZ0V4
cEpJVENvZGUuZmFpbHVyZVJlYXNvbigpKSB7CisgICAgICAgIGF1dG8mIGppdENvZGUgPSBjcmVh
dGVSZWdFeHBKSVRDb2RlSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgWWFycjo6aml0Q29tcGlsZShw
YXR0ZXJuLCBtX3BhdHRlcm5TdHJpbmcsIGNoYXJTaXplLCB2bSwgaml0Q29kZSk7CisgICAgICAg
IGlmICghaml0Q29kZS5mYWlsdXJlUmVhc29uKCkpIHsKICAgICAgICAgICAgIG1fc3RhdGUgPSBK
SVRDb2RlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yODMsNyArMjg5LDcg
QEAgaW50IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCBWZWN0b3I8aW50PiYgb3YKIGJvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRs
eSgKICAgICBWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIGlu
dCYgcG9zaXRpb24sIFZlY3RvcjxpbnQ+JiBvdmVjdG9yKQogewotICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2Nr
KCkpOwogCiAgICAgaWYgKCFoYXNDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlh
cnI6OkNoYXIxNikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI5NCw3ICszMDAsNyBAQCBi
b29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHkoCiAKIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0
Y2hPbmx5KFZNKiB2bSwgWWFycjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogewotICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KGNlbGxMb2NrKCkpOwogICAgIAogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0
ZXJuU3RyaW5nLCBtX2ZsYWdzLCBtX2NvbnN0cnVjdGlvbkVycm9yQ29kZSwgdm0tPnN0YWNrTGlt
aXQoKSk7CiAgICAgaWYgKGhhc0Vycm9yKG1fY29uc3RydWN0aW9uRXJyb3JDb2RlKSkgewpAQCAt
MzE1LDggKzMyMSw5IEBAIHZvaWQgUmVnRXhwOjpjb21waWxlTWF0Y2hPbmx5KFZNKiB2bSwgWWFy
cjo6WWFyckNoYXJTaXplIGNoYXJTaXplKQogICAgICAgICAmJiAhcGF0dGVybi5tX2NvbnRhaW5z
QmFja3JlZmVyZW5jZXMKICNlbmRpZgogICAgICAgICApIHsKLSAgICAgICAgWWFycjo6aml0Q29t
cGlsZShwYXR0ZXJuLCBtX3BhdHRlcm5TdHJpbmcsIGNoYXJTaXplLCB2bSwgbV9yZWdFeHBKSVRD
b2RlLCBZYXJyOjpNYXRjaE9ubHkpOwotICAgICAgICBpZiAoIW1fcmVnRXhwSklUQ29kZS5mYWls
dXJlUmVhc29uKCkpIHsKKyAgICAgICAgYXV0byYgaml0Q29kZSA9IGNyZWF0ZVJlZ0V4cEpJVENv
ZGVJZk5lY2Vzc2FyeSgpOworICAgICAgICBZYXJyOjpqaXRDb21waWxlKHBhdHRlcm4sIG1fcGF0
dGVyblN0cmluZywgY2hhclNpemUsIHZtLCBqaXRDb2RlLCBZYXJyOjpNYXRjaE9ubHkpOworICAg
ICAgICBpZiAoIWppdENvZGUuZmFpbHVyZVJlYXNvbigpKSB7CiAgICAgICAgICAgICBtX3N0YXRl
ID0gSklUQ29kZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzM5LDcgKzM0
Niw3IEBAIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2goVk0mIHZtLCBjb25zdCBTdHJpbmcmIHMs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0KQogCiBib29sIFJlZ0V4cDo6bWF0Y2hDb25jdXJyZW50bHko
Vk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCBNYXRjaFJlc3Vs
dCYgcmVzdWx0KQogewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNlbGxMb2NrKCkpOwogCiAgICAgaWYgKCFoYXNNYXRj
aE9ubHlDb2RlRm9yKHMuaXM4Qml0KCkgPyBZYXJyOjpDaGFyOCA6IFlhcnI6OkNoYXIxNikpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1MCwxMyArMzU3LDE0IEBAIGJvb2wgUmVnRXhwOjpt
YXRjaENvbmN1cnJlbnRseShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIE1hCiAKIHZvaWQgUmVnRXhwOjpkZWxldGVDb2RlKCkKIHsKLSAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjZWxs
TG9jaygpKTsKICAgICAKICAgICBpZiAoIWhhc0NvZGUoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fc3RhdGUgPSBOb3RDb21waWxlZDsKICNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgbV9yZWdF
eHBKSVRDb2RlLmNsZWFyKCk7CisgICAgaWYgKG1fcmVnRXhwSklUQ29kZSkKKyAgICAgICAgbV9y
ZWdFeHBKSVRDb2RlLT5jbGVhcigpOwogI2VuZGlmCiAgICAgbV9yZWdFeHBCeXRlY29kZSA9IG51
bGxwdHI7CiB9CkBAIC00MjYsMjMgKzQzNCwyOSBAQCB2b2lkIFJlZ0V4cDo6bWF0Y2hDb21wYXJl
V2l0aEludGVycHJldGVyKGNvbnN0IFN0cmluZyYgcywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqCiAg
ICAgICAgIHNucHJpbnRmKGZvcm1hdHRlZFBhdHRlcm4sIDQxLCAocGF0dExlbiA8PSAzOCkgPyAi
LyUuMzhzLyIgOiAiLyUuMzZzLi4uIiwgcmF3UGF0dGVybik7CiAKICNpZiBFTkFCTEUoWUFSUl9K
SVQpCi0gICAgICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGNvZGVCbG9jayA9IG1fcmVnRXhwSklU
Q29kZTsKLQogICAgICAgICBjb25zdCBzaXplX3Qgaml0QWRkclNpemUgPSAyMDsKICAgICAgICAg
Y2hhciBqaXQ4Qml0TWF0Y2hPbmx5QWRkcltqaXRBZGRyU2l6ZV07CiAgICAgICAgIGNoYXIgaml0
MTZCaXRNYXRjaE9ubHlBZGRyW2ppdEFkZHJTaXplXTsKICAgICAgICAgY2hhciBqaXQ4Qml0TWF0
Y2hBZGRyW2ppdEFkZHJTaXplXTsKICAgICAgICAgY2hhciBqaXQxNkJpdE1hdGNoQWRkcltqaXRB
ZGRyU2l6ZV07Ci0gICAgICAgIGlmIChtX3N0YXRlID09IEJ5dGVDb2RlKSB7CisgICAgICAgIHN3
aXRjaCAobV9zdGF0ZSkgeworICAgICAgICBjYXNlIFBhcnNlRXJyb3I6CisgICAgICAgIGNhc2Ug
Tm90Q29tcGlsZWQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBCeXRlQ29kZToK
ICAgICAgICAgICAgIHNucHJpbnRmKGppdDhCaXRNYXRjaE9ubHlBZGRyLCBqaXRBZGRyU2l6ZSwg
ImZhbGxiYWNrICAgICIpOwogICAgICAgICAgICAgc25wcmludGYoaml0MTZCaXRNYXRjaE9ubHlB
ZGRyLCBqaXRBZGRyU2l6ZSwgIi0tLS0gICAgICAiKTsKICAgICAgICAgICAgIHNucHJpbnRmKGpp
dDhCaXRNYXRjaEFkZHIsIGppdEFkZHJTaXplLCAiZmFsbGJhY2sgICAgIik7CiAgICAgICAgICAg
ICBzbnByaW50ZihqaXQxNkJpdE1hdGNoQWRkciwgaml0QWRkclNpemUsICItLS0tICAgICAgIik7
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBKSVRD
b2RlOiB7CisgICAgICAgICAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSAqbV9y
ZWdFeHBKSVRDb2RlLmdldCgpOwogICAgICAgICAgICAgc25wcmludGYoaml0OEJpdE1hdGNoT25s
eUFkZHIsIGppdEFkZHJTaXplLCAiMHglMDE0bHgiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oY29kZUJsb2NrLmdldDhCaXRNYXRjaE9ubHlBZGRyKCkpKTsKICAgICAgICAgICAgIHNucHJp
bnRmKGppdDE2Qml0TWF0Y2hPbmx5QWRkciwgaml0QWRkclNpemUsICIweCUwMTRseCIsIHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb2RlQmxvY2suZ2V0MTZCaXRNYXRjaE9ubHlBZGRyKCkp
KTsKICAgICAgICAgICAgIHNucHJpbnRmKGppdDhCaXRNYXRjaEFkZHIsIGppdEFkZHJTaXplLCAi
MHglMDE0bHgiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29kZUJsb2NrLmdldDhCaXRN
YXRjaEFkZHIoKSkpOwogICAgICAgICAgICAgc25wcmludGYoaml0MTZCaXRNYXRjaEFkZHIsIGpp
dEFkZHJTaXplLCAiMHglMDE0bHgiLCByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY29kZUJs
b2NrLmdldDE2Qml0TWF0Y2hBZGRyKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGNvbnN0IGNoYXIqIGppdDhCaXRNYXRjaE9ubHlB
ZGRyID0gIkpJVCBPZmYiOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuaAppbmRl
eCA3YjA4YWI3ZWMxN2YxODg1ZWJhNjEwNGNiZTI2ZGNhOWJlMDEwOGFkLi4zNDMyNTg5YjRlNzg2
YzJhMTA0YTM3YmU1ZjFmYWRkZjA3YTAxM2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHAuaApAQCAtODgsMjAgKzg4LDIzIEBAIGNsYXNzIFJlZ0V4cCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogCiAgICAgYm9vbCBoYXNOYW1lZENhcHR1cmVzKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiAhbV9jYXB0dXJlR3JvdXBOYW1lcy5pc0VtcHR5KCk7CisgICAgICAgIHJldHVybiBt
X3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKTsK
ICAgICB9CiAKICAgICBTdHJpbmcgZ2V0Q2FwdHVyZUdyb3VwTmFtZSh1bnNpZ25lZCBpKQogICAg
IHsKLSAgICAgICAgaWYgKCFpIHx8IG1fY2FwdHVyZUdyb3VwTmFtZXMuc2l6ZSgpIDw9IGkpCisg
ICAgICAgIGlmICghaSB8fCAhbV9yYXJlRGF0YSB8fCBtX3JhcmVEYXRhLT5tX2NhcHR1cmVHcm91
cE5hbWVzLnNpemUoKSA8PSBpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAg
ICByZXR1cm4gbV9jYXB0dXJlR3JvdXBOYW1lc1tpXTsKKyAgICAgICAgQVNTRVJUKG1fcmFyZURh
dGEpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9jYXB0dXJlR3JvdXBOYW1lc1tpXTsK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBzdWJwYXR0ZXJuRm9yTmFtZShTdHJpbmcgZ3JvdXBOYW1l
KQogICAgIHsKLSAgICAgICAgYXV0byBpdCA9IG1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5maW5k
KGdyb3VwTmFtZSk7Ci0gICAgICAgIGlmIChpdCA9PSBtX25hbWVkR3JvdXBUb1BhcmVuSW5kZXgu
ZW5kKCkpCisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBhdXRvIGl0ID0gbV9yYXJlRGF0YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LmZp
bmQoZ3JvdXBOYW1lKTsKKyAgICAgICAgaWYgKGl0ID09IG1fcmFyZURhdGEtPm1fbmFtZWRHcm91
cFRvUGFyZW5JbmRleC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1
cm4gaXQtPnZhbHVlOwogICAgIH0KQEAgLTE1NywxNSArMTYwLDI5IEBAIGNsYXNzIFJlZ0V4cCBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgbWF0Y2hDb21wYXJlV2l0aEludGVycHJl
dGVyKGNvbnN0IFN0cmluZyYsIGludCBzdGFydE9mZnNldCwgaW50KiBvZmZzZXRWZWN0b3IsIGlu
dCBqaXRSZXN1bHQpOwogI2VuZGlmCiAKKyAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBjcmVhdGVS
ZWdFeHBKSVRDb2RlSWZOZWNlc3NhcnkoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlZ0V4cEpJ
VENvZGUpCisgICAgICAgICAgICBtX3JlZ0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlh
cnI6OllhcnJDb2RlQmxvY2s+KCk7CisgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdl
dCgpOworICAgIH0KKworICAgIHN0cnVjdCBSYXJlRGF0YSB7CisgICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gbV9jYXB0dXJlR3Jv
dXBOYW1lczsKKyAgICAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBtX25hbWVkR3JvdXBU
b1BhcmVuSW5kZXg7CisgICAgfTsKKwogICAgIFN0cmluZyBtX3BhdHRlcm5TdHJpbmc7CiAgICAg
UmVnRXhwU3RhdGUgbV9zdGF0ZSB7IE5vdENvbXBpbGVkIH07CiAgICAgT3B0aW9uU2V0PFlhcnI6
OkZsYWdzPiBtX2ZsYWdzOwotICAgIENvbmN1cnJlbnRKU0xvY2sgbV9sb2NrOwogICAgIFlhcnI6
OkVycm9yQ29kZSBtX2NvbnN0cnVjdGlvbkVycm9yQ29kZSB7IFlhcnI6OkVycm9yQ29kZTo6Tm9F
cnJvciB9OwogICAgIHVuc2lnbmVkIG1fbnVtU3VicGF0dGVybnMgeyAwIH07Ci0gICAgVmVjdG9y
PFN0cmluZz4gbV9jYXB0dXJlR3JvdXBOYW1lczsKLSAgICBIYXNoTWFwPFN0cmluZywgdW5zaWdu
ZWQ+IG1fbmFtZWRHcm91cFRvUGFyZW5JbmRleDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8WWFycjo6
Qnl0ZWNvZGVQYXR0ZXJuPiBtX3JlZ0V4cEJ5dGVjb2RlOworI2lmIEVOQUJMRShZQVJSX0pJVCkK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8WWFycjo6WWFyckNvZGVCbG9jaz4gbV9yZWdFeHBKSVRDb2Rl
OworI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwogI2lm
IEVOQUJMRShSRUdFWFBfVFJBQ0lORykKICAgICBkb3VibGUgbV9ydE1hdGNoT25seVRvdGFsU3Vi
amVjdFN0cmluZ0xlbiB7IDAuMCB9OwogICAgIGRvdWJsZSBtX3J0TWF0Y2hUb3RhbFN1YmplY3RT
dHJpbmdMZW4geyAwLjAgfTsKQEAgLTE3NCwxMCArMTkxLDYgQEAgY2xhc3MgUmVnRXhwIGZpbmFs
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV9ydE1hdGNoQ2FsbENvdW50IHsgMCB9
OwogICAgIHVuc2lnbmVkIG1fcnRNYXRjaEZvdW5kQ291bnQgeyAwIH07CiAjZW5kaWYKLQotI2lm
IEVOQUJMRShZQVJSX0pJVCkKLSAgICBZYXJyOjpZYXJyQ29kZUJsb2NrIG1fcmVnRXhwSklUQ29k
ZTsKLSNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKaW5kZXggNTRiMTFiOTQ1MWUwYjgyOTgxNDIw
MmMxYjc1M2EyZTc1ZDQxYTQ0Zi4uNWNiMzMwZjYzMzk2MDJmMGMzMTRiZjMxMjZiODI0NWQ0OWFh
OTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cElubGluZXMu
aApAQCAtNzMsOSArNzMsMTAgQEAgQUxXQVlTX0lOTElORSBib29sIFJlZ0V4cDo6aGFzQ29kZUZv
cihZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAg
ICAgICBpZiAobV9zdGF0ZSAhPSBKSVRDb2RlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUu
aGFzOEJpdENvZGUoKSkpCisgICAgICAgIEFTU0VSVChtX3JlZ0V4cEpJVENvZGUpOworICAgICAg
ICBpZiAoKGNoYXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLT5oYXM4
Qml0Q29kZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoKGNoYXJT
aXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGUoKSkp
CisgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRD
b2RlLT5oYXMxNkJpdENvZGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAg
ICAgICAgIFVOVVNFRF9QQVJBTShjaGFyU2l6ZSk7CkBAIC0xNTYsOCArMTU3LDkgQEAgQUxXQVlT
X0lOTElORSBpbnQgUmVnRXhwOjptYXRjaElubGluZShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywg
dW5zaWduZWQgc3RhcnRPZmYKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgaWYgKG1fc3RhdGUg
PT0gSklUQ29kZSkgewogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9yZWdFeHBKSVRD
b2RlKTsKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICAg
ICAgICAgIFBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVyIHBhdHRlcm5Db250ZXh0QnVmZmVySG9s
ZGVyKHZtLCBtX3JlZ0V4cEpJVENvZGUudXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkpOworICAg
ICAgICAgICAgUGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIgcGF0dGVybkNvbnRleHRCdWZmZXJI
b2xkZXIodm0sIG1fcmVnRXhwSklUQ29kZS0+dXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkpOwog
CiAjZGVmaW5lIEVYVFJBX0pJVF9QQVJBTVMgICwgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIu
YnVmZmVyKCksIHBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVyLnNpemUoKQogI2Vsc2UKQEAgLTE2
NSw5ICsxNjcsOSBAQCBBTFdBWVNfSU5MSU5FIGludCBSZWdFeHA6Om1hdGNoSW5saW5lKFZNJiB2
bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFydE9mZgogI2VuZGlmCiAKICAgICAgICAg
ICAgIGlmIChzLmlzOEJpdCgpKQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklU
Q29kZS5leGVjdXRlKHMuY2hhcmFjdGVyczgoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9m
ZnNldFZlY3RvciBFWFRSQV9KSVRfUEFSQU1TKS5zdGFydDsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBtX3JlZ0V4cEpJVENvZGUtPmV4ZWN1dGUocy5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNl
dCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yIEVYVFJBX0pJVF9QQVJBTVMpLnN0YXJ0OwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS5l
eGVjdXRlKHMuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpLCBvZmZzZXRW
ZWN0b3IgRVhUUkFfSklUX1BBUkFNUykuc3RhcnQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
bV9yZWdFeHBKSVRDb2RlLT5leGVjdXRlKHMuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBz
Lmxlbmd0aCgpLCBvZmZzZXRWZWN0b3IgRVhUUkFfSklUX1BBUkFNUykuc3RhcnQ7CiAKICN1bmRl
ZiBFWFRSQV9KSVRfUEFSQU1TCiAgICAgICAgIH0KQEAgLTIzMCw5ICsyMzIsMTAgQEAgQUxXQVlT
X0lOTElORSBib29sIFJlZ0V4cDo6aGFzTWF0Y2hPbmx5Q29kZUZvcihZYXJyOjpZYXJyQ2hhclNp
emUgY2hhclNpemUpCiAjaWYgRU5BQkxFKFlBUlJfSklUKQogICAgICAgICBpZiAobV9zdGF0ZSAh
PSBKSVRDb2RlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICgoY2hhclNp
emUgPT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUuaGFzOEJpdENvZGVNYXRjaE9u
bHkoKSkpCisgICAgICAgIEFTU0VSVChtX3JlZ0V4cEpJVENvZGUpOworICAgICAgICBpZiAoKGNo
YXJTaXplID09IFlhcnI6OkNoYXI4KSAmJiAobV9yZWdFeHBKSVRDb2RlLT5oYXM4Qml0Q29kZU1h
dGNoT25seSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoKGNoYXJT
aXplID09IFlhcnI6OkNoYXIxNikgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXMxNkJpdENvZGVNYXRj
aE9ubHkoKSkpCisgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6Q2hhcjE2KSAmJiAobV9y
ZWdFeHBKSVRDb2RlLT5oYXMxNkJpdENvZGVNYXRjaE9ubHkoKSkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShjaGFyU2l6ZSk7CkBAIC0yNzcs
OCArMjgwLDkgQEAgQUxXQVlTX0lOTElORSBNYXRjaFJlc3VsdCBSZWdFeHA6Om1hdGNoSW5saW5l
KFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZAogCiAgICAgaWYgKG1fc3RhdGUgPT0g
SklUQ29kZSkgewogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9yZWdFeHBKSVRDb2Rl
KTsKICNpZiBFTkFCTEUoWUFSUl9KSVRfQUxMX1BBUkVOU19FWFBSRVNTSU9OUykKLSAgICAgICAg
ICAgIFBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVyIHBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVy
KHZtLCBtX3JlZ0V4cEpJVENvZGUudXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkpOworICAgICAg
ICAgICAgUGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xk
ZXIodm0sIG1fcmVnRXhwSklUQ29kZS0+dXNlc1BhdHRlcm5Db250ZXh0QnVmZmVyKCkpOwogCiAj
ZGVmaW5lIEVYVFJBX0pJVF9QQVJBTVMgICwgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIuYnVm
ZmVyKCksIHBhdHRlcm5Db250ZXh0QnVmZmVySG9sZGVyLnNpemUoKQogI2Vsc2UKQEAgLTI4Niw5
ICsyOTAsOSBAQCBBTFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2hJbmxpbmUo
Vk0mIHZtLCBjb25zdCBTdHJpbmcmIHMsIHVuc2lnbmVkCiAjZW5kaWYKIAogICAgICAgICAgICAg
aWYgKHMuaXM4Qml0KCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2Rl
LmV4ZWN1dGUocy5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSBFWFRSQV9K
SVRfUEFSQU1TKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENvZGUtPmV4
ZWN1dGUocy5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSBFWFRSQV9KSVRf
UEFSQU1TKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3Jl
Z0V4cEpJVENvZGUuZXhlY3V0ZShzLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgcy5sZW5n
dGgoKSBFWFRSQV9KSVRfUEFSQU1TKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4
cEpJVENvZGUtPmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3Ro
KCkgRVhUUkFfSklUX1BBUkFNUyk7CiAKICN1bmRlZiBFWFRSQV9KSVRfUEFSQU1TCiAgICAgICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365752</attachid>
            <date>2019-03-22 11:44:09 -0700</date>
            <delta_ts>2019-03-22 13:19:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196133-20190322114409.patch</filename>
            <type>text/plain</type>
            <size>14753</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZjRhMzk0MmUwZDY5NzFlNjc5NmRiZjdkMmZlYWY1YjFhMjRiNjFlLi43MDBlMmExZmU4MDRlZjQ4
YWNhOWYwZjkzYTI4Yjg2YTA4Zjc1NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxOS0wMy0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFNocmluayBzaXplb2YoUmVnRXhwKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk2MTMzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBhcHBsaWNhdGlvbnMgaGF2ZSBt
YW55IFJlZ0V4cCBjZWxscy4gQnV0IFJlZ0V4cCBjZWxscyBhcmUgdmVyeSBsYXJnZSAoMTQ0Qiku
CisgICAgICAgIFRoaXMgcGF0Y2ggcmVkdWNlcyB0aGUgc2l6ZSBmcm9tIDE0NEIgdG8gNDhCIGJ5
LAorCisgICAgICAgIDEuIEFsbG9jYXRlIFlhcnI6OllhcnJDb2RlQmxvY2sgaW4gbm9uLUdDIGhl
YXAuIFdlIGNhbiBhdm9pZCB0aGlzIGFsbG9jYXRpb24gaWYgSklUIGlzIGRpc2FibGVkLgorICAg
ICAgICAyLiBtX2NhcHR1cmVHcm91cE5hbWVzIGFuZCBtX25hbWVkR3JvdXBUb1BhcmVuSW5kZXgg
YXJlIG1vdmVkIHRvIFJhcmVEYXRhLiBUaGV5IGFyZSBvbmx5IHVzZWQgd2hlbiBSZWdFeHAgaGFz
IG5hbWVkIGNhcHR1cmUgZ3JvdXBzLgorCisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgor
ICAgICAgICAoSlNDOjpSZWdFeHA6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6UmVn
RXhwOjplc3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6UmVnRXhwOjpjb21waWxlKToKKyAg
ICAgICAgKEpTQzo6UmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSk6CisgICAgICAgIChKU0M6OlJl
Z0V4cDo6Y29tcGlsZU1hdGNoT25seSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6ZGVsZXRlQ29k
ZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6cHJpbnRUcmFjZURhdGEpOgorICAgICAgICAqIHJ1
bnRpbWUvUmVnRXhwLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OlJlZ0V4cDo6aGFzQ29kZUZvcik6CisgICAgICAgIChKU0M6OlJlZ0V4cDo6bWF0
Y2hJbmxpbmUpOgorICAgICAgICAoSlNDOjpSZWdFeHA6Omhhc01hdGNoT25seUNvZGVGb3IpOgor
CiAyMDE5LTAzLTIyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQ
bGFjYXRlIGV4Y2VwdGlvbiBjaGVjayB2YWxpZGF0aW9uIGluIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvRnVuY0xhc3RJbmRleE9mKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwLmNwcAppbmRleCA5M2FkMmU5YTZhOWRjNTc0MjlkMDgzZDBkNzI5YWFiMTU5MTE5ODQzLi5i
NzAzYTkyZDMwZTNiZGQzZjYxMDcwMzFlNWRjMjc2ZDgxM2M3N2RiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAKQEAgLTE3MSwxMiArMTcxLDE2IEBAIHZvaWQgUmVn
RXhwOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIFlhcnI6OllhcnJQYXR0ZXJuIHBhdHRlcm4obV9wYXR0ZXJuU3RyaW5nLCBtX2Zs
YWdzLCBtX2NvbnN0cnVjdGlvbkVycm9yQ29kZSwgdm0uc3RhY2tMaW1pdCgpKTsKLSAgICBpZiAo
IWlzVmFsaWQoKSkKKyAgICBpZiAoIWlzVmFsaWQoKSkgewogICAgICAgICBtX3N0YXRlID0gUGFy
c2VFcnJvcjsKLSAgICBlbHNlIHsKLSAgICAgICAgbV9udW1TdWJwYXR0ZXJucyA9IHBhdHRlcm4u
bV9udW1TdWJwYXR0ZXJuczsKLSAgICAgICAgbV9jYXB0dXJlR3JvdXBOYW1lcy5zd2FwKHBhdHRl
cm4ubV9jYXB0dXJlR3JvdXBOYW1lcyk7Ci0gICAgICAgIG1fbmFtZWRHcm91cFRvUGFyZW5JbmRl
eC5zd2FwKHBhdHRlcm4ubV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1fbnVtU3VicGF0dGVybnMgPSBwYXR0ZXJuLm1fbnVtU3VicGF0dGVy
bnM7CisgICAgaWYgKCFwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMuaXNFbXB0eSgpIHx8ICFw
YXR0ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9y
YXJlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UmFyZURhdGE+KCk7CisgICAgICAgIG1fcmFyZURh
dGEtPm1fY2FwdHVyZUdyb3VwTmFtZXMuc3dhcChwYXR0ZXJuLm1fY2FwdHVyZUdyb3VwTmFtZXMp
OworICAgICAgICBtX3JhcmVEYXRhLT5tX25hbWVkR3JvdXBUb1BhcmVuSW5kZXguc3dhcChwYXR0
ZXJuLm1fbmFtZWRHcm91cFRvUGFyZW5JbmRleCk7CiAgICAgfQogfQogCkBAIC0xOTQsNyArMTk4
LDggQEAgc2l6ZV90IFJlZ0V4cDo6ZXN0aW1hdGVkU2l6ZShKU0NlbGwqIGNlbGwsIFZNJiB2bSkK
ICAgICBSZWdFeHAqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxSZWdFeHAqPihjZWxsKTsKICAg
ICBzaXplX3QgcmVnZXhEYXRhU2l6ZSA9IHRoaXNPYmplY3QtPm1fcmVnRXhwQnl0ZWNvZGUgPyB0
aGlzT2JqZWN0LT5tX3JlZ0V4cEJ5dGVjb2RlLT5lc3RpbWF0ZWRTaXplSW5CeXRlcygpIDogMDsK
ICNpZiBFTkFCTEUoWUFSUl9KSVQpCi0gICAgcmVnZXhEYXRhU2l6ZSArPSB0aGlzT2JqZWN0LT5t
X3JlZ0V4cEpJVENvZGUuc2l6ZSgpOworICAgIGlmIChhdXRvKiBqaXRDb2RlID0gdGhpc09iamVj
dC0+bV9yZWdFeHBKSVRDb2RlLmdldCgpKQorICAgICAgICByZWdleERhdGFTaXplICs9IGppdENv
ZGUtPnNpemUoKTsKICNlbmRpZgogICAgIHJldHVybiBCYXNlOjplc3RpbWF0ZWRTaXplKGNlbGws
IHZtKSArIHJlZ2V4RGF0YVNpemU7CiB9CkBAIC0yMzcsNyArMjQyLDcgQEAgdm9pZCBSZWdFeHA6
OmJ5dGVDb2RlQ29tcGlsZUlmTmVjZXNzYXJ5KFZNKiB2bSkKIAogdm9pZCBSZWdFeHA6OmNvbXBp
bGUoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiB7Ci0gICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Vs
bExvY2soKSk7CiAgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4gcGF0dGVybihtX3BhdHRlcm5T
dHJpbmcsIG1fZmxhZ3MsIG1fY29uc3RydWN0aW9uRXJyb3JDb2RlLCB2bS0+c3RhY2tMaW1pdCgp
KTsKICAgICBpZiAoaGFzRXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJvckNvZGUpKSB7CkBAIC0yNTgs
OCArMjYzLDkgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGUoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNp
emUgY2hhclNpemUpCiAgICAgICAgICYmICFwYXR0ZXJuLm1fY29udGFpbnNCYWNrcmVmZXJlbmNl
cwogI2VuZGlmCiAgICAgICAgICkgewotICAgICAgICBZYXJyOjpqaXRDb21waWxlKHBhdHRlcm4s
IG1fcGF0dGVyblN0cmluZywgY2hhclNpemUsIHZtLCBtX3JlZ0V4cEpJVENvZGUpOwotICAgICAg
ICBpZiAoIW1fcmVnRXhwSklUQ29kZS5mYWlsdXJlUmVhc29uKCkpIHsKKyAgICAgICAgYXV0byYg
aml0Q29kZSA9IGNyZWF0ZVJlZ0V4cEpJVENvZGVJZk5lY2Vzc2FyeSgpOworICAgICAgICBZYXJy
OjpqaXRDb21waWxlKHBhdHRlcm4sIG1fcGF0dGVyblN0cmluZywgY2hhclNpemUsIHZtLCBqaXRD
b2RlKTsKKyAgICAgICAgaWYgKCFqaXRDb2RlLmZhaWx1cmVSZWFzb24oKSkgewogICAgICAgICAg
ICAgbV9zdGF0ZSA9IEpJVENvZGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTI4Myw3ICsyODksNyBAQCBpbnQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNvbnN0IFN0cmluZyYg
cywgdW5zaWduZWQgc3RhcnRPZmZzZXQsIFZlY3RvcjxpbnQ+JiBvdgogYm9vbCBSZWdFeHA6Om1h
dGNoQ29uY3VycmVudGx5KAogICAgIFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgaW50JiBwb3NpdGlvbiwgVmVjdG9yPGludD4mIG92ZWN0b3IpCiB7Ci0gICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soY2VsbExvY2soKSk7CiAKICAgICBpZiAoIWhhc0NvZGVGb3Iocy5pczhCaXQoKSA/IFlh
cnI6OkNoYXI4IDogWWFycjo6Q2hhcjE2KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjk0
LDcgKzMwMCw3IEBAIGJvb2wgUmVnRXhwOjptYXRjaENvbmN1cnJlbnRseSgKIAogdm9pZCBSZWdF
eHA6OmNvbXBpbGVNYXRjaE9ubHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUp
CiB7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CiAgICAgCiAgICAgWWFycjo6WWFyclBhdHRlcm4g
cGF0dGVybihtX3BhdHRlcm5TdHJpbmcsIG1fZmxhZ3MsIG1fY29uc3RydWN0aW9uRXJyb3JDb2Rl
LCB2bS0+c3RhY2tMaW1pdCgpKTsKICAgICBpZiAoaGFzRXJyb3IobV9jb25zdHJ1Y3Rpb25FcnJv
ckNvZGUpKSB7CkBAIC0zMTUsOCArMzIxLDkgQEAgdm9pZCBSZWdFeHA6OmNvbXBpbGVNYXRjaE9u
bHkoVk0qIHZtLCBZYXJyOjpZYXJyQ2hhclNpemUgY2hhclNpemUpCiAgICAgICAgICYmICFwYXR0
ZXJuLm1fY29udGFpbnNCYWNrcmVmZXJlbmNlcwogI2VuZGlmCiAgICAgICAgICkgewotICAgICAg
ICBZYXJyOjpqaXRDb21waWxlKHBhdHRlcm4sIG1fcGF0dGVyblN0cmluZywgY2hhclNpemUsIHZt
LCBtX3JlZ0V4cEpJVENvZGUsIFlhcnI6Ok1hdGNoT25seSk7Ci0gICAgICAgIGlmICghbV9yZWdF
eHBKSVRDb2RlLmZhaWx1cmVSZWFzb24oKSkgeworICAgICAgICBhdXRvJiBqaXRDb2RlID0gY3Jl
YXRlUmVnRXhwSklUQ29kZUlmTmVjZXNzYXJ5KCk7CisgICAgICAgIFlhcnI6OmppdENvbXBpbGUo
cGF0dGVybiwgbV9wYXR0ZXJuU3RyaW5nLCBjaGFyU2l6ZSwgdm0sIGppdENvZGUsIFlhcnI6Ok1h
dGNoT25seSk7CisgICAgICAgIGlmICghaml0Q29kZS5mYWlsdXJlUmVhc29uKCkpIHsKICAgICAg
ICAgICAgIG1fc3RhdGUgPSBKSVRDb2RlOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0zMzksNyArMzQ2LDcgQEAgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaChWTSYgdm0sIGNv
bnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQpCiAKIGJvb2wgUmVnRXhwOjptYXRj
aENvbmN1cnJlbnRseShWTSYgdm0sIGNvbnN0IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIE1hdGNoUmVzdWx0JiByZXN1bHQpCiB7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOworICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2VsbExvY2soKSk7CiAKICAg
ICBpZiAoIWhhc01hdGNoT25seUNvZGVGb3Iocy5pczhCaXQoKSA/IFlhcnI6OkNoYXI4IDogWWFy
cjo6Q2hhcjE2KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzUwLDEzICszNTcsMTQgQEAg
Ym9vbCBSZWdFeHA6Om1hdGNoQ29uY3VycmVudGx5KFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgTWEKIAogdm9pZCBSZWdFeHA6OmRlbGV0ZUNvZGUoKQogewot
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKGNlbGxMb2NrKCkpOwogICAgIAogICAgIGlmICghaGFzQ29kZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9zdGF0ZSA9IE5vdENvbXBpbGVkOwogI2lmIEVOQUJMRShZQVJSX0pJ
VCkKLSAgICBtX3JlZ0V4cEpJVENvZGUuY2xlYXIoKTsKKyAgICBpZiAobV9yZWdFeHBKSVRDb2Rl
KQorICAgICAgICBtX3JlZ0V4cEpJVENvZGUtPmNsZWFyKCk7CiAjZW5kaWYKICAgICBtX3JlZ0V4
cEJ5dGVjb2RlID0gbnVsbHB0cjsKIH0KQEAgLTQyNiwyMyArNDM0LDI5IEBAIHZvaWQgUmVnRXhw
OjptYXRjaENvbXBhcmVXaXRoSW50ZXJwcmV0ZXIoY29uc3QgU3RyaW5nJiBzLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCoKICAgICAgICAgc25wcmludGYoZm9ybWF0dGVkUGF0dGVybiwgNDEsIChwYXR0
TGVuIDw9IDM4KSA/ICIvJS4zOHMvIiA6ICIvJS4zNnMuLi4iLCByYXdQYXR0ZXJuKTsKIAogI2lm
IEVOQUJMRShZQVJSX0pJVCkKLSAgICAgICAgWWFycjo6WWFyckNvZGVCbG9jayYgY29kZUJsb2Nr
ID0gbV9yZWdFeHBKSVRDb2RlOwotCiAgICAgICAgIGNvbnN0IHNpemVfdCBqaXRBZGRyU2l6ZSA9
IDIwOwogICAgICAgICBjaGFyIGppdDhCaXRNYXRjaE9ubHlBZGRyW2ppdEFkZHJTaXplXTsKICAg
ICAgICAgY2hhciBqaXQxNkJpdE1hdGNoT25seUFkZHJbaml0QWRkclNpemVdOwogICAgICAgICBj
aGFyIGppdDhCaXRNYXRjaEFkZHJbaml0QWRkclNpemVdOwogICAgICAgICBjaGFyIGppdDE2Qml0
TWF0Y2hBZGRyW2ppdEFkZHJTaXplXTsKLSAgICAgICAgaWYgKG1fc3RhdGUgPT0gQnl0ZUNvZGUp
IHsKKyAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgICAgIGNhc2UgUGFyc2VFcnJvcjoK
KyAgICAgICAgY2FzZSBOb3RDb21waWxlZDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEJ5dGVDb2RlOgogICAgICAgICAgICAgc25wcmludGYoaml0OEJpdE1hdGNoT25seUFkZHIs
IGppdEFkZHJTaXplLCAiZmFsbGJhY2sgICAgIik7CiAgICAgICAgICAgICBzbnByaW50ZihqaXQx
NkJpdE1hdGNoT25seUFkZHIsIGppdEFkZHJTaXplLCAiLS0tLSAgICAgICIpOwogICAgICAgICAg
ICAgc25wcmludGYoaml0OEJpdE1hdGNoQWRkciwgaml0QWRkclNpemUsICJmYWxsYmFjayAgICAi
KTsKICAgICAgICAgICAgIHNucHJpbnRmKGppdDE2Qml0TWF0Y2hBZGRyLCBqaXRBZGRyU2l6ZSwg
Ii0tLS0gICAgICAiKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEpJVENvZGU6IHsKKyAgICAgICAgICAgIFlhcnI6OllhcnJDb2RlQmxvY2smIGNv
ZGVCbG9jayA9ICptX3JlZ0V4cEpJVENvZGUuZ2V0KCk7CiAgICAgICAgICAgICBzbnByaW50Zihq
aXQ4Qml0TWF0Y2hPbmx5QWRkciwgaml0QWRkclNpemUsICIweCUwMTRseCIsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pihjb2RlQmxvY2suZ2V0OEJpdE1hdGNoT25seUFkZHIoKSkpOwogICAg
ICAgICAgICAgc25wcmludGYoaml0MTZCaXRNYXRjaE9ubHlBZGRyLCBqaXRBZGRyU2l6ZSwgIjB4
JTAxNGx4IiwgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGNvZGVCbG9jay5nZXQxNkJpdE1h
dGNoT25seUFkZHIoKSkpOwogICAgICAgICAgICAgc25wcmludGYoaml0OEJpdE1hdGNoQWRkciwg
aml0QWRkclNpemUsICIweCUwMTRseCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihjb2Rl
QmxvY2suZ2V0OEJpdE1hdGNoQWRkcigpKSk7CiAgICAgICAgICAgICBzbnByaW50ZihqaXQxNkJp
dE1hdGNoQWRkciwgaml0QWRkclNpemUsICIweCUwMTRseCIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90Pihjb2RlQmxvY2suZ2V0MTZCaXRNYXRjaEFkZHIoKSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgY29uc3QgY2hhciogaml0
OEJpdE1hdGNoT25seUFkZHIgPSAiSklUIE9mZiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5oCmluZGV4IDdiMDhhYjdlYzE3ZjE4ODVlYmE2MTA0Y2JlMjZkY2E5YmUwMTA4YWQu
LmM5OWI3NDI3MTI2NjM5ZGEyZjdkNWViNzZkMTY5YWU4MDI1ZjYyYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCkBAIC04OCwyMCArODgsMjMgQEAgY2xhc3MgUmVnRXhw
IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBib29sIGhhc05hbWVkQ2FwdHVyZXMoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuICFtX2NhcHR1cmVHcm91cE5hbWVzLmlzRW1wdHkoKTsKKyAg
ICAgICAgcmV0dXJuIG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fY2FwdHVyZUdyb3VwTmFt
ZXMuaXNFbXB0eSgpOwogICAgIH0KIAogICAgIFN0cmluZyBnZXRDYXB0dXJlR3JvdXBOYW1lKHVu
c2lnbmVkIGkpCiAgICAgewotICAgICAgICBpZiAoIWkgfHwgbV9jYXB0dXJlR3JvdXBOYW1lcy5z
aXplKCkgPD0gaSkKKyAgICAgICAgaWYgKCFpIHx8ICFtX3JhcmVEYXRhIHx8IG1fcmFyZURhdGEt
Pm1fY2FwdHVyZUdyb3VwTmFtZXMuc2l6ZSgpIDw9IGkpCiAgICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgICAgIHJldHVybiBtX2NhcHR1cmVHcm91cE5hbWVzW2ldOworICAgICAgICBB
U1NFUlQobV9yYXJlRGF0YSk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2NhcHR1cmVH
cm91cE5hbWVzW2ldOwogICAgIH0KIAogICAgIHVuc2lnbmVkIHN1YnBhdHRlcm5Gb3JOYW1lKFN0
cmluZyBncm91cE5hbWUpCiAgICAgewotICAgICAgICBhdXRvIGl0ID0gbV9uYW1lZEdyb3VwVG9Q
YXJlbkluZGV4LmZpbmQoZ3JvdXBOYW1lKTsKLSAgICAgICAgaWYgKGl0ID09IG1fbmFtZWRHcm91
cFRvUGFyZW5JbmRleC5lbmQoKSkKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGF1dG8gaXQgPSBtX3JhcmVEYXRhLT5tX25hbWVkR3JvdXBU
b1BhcmVuSW5kZXguZmluZChncm91cE5hbWUpOworICAgICAgICBpZiAoaXQgPT0gbV9yYXJlRGF0
YS0+bV9uYW1lZEdyb3VwVG9QYXJlbkluZGV4LmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
CiAgICAgICAgIHJldHVybiBpdC0+dmFsdWU7CiAgICAgfQpAQCAtMTU3LDE1ICsxNjAsMzEgQEAg
Y2xhc3MgUmVnRXhwIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBtYXRjaENvbXBh
cmVXaXRoSW50ZXJwcmV0ZXIoY29uc3QgU3RyaW5nJiwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQqIG9m
ZnNldFZlY3RvciwgaW50IGppdFJlc3VsdCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShZQVJSX0pJ
VCkKKyAgICBZYXJyOjpZYXJyQ29kZUJsb2NrJiBjcmVhdGVSZWdFeHBKSVRDb2RlSWZOZWNlc3Nh
cnkoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlZ0V4cEpJVENvZGUpCisgICAgICAgICAgICBt
X3JlZ0V4cEpJVENvZGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFlhcnI6OllhcnJDb2RlQmxvY2s+KCk7
CisgICAgICAgIHJldHVybiAqbV9yZWdFeHBKSVRDb2RlLmdldCgpOworICAgIH0KKyNlbmRpZgor
CisgICAgc3RydWN0IFJhcmVEYXRhIHsKKyAgICAgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxM
T0NBVEVEOworICAgICAgICBWZWN0b3I8U3RyaW5nPiBtX2NhcHR1cmVHcm91cE5hbWVzOworICAg
ICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fbmFtZWRHcm91cFRvUGFyZW5JbmRleDsK
KyAgICB9OworCiAgICAgU3RyaW5nIG1fcGF0dGVyblN0cmluZzsKICAgICBSZWdFeHBTdGF0ZSBt
X3N0YXRlIHsgTm90Q29tcGlsZWQgfTsKICAgICBPcHRpb25TZXQ8WWFycjo6RmxhZ3M+IG1fZmxh
Z3M7Ci0gICAgQ29uY3VycmVudEpTTG9jayBtX2xvY2s7CiAgICAgWWFycjo6RXJyb3JDb2RlIG1f
Y29uc3RydWN0aW9uRXJyb3JDb2RlIHsgWWFycjo6RXJyb3JDb2RlOjpOb0Vycm9yIH07CiAgICAg
dW5zaWduZWQgbV9udW1TdWJwYXR0ZXJucyB7IDAgfTsKLSAgICBWZWN0b3I8U3RyaW5nPiBtX2Nh
cHR1cmVHcm91cE5hbWVzOwotICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9uYW1lZEdy
b3VwVG9QYXJlbkluZGV4OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxZYXJyOjpCeXRlY29kZVBhdHRl
cm4+IG1fcmVnRXhwQnl0ZWNvZGU7CisjaWYgRU5BQkxFKFlBUlJfSklUKQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxZYXJyOjpZYXJyQ29kZUJsb2NrPiBtX3JlZ0V4cEpJVENvZGU7CisjZW5kaWYKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CiAjaWYgRU5BQkxFKFJFR0VY
UF9UUkFDSU5HKQogICAgIGRvdWJsZSBtX3J0TWF0Y2hPbmx5VG90YWxTdWJqZWN0U3RyaW5nTGVu
IHsgMC4wIH07CiAgICAgZG91YmxlIG1fcnRNYXRjaFRvdGFsU3ViamVjdFN0cmluZ0xlbiB7IDAu
MCB9OwpAQCAtMTc0LDEwICsxOTMsNiBAQCBjbGFzcyBSZWdFeHAgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICB1bnNpZ25lZCBtX3J0TWF0Y2hDYWxsQ291bnQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9ydE1hdGNoRm91bmRDb3VudCB7IDAgfTsKICNlbmRpZgotCi0jaWYgRU5BQkxFKFlBUlJf
SklUKQotICAgIFlhcnI6OllhcnJDb2RlQmxvY2sgbV9yZWdFeHBKSVRDb2RlOwotI2VuZGlmCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cElubGluZXMuaAppbmRleCA1NGIxMWI5NDUxZTBiODI5ODE0MjAyYzFiNzUzYTJlNzVk
NDFhNDRmLi41Y2IzMzBmNjMzOTYwMmYwYzMxNGJmMzEyNmI4MjQ1ZDQ5YWE5N2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwSW5saW5lcy5oCkBAIC03Myw5ICs3
MywxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgUmVnRXhwOjpoYXNDb2RlRm9yKFlhcnI6OllhcnJD
aGFyU2l6ZSBjaGFyU2l6ZSkKICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0
YXRlICE9IEpJVENvZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKChj
aGFyU2l6ZSA9PSBZYXJyOjpDaGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZSgp
KSkKKyAgICAgICAgQVNTRVJUKG1fcmVnRXhwSklUQ29kZSk7CisgICAgICAgIGlmICgoY2hhclNp
emUgPT0gWWFycjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUtPmhhczhCaXRDb2RlKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6
Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZSgpKSkKKyAgICAgICAgaWYg
KChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUtPmhhczE2Qml0
Q29kZSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICAgICAgVU5VU0VE
X1BBUkFNKGNoYXJTaXplKTsKQEAgLTE1Niw4ICsxNTcsOSBAQCBBTFdBWVNfSU5MSU5FIGludCBS
ZWdFeHA6Om1hdGNoSW5saW5lKFZNJiB2bSwgY29uc3QgU3RyaW5nJiBzLCB1bnNpZ25lZCBzdGFy
dE9mZgogI2lmIEVOQUJMRShZQVJSX0pJVCkKICAgICBpZiAobV9zdGF0ZSA9PSBKSVRDb2RlKSB7
CiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3JlZ0V4cEpJVENvZGUpOwogI2lmIEVO
QUJMRShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQotICAgICAgICAgICAgUGF0dGVy
bkNvbnRleHRCdWZmZXJIb2xkZXIgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIodm0sIG1fcmVn
RXhwSklUQ29kZS51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSk7CisgICAgICAgICAgICBQYXR0
ZXJuQ29udGV4dEJ1ZmZlckhvbGRlciBwYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlcih2bSwgbV9y
ZWdFeHBKSVRDb2RlLT51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSk7CiAKICNkZWZpbmUgRVhU
UkFfSklUX1BBUkFNUyAgLCBwYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlci5idWZmZXIoKSwgcGF0
dGVybkNvbnRleHRCdWZmZXJIb2xkZXIuc2l6ZSgpCiAjZWxzZQpAQCAtMTY1LDkgKzE2Nyw5IEBA
IEFMV0FZU19JTkxJTkUgaW50IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoVk0mIHZtLCBjb25zdCBTdHJp
bmcmIHMsIHVuc2lnbmVkIHN0YXJ0T2ZmCiAjZW5kaWYKIAogICAgICAgICAgICAgaWYgKHMuaXM4
Qml0KCkpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUo
cy5jaGFyYWN0ZXJzOCgpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSwgb2Zmc2V0VmVjdG9yIEVY
VFJBX0pJVF9QQVJBTVMpLnN0YXJ0OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhw
SklUQ29kZS0+ZXhlY3V0ZShzLmNoYXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgp
LCBvZmZzZXRWZWN0b3IgRVhUUkFfSklUX1BBUkFNUykuc3RhcnQ7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbV9yZWdFeHBKSVRDb2RlLmV4ZWN1dGUocy5jaGFy
YWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9mZnNldFZlY3RvciBFWFRSQV9K
SVRfUEFSQU1TKS5zdGFydDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENv
ZGUtPmV4ZWN1dGUocy5jaGFyYWN0ZXJzMTYoKSwgc3RhcnRPZmZzZXQsIHMubGVuZ3RoKCksIG9m
ZnNldFZlY3RvciBFWFRSQV9KSVRfUEFSQU1TKS5zdGFydDsKIAogI3VuZGVmIEVYVFJBX0pJVF9Q
QVJBTVMKICAgICAgICAgfQpAQCAtMjMwLDkgKzIzMiwxMCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
UmVnRXhwOjpoYXNNYXRjaE9ubHlDb2RlRm9yKFlhcnI6OllhcnJDaGFyU2l6ZSBjaGFyU2l6ZSkK
ICNpZiBFTkFCTEUoWUFSUl9KSVQpCiAgICAgICAgIGlmIChtX3N0YXRlICE9IEpJVENvZGUpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpD
aGFyOCkgJiYgKG1fcmVnRXhwSklUQ29kZS5oYXM4Qml0Q29kZU1hdGNoT25seSgpKSkKKyAgICAg
ICAgQVNTRVJUKG1fcmVnRXhwSklUQ29kZSk7CisgICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFy
cjo6Q2hhcjgpICYmIChtX3JlZ0V4cEpJVENvZGUtPmhhczhCaXRDb2RlTWF0Y2hPbmx5KCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmICgoY2hhclNpemUgPT0gWWFycjo6
Q2hhcjE2KSAmJiAobV9yZWdFeHBKSVRDb2RlLmhhczE2Qml0Q29kZU1hdGNoT25seSgpKSkKKyAg
ICAgICAgaWYgKChjaGFyU2l6ZSA9PSBZYXJyOjpDaGFyMTYpICYmIChtX3JlZ0V4cEpJVENvZGUt
PmhhczE2Qml0Q29kZU1hdGNoT25seSgpKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2Vs
c2UKICAgICAgICAgVU5VU0VEX1BBUkFNKGNoYXJTaXplKTsKQEAgLTI3Nyw4ICsyODAsOSBAQCBB
TFdBWVNfSU5MSU5FIE1hdGNoUmVzdWx0IFJlZ0V4cDo6bWF0Y2hJbmxpbmUoVk0mIHZtLCBjb25z
dCBTdHJpbmcmIHMsIHVuc2lnbmVkCiAKICAgICBpZiAobV9zdGF0ZSA9PSBKSVRDb2RlKSB7CiAg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX3JlZ0V4cEpJVENvZGUpOwogI2lmIEVOQUJM
RShZQVJSX0pJVF9BTExfUEFSRU5TX0VYUFJFU1NJT05TKQotICAgICAgICAgICAgUGF0dGVybkNv
bnRleHRCdWZmZXJIb2xkZXIgcGF0dGVybkNvbnRleHRCdWZmZXJIb2xkZXIodm0sIG1fcmVnRXhw
SklUQ29kZS51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSk7CisgICAgICAgICAgICBQYXR0ZXJu
Q29udGV4dEJ1ZmZlckhvbGRlciBwYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlcih2bSwgbV9yZWdF
eHBKSVRDb2RlLT51c2VzUGF0dGVybkNvbnRleHRCdWZmZXIoKSk7CiAKICNkZWZpbmUgRVhUUkFf
SklUX1BBUkFNUyAgLCBwYXR0ZXJuQ29udGV4dEJ1ZmZlckhvbGRlci5idWZmZXIoKSwgcGF0dGVy
bkNvbnRleHRCdWZmZXJIb2xkZXIuc2l6ZSgpCiAjZWxzZQpAQCAtMjg2LDkgKzI5MCw5IEBAIEFM
V0FZU19JTkxJTkUgTWF0Y2hSZXN1bHQgUmVnRXhwOjptYXRjaElubGluZShWTSYgdm0sIGNvbnN0
IFN0cmluZyYgcywgdW5zaWduZWQKICNlbmRpZgogCiAgICAgICAgICAgICBpZiAocy5pczhCaXQo
KSkKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtX3JlZ0V4cEpJVENvZGUuZXhlY3V0ZShzLmNo
YXJhY3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpIEVYVFJBX0pJVF9QQVJBTVMpOwor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS0+ZXhlY3V0ZShzLmNoYXJh
Y3RlcnM4KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpIEVYVFJBX0pJVF9QQVJBTVMpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS5l
eGVjdXRlKHMuY2hhcmFjdGVyczE2KCksIHN0YXJ0T2Zmc2V0LCBzLmxlbmd0aCgpIEVYVFJBX0pJ
VF9QQVJBTVMpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fcmVnRXhwSklUQ29kZS0+ZXhl
Y3V0ZShzLmNoYXJhY3RlcnMxNigpLCBzdGFydE9mZnNldCwgcy5sZW5ndGgoKSBFWFRSQV9KSVRf
UEFSQU1TKTsKIAogI3VuZGVmIEVYVFJBX0pJVF9QQVJBTVMKICAgICAgICAgfQo=
</data>
<flag name="review"
          id="382181"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>