<?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>37469</bug_id>
          
          <creation_ts>2010-04-12 14:36:49 -0700</creation_ts>
          <short_desc>[RenderStyle Cleanup] Clean up ShadowData</short_desc>
          <delta_ts>2010-04-12 15:07:25 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>211730</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-12 14:36:49 -0700</bug_when>
    <thetext>Clean up ShadowData to be properly encapsulated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211731</commentid>
    <comment_count>1</comment_count>
      <attachid>53188</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-12 14:37:44 -0700</bug_when>
    <thetext>Created attachment 53188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211733</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-04-12 14:53:49 -0700</bug_when>
    <thetext>Fixed in r57482.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211734</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-12 15:07:25 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/57482 might have broken Chromium Mac Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53188</attachid>
            <date>2010-04-12 14:37:44 -0700</date>
            <delta_ts>2010-04-12 14:41:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>37365</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzQ4MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMTAtMDQtMTIgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzQ2OSwgY2xlYW4gdXAgU2hhZG93
RGF0YSB0byBiZSBlbmNhcHN1bGF0ZWQgcHJvcGVybHkuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3cpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAg
ICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6UHJvcGVydHlXcmFwcGVyU2hh
ZG93KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6ZXF1YWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlclNoYWRvdzo6YmxlbmQpOgorICAgICAg
ICAqIHBhZ2UvbWFjL0ZyYW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmZvbnRB
dHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAqIHJlbmRlcmluZy9FbGxpcHNp
c0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGxpcHNpc0JveDo6cGFpbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OnBsYWNlQm94ZXNIb3Jpem9udGFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6SW5s
aW5lRmxvd0JveDo6Y29tcHV0ZVZlcnRpY2FsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRUZXh0RGVjb3JhdGlvbnMpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50VGV4dFdpdGhTaGFk
b3dzKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
aW50Qm94U2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3RzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6YWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3cpOgorICAgICAgICAqIHJlbmRlcmluZy9T
VkdJbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lubGluZVRleHRCb3g6
OnBhaW50Q2hhcmFjdGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpzZXRUZXh0U2hhZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpzZXRCb3hTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU3R5bGU6OmdldEJveFNoYWRvd0V4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dHlsZTo6Z2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZTo6Z2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxh
Z3M6OnRleHRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OmJveFNo
YWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldFNWR1NoYWRvd0V4dGVudCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1NoYWRvd0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6U2hh
ZG93RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
U2hhZG93RGF0YTo6U2hhZG93RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp+
U2hhZG93RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjp4KToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd0RhdGE6OnkpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6
Ymx1cik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dEYXRhOjpzcHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhZG93RGF0YTo6c3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0
YTo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93RGF0YTo6bmV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpTaGFkb3dEYXRhOjpzZXROZXh0KToKKwogMjAxMC0wNC0xMiAgRGF2aWQgSHlh
dHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZp
c2lvbiA1NzQ3OSkKKysrIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU2NCwxMyArNTY0LDEzIEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBz
dGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwotICAgIGZvciAo
Y29uc3QgU2hhZG93RGF0YSogcyA9IHNoYWRvdzsgczsgcyA9IHMtPm5leHQpIHsKLSAgICAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
LT54LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB5ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzLT55LCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVy
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShzLT5ibHVyLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYKTsKLSAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzcHJlYWQgPSBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5VGV4dFNoYWRvdyA/IDAgOiBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3JlYXRlKHMtPnNwcmVhZCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Ci0gICAgICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGUgPSBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5
VGV4dFNoYWRvdyB8fCBzLT5zdHlsZSA9PSBOb3JtYWwgPyAwIDogQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVJbnNldCk7Ci0gICAgICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gY29sb3IgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3Iocy0+Y29s
b3IucmdiKCkpOworICAgIGZvciAoY29uc3QgU2hhZG93RGF0YSogcyA9IHNoYWRvdzsgczsgcyA9
IHMtPm5leHQoKSkgeworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHggPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHMtPngoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocy0+eSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
LT5ibHVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBSZWZQdHI8Q1NT
UHJpbWl0aXZlVmFsdWU+IHNwcmVhZCA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlUZXh0U2hh
ZG93ID8gMCA6IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUocy0+c3ByZWFkKCksIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0
eWxlID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cgfHwgcy0+c3R5bGUoKSA9
PSBOb3JtYWwgPyAwIDogQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFs
dWVJbnNldCk7CisgICAgICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29sb3IgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlQ29sb3Iocy0+Y29sb3IoKS5yZ2IoKSk7CiAgICAgICAgIGxp
c3QtPnByZXBlbmQoU2hhZG93VmFsdWU6OmNyZWF0ZSh4LnJlbGVhc2UoKSwgeS5yZWxlYXNlKCks
IGJsdXIucmVsZWFzZSgpLCBzcHJlYWQucmVsZWFzZSgpLCBzdHlsZS5yZWxlYXNlKCksIGNvbG9y
LnJlbGVhc2UoKSkpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAJKHJldmlzaW9uIDU3NDc5KQor
KysgV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1LDkgKzEzNSw5IEBAIHN0YXRpYyBpbmxpbmUgU2hhZG93U3R5bGUgYmxlbmRGdW5j
KGNvbnMKIHN0YXRpYyBpbmxpbmUgU2hhZG93RGF0YSogYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlv
bkJhc2UqIGFuaW0sIGNvbnN0IFNoYWRvd0RhdGEqIGZyb20sIGNvbnN0IFNoYWRvd0RhdGEqIHRv
LCBkb3VibGUgcHJvZ3Jlc3MpCiB7ICAKICAgICBBU1NFUlQoZnJvbSAmJiB0byk7Ci0gICAgcmV0
dXJuIG5ldyBTaGFkb3dEYXRhKGJsZW5kRnVuYyhhbmltLCBmcm9tLT54LCB0by0+eCwgcHJvZ3Jl
c3MpLCBibGVuZEZ1bmMoYW5pbSwgZnJvbS0+eSwgdG8tPnksIHByb2dyZXNzKSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5ibHVyLCB0by0+Ymx1ciwg
cHJvZ3Jlc3MpLCBibGVuZEZ1bmMoYW5pbSwgZnJvbS0+c3ByZWFkLCB0by0+c3ByZWFkLCBwcm9n
cmVzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5z
dHlsZSwgdG8tPnN0eWxlLCBwcm9ncmVzcyksIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5jb2xvciwg
dG8tPmNvbG9yLCBwcm9ncmVzcykpOworICAgIHJldHVybiBuZXcgU2hhZG93RGF0YShibGVuZEZ1
bmMoYW5pbSwgZnJvbS0+eCgpLCB0by0+eCgpLCBwcm9ncmVzcyksIGJsZW5kRnVuYyhhbmltLCBm
cm9tLT55KCksIHRvLT55KCksIHByb2dyZXNzKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGJsZW5kRnVuYyhhbmltLCBmcm9tLT5ibHVyKCksIHRvLT5ibHVyKCksIHByb2dyZXNzKSwgYmxl
bmRGdW5jKGFuaW0sIGZyb20tPnNwcmVhZCgpLCB0by0+c3ByZWFkKCksIHByb2dyZXNzKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmxlbmRGdW5jKGFuaW0sIGZyb20tPnN0eWxlKCksIHRv
LT5zdHlsZSgpLCBwcm9ncmVzcyksIGJsZW5kRnVuYyhhbmltLCBmcm9tLT5jb2xvcigpLCB0by0+
Y29sb3IoKSwgcHJvZ3Jlc3MpKTsKIH0KIAogc3RhdGljIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRp
b25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb25zJiBmcm9tLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0bywgZG91YmxlIHBy
b2dyZXNzKQpAQCAtMjk2LDE4ICsyOTYsMTkgQEAgcHVibGljOgogfTsKICNlbmRpZiAvLyBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLWNsYXNzIFByb3BlcnR5V3JhcHBlclNoYWRvdyA6
IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8U2hhZG93RGF0YSo+IHsKK2NsYXNzIFByb3Bl
cnR5V3JhcHBlclNoYWRvdyA6IHB1YmxpYyBQcm9wZXJ0eVdyYXBwZXJCYXNlIHsKIHB1YmxpYzoK
LSAgICBQcm9wZXJ0eVdyYXBwZXJTaGFkb3coaW50IHByb3AsIFNoYWRvd0RhdGEqIChSZW5kZXJT
dHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKFNoYWRv
d0RhdGEqLCBib29sKSkKLSAgICAgICAgOiBQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8U2hhZG93RGF0
YSo+KHByb3AsIGdldHRlcikKKyAgICBQcm9wZXJ0eVdyYXBwZXJTaGFkb3coaW50IHByb3AsIGNv
bnN0IFNoYWRvd0RhdGEqIChSZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwgdm9pZCAoUmVu
ZGVyU3R5bGU6OipzZXR0ZXIpKFNoYWRvd0RhdGEqLCBib29sKSkKKyAgICAgICAgOiBQcm9wZXJ0
eVdyYXBwZXJCYXNlKHByb3ApCisgICAgICAgICwgbV9nZXR0ZXIoZ2V0dGVyKQogICAgICAgICAs
IG1fc2V0dGVyKHNldHRlcikKICAgICB7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGVxdWFs
cyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIpIGNvbnN0CiAgICAg
ewotICAgICAgICBTaGFkb3dEYXRhKiBzaGFkb3dBID0gKGEtPiptX2dldHRlcikoKTsKLSAgICAg
ICAgU2hhZG93RGF0YSogc2hhZG93QiA9IChiLT4qbV9nZXR0ZXIpKCk7CisgICAgICAgIGNvbnN0
IFNoYWRvd0RhdGEqIHNoYWRvd0EgPSAoYS0+Km1fZ2V0dGVyKSgpOworICAgICAgICBjb25zdCBT
aGFkb3dEYXRhKiBzaGFkb3dCID0gKGItPiptX2dldHRlcikoKTsKICAgICAgICAgCiAgICAgICAg
IHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBpZiAoIXNoYWRvd0EgJiYgIXNoYWRvd0IpICAg
Ly8gZW5kIG9mIGJvdGggbGlzdHMKQEAgLTMxOSw4ICszMjAsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBpZiAoKnNoYWRvd0EgIT0gKnNoYWRvd0IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKLSAgICAgICAgICAgIHNoYWRvd0EgPSBzaGFkb3dBLT5uZXh0OwotICAg
ICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0ItPm5leHQ7CisgICAgICAgICAgICBzaGFkb3dBID0g
c2hhZG93QS0+bmV4dCgpOworICAgICAgICAgICAgc2hhZG93QiA9IHNoYWRvd0ItPm5leHQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzI4LDI5ICszMjksMzAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFu
aW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJT
dHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogICAgIHsKLSAgICAgICAgU2hhZG93RGF0
YSogc2hhZG93QSA9IChhLT4qbV9nZXR0ZXIpKCk7Ci0gICAgICAgIFNoYWRvd0RhdGEqIHNoYWRv
d0IgPSAoYi0+Km1fZ2V0dGVyKSgpOworICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dB
ID0gKGEtPiptX2dldHRlcikoKTsKKyAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc2hhZG93QiA9
IChiLT4qbV9nZXR0ZXIpKCk7CiAgICAgICAgIFNoYWRvd0RhdGEgZGVmYXVsdFNoYWRvd0RhdGEo
MCwgMCwgMCwgMCwgTm9ybWFsLCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogCiAgICAgICAgIFNoYWRv
d0RhdGEqIG5ld1NoYWRvd0RhdGEgPSAwOwogICAgICAgICAKICAgICAgICAgd2hpbGUgKHNoYWRv
d0EgfHwgc2hhZG93QikgewotICAgICAgICAgICAgU2hhZG93RGF0YSogc3JjU2hhZG93ID0gc2hh
ZG93QSA/IHNoYWRvd0EgOiAmZGVmYXVsdFNoYWRvd0RhdGE7Ci0gICAgICAgICAgICBTaGFkb3dE
YXRhKiBkc3RTaGFkb3cgPSBzaGFkb3dCID8gc2hhZG93QiA6ICZkZWZhdWx0U2hhZG93RGF0YTsK
KyAgICAgICAgICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNyY1NoYWRvdyA9IHNoYWRvd0EgPyBzaGFk
b3dBIDogJmRlZmF1bHRTaGFkb3dEYXRhOworICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSog
ZHN0U2hhZG93ID0gc2hhZG93QiA/IHNoYWRvd0IgOiAmZGVmYXVsdFNoYWRvd0RhdGE7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmICghbmV3U2hhZG93RGF0YSkKICAgICAgICAgICAgICAg
ICBuZXdTaGFkb3dEYXRhID0gYmxlbmRGdW5jKGFuaW0sIHNyY1NoYWRvdywgZHN0U2hhZG93LCBw
cm9ncmVzcyk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV3U2hhZG93RGF0
YS0+bmV4dCA9IGJsZW5kRnVuYyhhbmltLCBzcmNTaGFkb3csIGRzdFNoYWRvdywgcHJvZ3Jlc3Mp
OworICAgICAgICAgICAgICAgIG5ld1NoYWRvd0RhdGEtPnNldE5leHQoYmxlbmRGdW5jKGFuaW0s
IHNyY1NoYWRvdywgZHN0U2hhZG93LCBwcm9ncmVzcykpOwogCi0gICAgICAgICAgICBzaGFkb3dB
ID0gc2hhZG93QSA/IHNoYWRvd0EtPm5leHQgOiAwOwotICAgICAgICAgICAgc2hhZG93QiA9IHNo
YWRvd0IgPyBzaGFkb3dCLT5uZXh0IDogMDsKKyAgICAgICAgICAgIHNoYWRvd0EgPSBzaGFkb3dB
ID8gc2hhZG93QS0+bmV4dCgpIDogMDsKKyAgICAgICAgICAgIHNoYWRvd0IgPSBzaGFkb3dCID8g
c2hhZG93Qi0+bmV4dCgpIDogMDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgKGRzdC0+
Km1fc2V0dGVyKShuZXdTaGFkb3dEYXRhLCBmYWxzZSk7CiAgICAgfQogCiBwcml2YXRlOgorICAg
IGNvbnN0IFNoYWRvd0RhdGEqIChSZW5kZXJTdHlsZTo6Km1fZ2V0dGVyKSgpIGNvbnN0OwogICAg
IHZvaWQgKFJlbmRlclN0eWxlOjoqbV9zZXR0ZXIpKFNoYWRvd0RhdGEqLCBib29sKTsKIH07CiAK
SW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvRnJhbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZU1hYy5tbQkocmV2aXNpb24gNTc0NzkpCisrKyBXZWJDb3JlL3BhZ2Uv
bWFjL0ZyYW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTYsMTIgKzQxNiwxMiBAQCBOU0Rp
Y3Rpb25hcnkqIEZyYW1lOjpmb250QXR0cmlidXRlc0ZvclNlCiAgICAgaWYgKHN0eWxlLT5jb2xv
cigpLmlzVmFsaWQoKSAmJiBzdHlsZS0+Y29sb3IoKSAhPSBDb2xvcjo6YmxhY2spCiAgICAgICAg
IFtyZXN1bHQgc2V0T2JqZWN0Om5zQ29sb3Ioc3R5bGUtPmNvbG9yKCkpIGZvcktleTpOU0ZvcmVn
cm91bmRDb2xvckF0dHJpYnV0ZU5hbWVdOwogCi0gICAgU2hhZG93RGF0YSogc2hhZG93ID0gc3R5
bGUtPnRleHRTaGFkb3coKTsKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cgPSBzdHlsZS0+
dGV4dFNoYWRvdygpOwogICAgIGlmIChzaGFkb3cpIHsKICAgICAgICAgTlNTaGFkb3cqIHMgPSBb
W05TU2hhZG93IGFsbG9jXSBpbml0XTsKLSAgICAgICAgW3Mgc2V0U2hhZG93T2Zmc2V0Ok5TTWFr
ZVNpemUoc2hhZG93LT54LCBzaGFkb3ctPnkpXTsKLSAgICAgICAgW3Mgc2V0U2hhZG93Qmx1clJh
ZGl1czpzaGFkb3ctPmJsdXJdOwotICAgICAgICBbcyBzZXRTaGFkb3dDb2xvcjpuc0NvbG9yKHNo
YWRvdy0+Y29sb3IpXTsKKyAgICAgICAgW3Mgc2V0U2hhZG93T2Zmc2V0Ok5TTWFrZVNpemUoc2hh
ZG93LT54KCksIHNoYWRvdy0+eSgpKV07CisgICAgICAgIFtzIHNldFNoYWRvd0JsdXJSYWRpdXM6
c2hhZG93LT5ibHVyKCldOworICAgICAgICBbcyBzZXRTaGFkb3dDb2xvcjpuc0NvbG9yKHNoYWRv
dy0+Y29sb3IoKSldOwogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpzIGZvcktleTpOU1NoYWRv
d0F0dHJpYnV0ZU5hbWVdOwogICAgIH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBz
aXNCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0VsbGlwc2lzQm94LmNw
cAkocmV2aXNpb24gNTc0NzkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDggQEAgdm9pZCBFbGxpcHNpc0JveDo6cGFpbnQo
UmVuZGVyT2JqZWN0OjpQYQogICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IodGV4dENvbG9y
LCBzdHlsZS0+Y29sb3JTcGFjZSgpKTsKICAgICBib29sIHNldFNoYWRvdyA9IGZhbHNlOwogICAg
IGlmIChzdHlsZS0+dGV4dFNoYWRvdygpKSB7Ci0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJ
bnRTaXplKHN0eWxlLT50ZXh0U2hhZG93KCktPngsIHN0eWxlLT50ZXh0U2hhZG93KCktPnkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUtPnRleHRTaGFkb3coKS0+Ymx1ciwgc3R5
bGUtPnRleHRTaGFkb3coKS0+Y29sb3IsIHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBj
b250ZXh0LT5zZXRTaGFkb3coSW50U2l6ZShzdHlsZS0+dGV4dFNoYWRvdygpLT54KCksIHN0eWxl
LT50ZXh0U2hhZG93KCktPnkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZS0+
dGV4dFNoYWRvdygpLT5ibHVyKCksIHN0eWxlLT50ZXh0U2hhZG93KCktPmNvbG9yKCksIHN0eWxl
LT5jb2xvclNwYWNlKCkpOwogICAgICAgICBzZXRTaGFkb3cgPSB0cnVlOwogICAgIH0KIApJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDU3NDc5KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw5
ICsyOTYsOSBAQCBpbnQgSW5saW5lRmxvd0JveDo6cGxhY2VCb3hlc0hvcml6b250YWxsCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGludCBjaGlsZE92ZXJmbG93TGVmdCA9IGxlZnRHbHlwaE92
ZXJmbG93OwogICAgICAgICAgICAgaW50IGNoaWxkT3ZlcmZsb3dSaWdodCA9IHJpZ2h0R2x5cGhP
dmVyZmxvdzsKLSAgICAgICAgICAgIGZvciAoU2hhZG93RGF0YSogc2hhZG93ID0gcnQtPnN0eWxl
KCktPnRleHRTaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ctPm5leHQpIHsKLSAgICAg
ICAgICAgICAgICBjaGlsZE92ZXJmbG93TGVmdCA9IG1pbihjaGlsZE92ZXJmbG93TGVmdCwgc2hh
ZG93LT54IC0gc2hhZG93LT5ibHVyICsgbGVmdEdseXBoT3ZlcmZsb3cpOwotICAgICAgICAgICAg
ICAgIGNoaWxkT3ZlcmZsb3dSaWdodCA9IG1heChjaGlsZE92ZXJmbG93UmlnaHQsIHNoYWRvdy0+
eCArIHNoYWRvdy0+Ymx1ciArIHJpZ2h0R2x5cGhPdmVyZmxvdyk7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHJ0LT5zdHlsZSgpLT50ZXh0U2hhZG93KCk7IHNo
YWRvdzsgc2hhZG93ID0gc2hhZG93LT5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBjaGlsZE92
ZXJmbG93TGVmdCA9IG1pbihjaGlsZE92ZXJmbG93TGVmdCwgc2hhZG93LT54KCkgLSBzaGFkb3ct
PmJsdXIoKSArIGxlZnRHbHlwaE92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICBjaGlsZE92ZXJm
bG93UmlnaHQgPSBtYXgoY2hpbGRPdmVyZmxvd1JpZ2h0LCBzaGFkb3ctPngoKSArIHNoYWRvdy0+
Ymx1cigpICsgcmlnaHRHbHlwaE92ZXJmbG93KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICAgICAgbGVmdFZpc3VhbE92ZXJmbG93ID0gbWluKHhQb3MgKyBjaGlsZE92ZXJm
bG93TGVmdCwgbGVmdFZpc3VhbE92ZXJmbG93KTsKQEAgLTU3Myw5ICs1NzMsOSBAQCB2b2lkIElu
bGluZUZsb3dCb3g6OmNvbXB1dGVWZXJ0aWNhbE92ZXJmCiAKICAgICAgICAgICAgIGludCBjaGls
ZE92ZXJmbG93VG9wID0gdG9wR2x5cGhPdmVyZmxvdzsKICAgICAgICAgICAgIGludCBjaGlsZE92
ZXJmbG93Qm90dG9tID0gYm90dG9tR2x5cGhPdmVyZmxvdzsKLSAgICAgICAgICAgIGZvciAoU2hh
ZG93RGF0YSogc2hhZG93ID0gcnQtPnN0eWxlKCktPnRleHRTaGFkb3coKTsgc2hhZG93OyBzaGFk
b3cgPSBzaGFkb3ctPm5leHQpIHsKLSAgICAgICAgICAgICAgICBjaGlsZE92ZXJmbG93VG9wID0g
bWluKGNoaWxkT3ZlcmZsb3dUb3AsIHNoYWRvdy0+eSAtIHNoYWRvdy0+Ymx1ciArIHRvcEdseXBo
T3ZlcmZsb3cpOwotICAgICAgICAgICAgICAgIGNoaWxkT3ZlcmZsb3dCb3R0b20gPSBtYXgoY2hp
bGRPdmVyZmxvd0JvdHRvbSwgc2hhZG93LT55ICsgc2hhZG93LT5ibHVyICsgYm90dG9tR2x5cGhP
dmVyZmxvdyk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IHJ0
LT5zdHlsZSgpLT50ZXh0U2hhZG93KCk7IHNoYWRvdzsgc2hhZG93ID0gc2hhZG93LT5uZXh0KCkp
IHsKKyAgICAgICAgICAgICAgICBjaGlsZE92ZXJmbG93VG9wID0gbWluKGNoaWxkT3ZlcmZsb3dU
b3AsIHNoYWRvdy0+eSgpIC0gc2hhZG93LT5ibHVyKCkgKyB0b3BHbHlwaE92ZXJmbG93KTsKKyAg
ICAgICAgICAgICAgICBjaGlsZE92ZXJmbG93Qm90dG9tID0gbWF4KGNoaWxkT3ZlcmZsb3dCb3R0
b20sIHNoYWRvdy0+eSgpICsgc2hhZG93LT5ibHVyKCkgKyBib3R0b21HbHlwaE92ZXJmbG93KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgdG9wVmlzdWFsT3ZlcmZs
b3cgPSBtaW4oY3Vyci0+eSgpICsgY2hpbGRPdmVyZmxvd1RvcCwgdG9wVmlzdWFsT3ZlcmZsb3cp
OwpAQCAtOTgxLDE1ICs5ODEsMTUgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludFRleHREZWNv
cmF0aW9ucwogCiAgICAgICAgIGJvb2wgc2V0Q2xpcCA9IGZhbHNlOwogICAgICAgICBpbnQgZXh0
cmFPZmZzZXQgPSAwOwotICAgICAgICBTaGFkb3dEYXRhKiBzaGFkb3cgPSBzdHlsZVRvVXNlLT50
ZXh0U2hhZG93KCk7Ci0gICAgICAgIGlmICghbGluZXNBcmVPcGFxdWUgJiYgc2hhZG93ICYmIHNo
YWRvdy0+bmV4dCkgeworICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cgPSBzdHlsZVRv
VXNlLT50ZXh0U2hhZG93KCk7CisgICAgICAgIGlmICghbGluZXNBcmVPcGFxdWUgJiYgc2hhZG93
ICYmIHNoYWRvdy0+bmV4dCgpKSB7CiAgICAgICAgICAgICBJbnRSZWN0IGNsaXBSZWN0KHR4LCB0
eSwgdywgYmFzZWxpbmVQb3MgKyAyKTsKLSAgICAgICAgICAgIGZvciAoU2hhZG93RGF0YSogcyA9
IHNoYWRvdzsgczsgcyA9IHMtPm5leHQpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgU2hhZG93
RGF0YSogcyA9IHNoYWRvdzsgczsgcyA9IHMtPm5leHQoKSkgewogICAgICAgICAgICAgICAgIElu
dFJlY3Qgc2hhZG93UmVjdCh0eCwgdHksIHcsIGJhc2VsaW5lUG9zICsgMik7Ci0gICAgICAgICAg
ICAgICAgc2hhZG93UmVjdC5pbmZsYXRlKHMtPmJsdXIpOwotICAgICAgICAgICAgICAgIHNoYWRv
d1JlY3QubW92ZShzLT54LCBzLT55KTsKKyAgICAgICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxh
dGUocy0+Ymx1cigpKTsKKyAgICAgICAgICAgICAgICBzaGFkb3dSZWN0Lm1vdmUocy0+eCgpLCBz
LT55KCkpOwogICAgICAgICAgICAgICAgIGNsaXBSZWN0LnVuaXRlKHNoYWRvd1JlY3QpOwotICAg
ICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gbWF4KGV4dHJhT2Zmc2V0LCBtYXgoMCwgcy0+eSkg
KyBzLT5ibHVyKTsKKyAgICAgICAgICAgICAgICBleHRyYU9mZnNldCA9IG1heChleHRyYU9mZnNl
dCwgbWF4KDAsIHMtPnkoKSkgKyBzLT5ibHVyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgY29udGV4dC0+c2F2ZSgpOwogICAgICAgICAgICAgY29udGV4dC0+Y2xpcChjbGlwUmVjdCk7
CkBAIC0xMDAyLDE0ICsxMDAyLDE0IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFpbnRUZXh0RGVj
b3JhdGlvbnMKICAgICAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxzZTsKICAgICAgICAgZG8gewog
ICAgICAgICAgICAgaWYgKHNoYWRvdykgewotICAgICAgICAgICAgICAgIGlmICghc2hhZG93LT5u
ZXh0KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzaGFkb3ctPm5leHQoKSkgewogICAgICAgICAg
ICAgICAgICAgICAvLyBUaGUgbGFzdCBzZXQgb2YgbGluZXMgcGFpbnRzIG5vcm1hbGx5IGluc2lk
ZSB0aGUgY2xpcC4KICAgICAgICAgICAgICAgICAgICAgdHkgLT0gZXh0cmFPZmZzZXQ7CiAgICAg
ICAgICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gMDsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54LCBzaGFkb3ct
PnkgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1ciwgc2hhZG93LT5jb2xvciwgY29sb3JTcGFj
ZSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KEludFNpemUoc2hhZG93LT54
KCksIHNoYWRvdy0+eSgpIC0gZXh0cmFPZmZzZXQpLCBzaGFkb3ctPmJsdXIoKSwgc2hhZG93LT5j
b2xvcigpLCBjb2xvclNwYWNlKTsKICAgICAgICAgICAgICAgICBzZXRTaGFkb3cgPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dDsKKyAgICAgICAgICAgICAgICBz
aGFkb3cgPSBzaGFkb3ctPm5leHQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KHBhaW50VW5kZXJsaW5lKSB7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAko
cmV2aXNpb24gNTc0NzkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjczLDcgKzI3Myw3IEBAIGJvb2wgSW5saW5lVGV4dEJveDo6bm9k
ZUF0UG9pbnQoY29uc3QgSGkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIHBh
aW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zm
c2V0LCBpbnQgdHJ1bmNhdGlvblBvaW50LCBjb25zdCBJbnRQb2ludCYgdGV4dE9yaWdpbiwgaW50
IHgsIGludCB5LCBpbnQgdywgaW50IGgsIFNoYWRvd0RhdGEqIHNoYWRvdywgYm9vbCBzdHJva2Vk
KQorc3RhdGljIHZvaWQgcGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBlbmRPZmZzZXQsIGludCB0cnVuY2F0aW9uUG9pbnQsIGNvbnN0IEludFBvaW50
JiB0ZXh0T3JpZ2luLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCwgY29uc3QgU2hhZG93RGF0
YSogc2hhZG93LCBib29sIHN0cm9rZWQpCiB7CiAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4
dC0+ZmlsbENvbG9yKCk7CiAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IGNvbnRleHQt
PmZpbGxDb2xvclNwYWNlKCk7CkBAIC0yODUsMTEgKzI4NSwxMSBAQCBzdGF0aWMgdm9pZCBwYWlu
dFRleHRXaXRoU2hhZG93cyhHcmFwaGljCiAgICAgICAgIEludFNpemUgZXh0cmFPZmZzZXQ7CiAK
ICAgICAgICAgaWYgKHNoYWRvdykgewotICAgICAgICAgICAgSW50U2l6ZSBzaGFkb3dPZmZzZXQo
c2hhZG93LT54LCBzaGFkb3ctPnkpOwotICAgICAgICAgICAgaW50IHNoYWRvd0JsdXIgPSBzaGFk
b3ctPmJsdXI7Ci0gICAgICAgICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IgPSBzaGFkb3ct
PmNvbG9yOworICAgICAgICAgICAgSW50U2l6ZSBzaGFkb3dPZmZzZXQoc2hhZG93LT54KCksIHNo
YWRvdy0+eSgpKTsKKyAgICAgICAgICAgIGludCBzaGFkb3dCbHVyID0gc2hhZG93LT5ibHVyKCk7
CisgICAgICAgICAgICBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IgPSBzaGFkb3ctPmNvbG9yKCk7
CiAKLSAgICAgICAgICAgIGlmIChzaGFkb3ctPm5leHQgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKSB7
CisgICAgICAgICAgICBpZiAoc2hhZG93LT5uZXh0KCkgfHwgc3Ryb2tlZCB8fCAhb3BhcXVlKSB7
CiAgICAgICAgICAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0KHgsIHksIHcsIGgpOwogICAgICAg
ICAgICAgICAgIHNoYWRvd1JlY3QuaW5mbGF0ZShzaGFkb3dCbHVyKTsKICAgICAgICAgICAgICAg
ICBzaGFkb3dSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0KTsKQEAgLTMxNSwxMiArMzE1LDEyIEBAIHN0
YXRpYyB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWMKICAgICAgICAgaWYgKCFzaGFk
b3cpCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAoc2hhZG93LT5uZXh0IHx8IHN0
cm9rZWQgfHwgIW9wYXF1ZSkKKyAgICAgICAgaWYgKHNoYWRvdy0+bmV4dCgpIHx8IHN0cm9rZWQg
fHwgIW9wYXF1ZSkKICAgICAgICAgICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgY29udGV4dC0+Y2xlYXJTaGFkb3coKTsKIAotICAgICAgICBzaGFkb3cg
PSBzaGFkb3ctPm5leHQ7CisgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwogICAgIH0g
d2hpbGUgKHNoYWRvdyB8fCBzdHJva2VkIHx8ICFvcGFxdWUpOwogfQogCkBAIC00MDUsNyArNDA1
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChSZW5kZXJPYmplY3Q6OgogICAgIENvbG9y
IHRleHRGaWxsQ29sb3I7CiAgICAgQ29sb3IgdGV4dFN0cm9rZUNvbG9yOwogICAgIGZsb2F0IHRl
eHRTdHJva2VXaWR0aCA9IHN0eWxlVG9Vc2UtPnRleHRTdHJva2VXaWR0aCgpOwotICAgIFNoYWRv
d0RhdGEqIHRleHRTaGFkb3cgPSBwYWludEluZm8uZm9yY2VCbGFja1RleHQgPyAwIDogc3R5bGVU
b1VzZS0+dGV4dFNoYWRvdygpOworICAgIGNvbnN0IFNoYWRvd0RhdGEqIHRleHRTaGFkb3cgPSBw
YWludEluZm8uZm9yY2VCbGFja1RleHQgPyAwIDogc3R5bGVUb1VzZS0+dGV4dFNoYWRvdygpOwog
CiAgICAgaWYgKHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCkgewogICAgICAgICB0ZXh0RmlsbENv
bG9yID0gQ29sb3I6OmJsYWNrOwpAQCAtNDMwLDcgKzQzMCw3IEBAIHZvaWQgSW5saW5lVGV4dEJv
eDo6cGFpbnQoUmVuZGVyT2JqZWN0OjoKICAgICBDb2xvciBzZWxlY3Rpb25GaWxsQ29sb3IgPSB0
ZXh0RmlsbENvbG9yOwogICAgIENvbG9yIHNlbGVjdGlvblN0cm9rZUNvbG9yID0gdGV4dFN0cm9r
ZUNvbG9yOwogICAgIGZsb2F0IHNlbGVjdGlvblN0cm9rZVdpZHRoID0gdGV4dFN0cm9rZVdpZHRo
OwotICAgIFNoYWRvd0RhdGEqIHNlbGVjdGlvblNoYWRvdyA9IHRleHRTaGFkb3c7CisgICAgY29u
c3QgU2hhZG93RGF0YSogc2VsZWN0aW9uU2hhZG93ID0gdGV4dFNoYWRvdzsKICAgICBpZiAoaGF2
ZVNlbGVjdGlvbikgewogICAgICAgICAvLyBDaGVjayBmb3JlZ3JvdW5kIGNvbG9yIGZpcnN0Lgog
ICAgICAgICBDb2xvciBmb3JlZ3JvdW5kID0gcGFpbnRJbmZvLmZvcmNlQmxhY2tUZXh0ID8gQ29s
b3I6OmJsYWNrIDogcmVuZGVyZXIoKS0+c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCk7CkBAIC00
NDEsNyArNDQxLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChSZW5kZXJPYmplY3Q6Ogog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9IHJlbmRl
cmVyKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKFNFTEVDVElPTikpIHsKLSAgICAgICAgICAgIFNo
YWRvd0RhdGEqIHNoYWRvdyA9IHBhaW50SW5mby5mb3JjZUJsYWNrVGV4dCA/IDAgOiBwc2V1ZG9T
dHlsZS0+dGV4dFNoYWRvdygpOworICAgICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc2hhZG93
ID0gcGFpbnRJbmZvLmZvcmNlQmxhY2tUZXh0ID8gMCA6IHBzZXVkb1N0eWxlLT50ZXh0U2hhZG93
KCk7CiAgICAgICAgICAgICBpZiAoc2hhZG93ICE9IHNlbGVjdGlvblNoYWRvdykgewogICAgICAg
ICAgICAgICAgIGlmICghcGFpbnRTZWxlY3RlZFRleHRPbmx5KQogICAgICAgICAgICAgICAgICAg
ICBwYWludFNlbGVjdGVkVGV4dFNlcGFyYXRlbHkgPSB0cnVlOwpAQCAtNjQwLDcgKzY0MCw3IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQKIAogI2VuZGlmCiAKLXZv
aWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgaW50IHR4LCBpbnQgdHksIGludCBkZWNvLCBTaGFkb3dEYXRhKiBzaGFkb3cpCit2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGlu
dCB0eCwgaW50IHR5LCBpbnQgZGVjbywgY29uc3QgU2hhZG93RGF0YSogc2hhZG93KQogewogICAg
IHR4ICs9IG1feDsKICAgICB0eSArPSBtX3k7CkBAIC02NjksMTUgKzY2OSwxNSBAQCB2b2lkIElu
bGluZVRleHRCb3g6OnBhaW50RGVjb3JhdGlvbihHcmFwCiAKICAgICBib29sIHNldENsaXAgPSBm
YWxzZTsKICAgICBpbnQgZXh0cmFPZmZzZXQgPSAwOwotICAgIGlmICghbGluZXNBcmVPcGFxdWUg
JiYgc2hhZG93ICYmIHNoYWRvdy0+bmV4dCkgeworICAgIGlmICghbGluZXNBcmVPcGFxdWUgJiYg
c2hhZG93ICYmIHNoYWRvdy0+bmV4dCgpKSB7CiAgICAgICAgIGNvbnRleHQtPnNhdmUoKTsKICAg
ICAgICAgSW50UmVjdCBjbGlwUmVjdCh0eCwgdHksIHdpZHRoLCBiYXNlbGluZSArIDIpOwotICAg
ICAgICBmb3IgKFNoYWRvd0RhdGEqIHMgPSBzaGFkb3c7IHM7IHMgPSBzLT5uZXh0KSB7CisgICAg
ICAgIGZvciAoY29uc3QgU2hhZG93RGF0YSogcyA9IHNoYWRvdzsgczsgcyA9IHMtPm5leHQoKSkg
ewogICAgICAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0KHR4LCB0eSwgd2lkdGgsIGJhc2VsaW5l
ICsgMik7Ci0gICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUocy0+Ymx1cik7Ci0gICAgICAg
ICAgICBzaGFkb3dSZWN0Lm1vdmUocy0+eCwgcy0+eSk7CisgICAgICAgICAgICBzaGFkb3dSZWN0
LmluZmxhdGUocy0+Ymx1cigpKTsKKyAgICAgICAgICAgIHNoYWRvd1JlY3QubW92ZShzLT54KCks
IHMtPnkoKSk7CiAgICAgICAgICAgICBjbGlwUmVjdC51bml0ZShzaGFkb3dSZWN0KTsKLSAgICAg
ICAgICAgIGV4dHJhT2Zmc2V0ID0gbWF4KGV4dHJhT2Zmc2V0LCBtYXgoMCwgcy0+eSkgKyBzLT5i
bHVyKTsKKyAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gbWF4KGV4dHJhT2Zmc2V0LCBtYXgoMCwg
cy0+eSgpKSArIHMtPmJsdXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dC0+c2F2ZSgp
OwogICAgICAgICBjb250ZXh0LT5jbGlwKGNsaXBSZWN0KTsKQEAgLTY5MSwxNCArNjkxLDE0IEBA
IHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnREZWNvcmF0aW9uKEdyYXAKICAgICAKICAgICBkbyB7
CiAgICAgICAgIGlmIChzaGFkb3cpIHsKLSAgICAgICAgICAgIGlmICghc2hhZG93LT5uZXh0KSB7
CisgICAgICAgICAgICBpZiAoIXNoYWRvdy0+bmV4dCgpKSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIGxhc3Qgc2V0IG9mIGxpbmVzIHBhaW50cyBub3JtYWxseSBpbnNpZGUgdGhlIGNsaXAuCiAg
ICAgICAgICAgICAgICAgdHkgLT0gZXh0cmFPZmZzZXQ7CiAgICAgICAgICAgICAgICAgZXh0cmFP
ZmZzZXQgPSAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGV4dC0+c2V0U2hhZG93
KEludFNpemUoc2hhZG93LT54LCBzaGFkb3ctPnkgLSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1
ciwgc2hhZG93LT5jb2xvciwgY29sb3JTcGFjZSk7CisgICAgICAgICAgICBjb250ZXh0LT5zZXRT
aGFkb3coSW50U2l6ZShzaGFkb3ctPngoKSwgc2hhZG93LT55KCkgLSBleHRyYU9mZnNldCksIHNo
YWRvdy0+Ymx1cigpLCBzaGFkb3ctPmNvbG9yKCksIGNvbG9yU3BhY2UpOwogICAgICAgICAgICAg
c2V0U2hhZG93ID0gdHJ1ZTsKLSAgICAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dDsKKyAg
ICAgICAgICAgIHNoYWRvdyA9IHNoYWRvdy0+bmV4dCgpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGRlY28gJiBVTkRFUkxJTkUpIHsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgJ
KHJldmlzaW9uIDU3NDc5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTAsNyArMTUwLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBwYWludERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4
LCBpbnQgdHksIGludCBkZWNvcmF0aW9uLCBTaGFkb3dEYXRhKik7CisgICAgdm9pZCBwYWludERl
Y29yYXRpb24oR3JhcGhpY3NDb250ZXh0KiwgaW50IHR4LCBpbnQgdHksIGludCBkZWNvcmF0aW9u
LCBjb25zdCBTaGFkb3dEYXRhKik7CiAgICAgdm9pZCBwYWludFNlbGVjdGlvbihHcmFwaGljc0Nv
bnRleHQqLCBpbnQgdHgsIGludCB0eSwgUmVuZGVyU3R5bGUqLCBjb25zdCBGb250Jik7CiAgICAg
dm9pZCBwYWludFNwZWxsaW5nT3JHcmFtbWFyTWFya2VyKEdyYXBoaWNzQ29udGV4dCosIGludCB0
eCwgaW50IHR5LCBjb25zdCBEb2N1bWVudE1hcmtlciYsIFJlbmRlclN0eWxlKiwgY29uc3QgRm9u
dCYsIGJvb2wgZ3JhbW1hcik7CiAgICAgdm9pZCBwYWludFRleHRNYXRjaE1hcmtlcihHcmFwaGlj
c0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSwgY29uc3QgRG9jdW1lbnRNYXJrZXImLCBSZW5kZXJT
dHlsZSosIGNvbnN0IEZvbnQmKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDU3NDc5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIyLDE2ICsxMzIyLDE2
IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50Qm94U2hhZG8KICAgICB9CiAKICAg
ICBib29sIGhhc09wYXF1ZUJhY2tncm91bmQgPSBzLT5iYWNrZ3JvdW5kQ29sb3IoKS5pc1ZhbGlk
KCkgJiYgcy0+YmFja2dyb3VuZENvbG9yKCkuYWxwaGEoKSA9PSAyNTU7Ci0gICAgZm9yIChTaGFk
b3dEYXRhKiBzaGFkb3cgPSBzLT5ib3hTaGFkb3coKTsgc2hhZG93OyBzaGFkb3cgPSBzaGFkb3ct
Pm5leHQpIHsKLSAgICAgICAgaWYgKHNoYWRvdy0+c3R5bGUgIT0gc2hhZG93U3R5bGUpCisgICAg
Zm9yIChjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3cgPSBzLT5ib3hTaGFkb3coKTsgc2hhZG93OyBz
aGFkb3cgPSBzaGFkb3ctPm5leHQoKSkgeworICAgICAgICBpZiAoc2hhZG93LT5zdHlsZSgpICE9
IHNoYWRvd1N0eWxlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSW50U2l6ZSBz
aGFkb3dPZmZzZXQoc2hhZG93LT54LCBzaGFkb3ctPnkpOwotICAgICAgICBpbnQgc2hhZG93Qmx1
ciA9IHNoYWRvdy0+Ymx1cjsKLSAgICAgICAgaW50IHNoYWRvd1NwcmVhZCA9IHNoYWRvdy0+c3By
ZWFkOwotICAgICAgICBDb2xvciYgc2hhZG93Q29sb3IgPSBzaGFkb3ctPmNvbG9yOworICAgICAg
ICBJbnRTaXplIHNoYWRvd09mZnNldChzaGFkb3ctPngoKSwgc2hhZG93LT55KCkpOworICAgICAg
ICBpbnQgc2hhZG93Qmx1ciA9IHNoYWRvdy0+Ymx1cigpOworICAgICAgICBpbnQgc2hhZG93U3By
ZWFkID0gc2hhZG93LT5zcHJlYWQoKTsKKyAgICAgICAgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9y
ID0gc2hhZG93LT5jb2xvcigpOwogCi0gICAgICAgIGlmIChzaGFkb3ctPnN0eWxlID09IE5vcm1h
bCkgeworICAgICAgICBpZiAoc2hhZG93LT5zdHlsZSgpID09IE5vcm1hbCkgewogICAgICAgICAg
ICAgSW50UmVjdCBmaWxsUmVjdChyZWN0KTsKICAgICAgICAgICAgIGZpbGxSZWN0LmluZmxhdGUo
c2hhZG93U3ByZWFkKTsKICAgICAgICAgICAgIGlmIChmaWxsUmVjdC5pc0VtcHR5KCkpCkluZGV4
OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiA1NzQ3OSkKKysrIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxMSwxNyArMjkx
MSwxOSBAQCB2b2lkIFJlbmRlckxheWVyOjpjYWxjdWxhdGVSZWN0cyhjb25zdCBSCiAKICAgICAg
ICAgLy8gSWYgd2UgZXN0YWJsaXNoIGEgY2xpcCBhdCBhbGwsIHRoZW4gZ28gYWhlYWQgYW5kIG1h
a2Ugc3VyZSBvdXIgYmFja2dyb3VuZAogICAgICAgICAvLyByZWN0IGlzIGludGVyc2VjdGVkIHdp
dGggb3VyIGxheWVyJ3MgYm91bmRzLgotICAgICAgICBpZiAoU2hhZG93RGF0YSogYm94U2hhZG93
ID0gcmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym94U2hhZG93KCkpIHsKKyAgICAgICAgLy8gRklYTUU6
IFRoaXMgY291bGQgYmUgY2hhbmdlZCB0byBqdXN0IHVzZSBnZW5lcmljIHZpc3VhbCBvdmVyZmxv
dy4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNzQ2NyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgaWYgKGNvbnN0IFNoYWRvd0Rh
dGEqIGJveFNoYWRvdyA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmJveFNoYWRvdygpKSB7CiAgICAg
ICAgICAgICBJbnRSZWN0IG92ZXJmbG93ID0gbGF5ZXJCb3VuZHM7CiAgICAgICAgICAgICBkbyB7
Ci0gICAgICAgICAgICAgICAgaWYgKGJveFNoYWRvdy0+c3R5bGUgPT0gTm9ybWFsKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGJveFNoYWRvdy0+c3R5bGUoKSA9PSBOb3JtYWwpIHsKICAgICAgICAg
ICAgICAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0ID0gbGF5ZXJCb3VuZHM7Ci0gICAgICAgICAg
ICAgICAgICAgIHNoYWRvd1JlY3QubW92ZShib3hTaGFkb3ctPngsIGJveFNoYWRvdy0+eSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHNoYWRvd1JlY3QuaW5mbGF0ZShib3hTaGFkb3ctPmJsdXIgKyBi
b3hTaGFkb3ctPnNwcmVhZCk7CisgICAgICAgICAgICAgICAgICAgIHNoYWRvd1JlY3QubW92ZShi
b3hTaGFkb3ctPngoKSwgYm94U2hhZG93LT55KCkpOworICAgICAgICAgICAgICAgICAgICBzaGFk
b3dSZWN0LmluZmxhdGUoYm94U2hhZG93LT5ibHVyKCkgKyBib3hTaGFkb3ctPnNwcmVhZCgpKTsK
ICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cudW5pdGUoc2hhZG93UmVjdCk7CiAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgYm94U2hhZG93ID0gYm94U2hhZG93LT5uZXh0
OworICAgICAgICAgICAgICAgIGJveFNoYWRvdyA9IGJveFNoYWRvdy0+bmV4dCgpOwogICAgICAg
ICAgICAgfSB3aGlsZSAoYm94U2hhZG93KTsKICAgICAgICAgICAgIGJhY2tncm91bmRSZWN0Lmlu
dGVyc2VjdChvdmVyZmxvdyk7CiAgICAgICAgIH0gZWxzZQpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiA1NzQ3OSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNTQsMjEgKzIzNTQsMjEgQEAgaW50IFJl
bmRlck9iamVjdDo6bmV4dE9mZnNldChpbnQgY3VycmVudAogdm9pZCBSZW5kZXJPYmplY3Q6OmFk
anVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAg
aW50IG91dGxpbmVTaXplID0gb3V0bGluZVN0eWxlRm9yUmVwYWludCgpLT5vdXRsaW5lU2l6ZSgp
OwotICAgIGlmIChTaGFkb3dEYXRhKiBib3hTaGFkb3cgPSBzdHlsZSgpLT5ib3hTaGFkb3coKSkg
eworICAgIGlmIChjb25zdCBTaGFkb3dEYXRhKiBib3hTaGFkb3cgPSBzdHlsZSgpLT5ib3hTaGFk
b3coKSkgewogICAgICAgICBpbnQgc2hhZG93TGVmdCA9IDA7CiAgICAgICAgIGludCBzaGFkb3dS
aWdodCA9IDA7CiAgICAgICAgIGludCBzaGFkb3dUb3AgPSAwOwogICAgICAgICBpbnQgc2hhZG93
Qm90dG9tID0gMDsKIAogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpZiAoYm94U2hhZG93LT5z
dHlsZSA9PSBOb3JtYWwpIHsKLSAgICAgICAgICAgICAgICBzaGFkb3dMZWZ0ID0gbWluKGJveFNo
YWRvdy0+eCAtIGJveFNoYWRvdy0+Ymx1ciAtIGJveFNoYWRvdy0+c3ByZWFkIC0gb3V0bGluZVNp
emUsIHNoYWRvd0xlZnQpOwotICAgICAgICAgICAgICAgIHNoYWRvd1JpZ2h0ID0gbWF4KGJveFNo
YWRvdy0+eCArIGJveFNoYWRvdy0+Ymx1ciArIGJveFNoYWRvdy0+c3ByZWFkICsgb3V0bGluZVNp
emUsIHNoYWRvd1JpZ2h0KTsKLSAgICAgICAgICAgICAgICBzaGFkb3dUb3AgPSBtaW4oYm94U2hh
ZG93LT55IC0gYm94U2hhZG93LT5ibHVyIC0gYm94U2hhZG93LT5zcHJlYWQgLSBvdXRsaW5lU2l6
ZSwgc2hhZG93VG9wKTsKLSAgICAgICAgICAgICAgICBzaGFkb3dCb3R0b20gPSBtYXgoYm94U2hh
ZG93LT55ICsgYm94U2hhZG93LT5ibHVyICsgYm94U2hhZG93LT5zcHJlYWQgKyBvdXRsaW5lU2l6
ZSwgc2hhZG93Qm90dG9tKTsKKyAgICAgICAgICAgIGlmIChib3hTaGFkb3ctPnN0eWxlKCkgPT0g
Tm9ybWFsKSB7CisgICAgICAgICAgICAgICAgc2hhZG93TGVmdCA9IG1pbihib3hTaGFkb3ctPngo
KSAtIGJveFNoYWRvdy0+Ymx1cigpIC0gYm94U2hhZG93LT5zcHJlYWQoKSAtIG91dGxpbmVTaXpl
LCBzaGFkb3dMZWZ0KTsKKyAgICAgICAgICAgICAgICBzaGFkb3dSaWdodCA9IG1heChib3hTaGFk
b3ctPngoKSArIGJveFNoYWRvdy0+Ymx1cigpICsgYm94U2hhZG93LT5zcHJlYWQoKSArIG91dGxp
bmVTaXplLCBzaGFkb3dSaWdodCk7CisgICAgICAgICAgICAgICAgc2hhZG93VG9wID0gbWluKGJv
eFNoYWRvdy0+eSgpIC0gYm94U2hhZG93LT5ibHVyKCkgLSBib3hTaGFkb3ctPnNwcmVhZCgpIC0g
b3V0bGluZVNpemUsIHNoYWRvd1RvcCk7CisgICAgICAgICAgICAgICAgc2hhZG93Qm90dG9tID0g
bWF4KGJveFNoYWRvdy0+eSgpICsgYm94U2hhZG93LT5ibHVyKCkgKyBib3hTaGFkb3ctPnNwcmVh
ZCgpICsgb3V0bGluZVNpemUsIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGJveFNoYWRvdyA9IGJveFNoYWRvdy0+bmV4dDsKKyAgICAgICAgICAgIGJveFNoYWRv
dyA9IGJveFNoYWRvdy0+bmV4dCgpOwogICAgICAgICB9IHdoaWxlIChib3hTaGFkb3cpOwogCiAg
ICAgICAgIHJlY3QubW92ZShzaGFkb3dMZWZ0LCBzaGFkb3dUb3ApOwpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDU3NDc5KQorKysgV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNSwxMiAr
NDA1LDExIEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRDaGFyYWN0ZXJzKFIKIAogICAg
IGlmICAoaXNHbHlwaFBoYXNlIHx8IGlzU2VsZWN0aW9uR2x5cGhQaGFzZSkgewogICAgICAgICAv
LyBTZXQgYSB0ZXh0IHNoYWRvdyBpZiB3ZSBoYXZlIG9uZS4KLSAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgbXVsdGlwbGUgc2hhZG93IGVmZmVjdHMuICBOZWVkIG1vcmUgZnJvbSB0aGUgQ0cgQVBJ
IGJlZm9yZQotICAgICAgICAvLyB3ZSBjYW4gZG8gdGhpcy4KKyAgICAgICAgLy8gRklYTUU6IFN1
cHBvcnQgbXVsdGlwbGUgc2hhZG93IGVmZmVjdHMuICBTZWUgaG93IGl0J3MgZG9uZSBpbiBJbmxp
bmVUZXh0Qm94LmNwcC4KICAgICAgICAgYm9vbCBzZXRTaGFkb3cgPSBmYWxzZTsKICAgICAgICAg
aWYgKHN0eWxlVG9Vc2UtPnRleHRTaGFkb3coKSkgewotICAgICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHN0eWxlVG9Vc2UtPnRleHRTaGFkb3coKS0+eCwgc3R5
bGVUb1VzZS0+dGV4dFNoYWRvdygpLT55KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3R5bGVUb1VzZS0+dGV4dFNoYWRvdygpLT5ibHVyLCBzdHlsZVRvVXNlLT50
ZXh0U2hhZG93KCktPmNvbG9yLAorICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFNo
YWRvdyhJbnRTaXplKHN0eWxlVG9Vc2UtPnRleHRTaGFkb3coKS0+eCgpLCBzdHlsZVRvVXNlLT50
ZXh0U2hhZG93KCktPnkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0eWxlVG9Vc2UtPnRleHRTaGFkb3coKS0+Ymx1cigpLCBzdHlsZVRvVXNlLT50ZXh0U2hh
ZG93KCktPmNvbG9yKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0eWxlVG9Vc2UtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgICAgICBzZXRTaGFkb3cgPSB0cnVl
OwogICAgICAgICB9CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAko
cmV2aXNpb24gNTc0NzkpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDkgKzEwNSw5IEBAIGJvb2wgU1ZHUmVuZGVyQmFzZTo6
cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CiAgICAgfQogCi0gICAgaWYgKFNoYWRvd0RhdGEqIHNo
YWRvdyA9IHN2Z1N0eWxlLT5zaGFkb3coKSkgeworICAgIGlmIChjb25zdCBTaGFkb3dEYXRhKiBz
aGFkb3cgPSBzdmdTdHlsZS0+c2hhZG93KCkpIHsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNsaXAocmVwYWludFJlY3QpOwotICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0U2hhZG93
KEludFNpemUoc2hhZG93LT54LCBzaGFkb3ctPnkpLCBzaGFkb3ctPmJsdXIsIHNoYWRvdy0+Y29s
b3IsIHN0eWxlLT5jb2xvclNwYWNlKCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+c2V0
U2hhZG93KEludFNpemUoc2hhZG93LT54KCksIHNoYWRvdy0+eSgpKSwgc2hhZG93LT5ibHVyKCks
IHNoYWRvdy0+Y29sb3IoKSwgc3R5bGUtPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEuMGYpOwogICAgIH0KIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gNTc0NzkpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcxMiw3ICs3MTIsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRUZXh0U2hhZG93KFNoYWRv
d0RhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB2YWwtPm5leHQgPSByYXJlRGF0YS0+
dGV4dFNoYWRvdzsKKyAgICB2YWwtPnNldE5leHQocmFyZURhdGEtPnRleHRTaGFkb3cpOwogICAg
IHJhcmVEYXRhLT50ZXh0U2hhZG93ID0gdmFsOwogfQogCkBAIC03MjQsNyArNzI0LDcgQEAgdm9p
ZCBSZW5kZXJTdHlsZTo6c2V0Qm94U2hhZG93KFNoYWRvd0RhdAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgc2hhZG93RGF0YS0+bmV4dCA9IHJhcmVEYXRhLT5tX2JveFNoYWRvdy5yZWxl
YXNlKCk7CisgICAgc2hhZG93RGF0YS0+c2V0TmV4dChyYXJlRGF0YS0+bV9ib3hTaGFkb3cucmVs
ZWFzZSgpKTsKICAgICByYXJlRGF0YS0+bV9ib3hTaGFkb3cuc2V0KHNoYWRvd0RhdGEpOwogfQog
CkBAIC05MjEsMTUgKzkyMSwxNSBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRCb3hTaGFkb3dFeHRl
bnQoaW50CiAgICAgYm90dG9tID0gMDsKICAgICBsZWZ0ID0gMDsKIAotICAgIGZvciAoU2hhZG93
RGF0YSogYm94U2hhZG93ID0gdGhpcy0+Ym94U2hhZG93KCk7IGJveFNoYWRvdzsgYm94U2hhZG93
ID0gYm94U2hhZG93LT5uZXh0KSB7Ci0gICAgICAgIGlmIChib3hTaGFkb3ctPnN0eWxlID09IElu
c2V0KQorICAgIGZvciAoY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93ID0gdGhpcy0+Ym94U2hh
ZG93KCk7IGJveFNoYWRvdzsgYm94U2hhZG93ID0gYm94U2hhZG93LT5uZXh0KCkpIHsKKyAgICAg
ICAgaWYgKGJveFNoYWRvdy0+c3R5bGUoKSA9PSBJbnNldCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBpbnQgYmx1ckFuZFNwcmVhZCA9IGJveFNoYWRvdy0+Ymx1ciArIGJveFNoYWRv
dy0+c3ByZWFkOworICAgICAgICBpbnQgYmx1ckFuZFNwcmVhZCA9IGJveFNoYWRvdy0+Ymx1cigp
ICsgYm94U2hhZG93LT5zcHJlYWQoKTsKIAotICAgICAgICB0b3AgPSBtaW4odG9wLCBib3hTaGFk
b3ctPnkgLSBibHVyQW5kU3ByZWFkKTsKLSAgICAgICAgcmlnaHQgPSBtYXgocmlnaHQsIGJveFNo
YWRvdy0+eCArIGJsdXJBbmRTcHJlYWQpOwotICAgICAgICBib3R0b20gPSBtYXgoYm90dG9tLCBi
b3hTaGFkb3ctPnkgKyBibHVyQW5kU3ByZWFkKTsKLSAgICAgICAgbGVmdCA9IG1pbihsZWZ0LCBi
b3hTaGFkb3ctPnggLSBibHVyQW5kU3ByZWFkKTsKKyAgICAgICAgdG9wID0gbWluKHRvcCwgYm94
U2hhZG93LT55KCkgLSBibHVyQW5kU3ByZWFkKTsKKyAgICAgICAgcmlnaHQgPSBtYXgocmlnaHQs
IGJveFNoYWRvdy0+eCgpICsgYmx1ckFuZFNwcmVhZCk7CisgICAgICAgIGJvdHRvbSA9IG1heChi
b3R0b20sIGJveFNoYWRvdy0+eSgpICsgYmx1ckFuZFNwcmVhZCk7CisgICAgICAgIGxlZnQgPSBt
aW4obGVmdCwgYm94U2hhZG93LT54KCkgLSBibHVyQW5kU3ByZWFkKTsKICAgICB9CiB9CiAKQEAg
LTkzOCwxMyArOTM4LDEzIEBAIHZvaWQgUmVuZGVyU3R5bGU6OmdldEJveFNoYWRvd0hvcml6b250
YWwKICAgICBsZWZ0ID0gMDsKICAgICByaWdodCA9IDA7CiAKLSAgICBmb3IgKFNoYWRvd0RhdGEq
IGJveFNoYWRvdyA9IHRoaXMtPmJveFNoYWRvdygpOyBib3hTaGFkb3c7IGJveFNoYWRvdyA9IGJv
eFNoYWRvdy0+bmV4dCkgewotICAgICAgICBpZiAoYm94U2hhZG93LT5zdHlsZSA9PSBJbnNldCkK
KyAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdyA9IHRoaXMtPmJveFNoYWRvdygp
OyBib3hTaGFkb3c7IGJveFNoYWRvdyA9IGJveFNoYWRvdy0+bmV4dCgpKSB7CisgICAgICAgIGlm
IChib3hTaGFkb3ctPnN0eWxlKCkgPT0gSW5zZXQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgaW50IGJsdXJBbmRTcHJlYWQgPSBib3hTaGFkb3ctPmJsdXIgKyBib3hTaGFkb3ctPnNw
cmVhZDsKKyAgICAgICAgaW50IGJsdXJBbmRTcHJlYWQgPSBib3hTaGFkb3ctPmJsdXIoKSArIGJv
eFNoYWRvdy0+c3ByZWFkKCk7CiAKLSAgICAgICAgbGVmdCA9IG1pbihsZWZ0LCBib3hTaGFkb3ct
PnggLSBibHVyQW5kU3ByZWFkKTsKLSAgICAgICAgcmlnaHQgPSBtYXgocmlnaHQsIGJveFNoYWRv
dy0+eCArIGJsdXJBbmRTcHJlYWQpOworICAgICAgICBsZWZ0ID0gbWluKGxlZnQsIGJveFNoYWRv
dy0+eCgpIC0gYmx1ckFuZFNwcmVhZCk7CisgICAgICAgIHJpZ2h0ID0gbWF4KHJpZ2h0LCBib3hT
aGFkb3ctPngoKSArIGJsdXJBbmRTcHJlYWQpOwogICAgIH0KIH0KIApAQCAtOTUzLDEzICs5NTMs
MTMgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0Qm94U2hhZG93VmVydGljYWxFeAogICAgIHRvcCA9
IDA7CiAgICAgYm90dG9tID0gMDsKIAotICAgIGZvciAoU2hhZG93RGF0YSogYm94U2hhZG93ID0g
dGhpcy0+Ym94U2hhZG93KCk7IGJveFNoYWRvdzsgYm94U2hhZG93ID0gYm94U2hhZG93LT5uZXh0
KSB7Ci0gICAgICAgIGlmIChib3hTaGFkb3ctPnN0eWxlID09IEluc2V0KQorICAgIGZvciAoY29u
c3QgU2hhZG93RGF0YSogYm94U2hhZG93ID0gdGhpcy0+Ym94U2hhZG93KCk7IGJveFNoYWRvdzsg
Ym94U2hhZG93ID0gYm94U2hhZG93LT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKGJveFNoYWRvdy0+
c3R5bGUoKSA9PSBJbnNldCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpbnQgYmx1
ckFuZFNwcmVhZCA9IGJveFNoYWRvdy0+Ymx1ciArIGJveFNoYWRvdy0+c3ByZWFkOworICAgICAg
ICBpbnQgYmx1ckFuZFNwcmVhZCA9IGJveFNoYWRvdy0+Ymx1cigpICsgYm94U2hhZG93LT5zcHJl
YWQoKTsKIAotICAgICAgICB0b3AgPSBtaW4odG9wLCBib3hTaGFkb3ctPnkgLSBibHVyQW5kU3By
ZWFkKTsKLSAgICAgICAgYm90dG9tID0gbWF4KGJvdHRvbSwgYm94U2hhZG93LT55ICsgYmx1ckFu
ZFNwcmVhZCk7CisgICAgICAgIHRvcCA9IG1pbih0b3AsIGJveFNoYWRvdy0+eSgpIC0gYmx1ckFu
ZFNwcmVhZCk7CisgICAgICAgIGJvdHRvbSA9IG1heChib3R0b20sIGJveFNoYWRvdy0+eSgpICsg
Ymx1ckFuZFNwcmVhZCk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgJKHJldmlzaW9uIDU3NDc5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjE0LDcgKzYxNCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIGJhY2tncm91bmQtPm1fb3V0bGluZS5vZmZzZXQoKTsKICAgICB9CiAK
LSAgICBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRTaGFkb3c7IH0KKyAgICBjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaGFkb3c7IH0KICAgICBjb25z
dCBDb2xvciYgdGV4dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPnRleHRTdHJva2VDb2xvcjsgfQogICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlV2lkdGg7IH0KICAgICBjb25z
dCBDb2xvciYgdGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0RmlsbENvbG9yOyB9CkBAIC02MzAsNyArNjMwLDcgQEAgcHVibGljOgogICAgIEVCb3hP
cmllbnQgYm94T3JpZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveE9yaWVudD4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5vcmllbnQpOyB9CiAgICAgRUJveEFs
aWdubWVudCBib3hQYWNrKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveEFsaWdubWVu
dD4ocmFyZU5vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5wYWNrKTsgfQogCi0gICAgU2hh
ZG93RGF0YSogYm94U2hhZG93KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fYm94U2hhZG93LmdldCgpOyB9CisgICAgY29uc3QgU2hhZG93RGF0YSogYm94U2hhZG93KCkg
Y29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYm94U2hhZG93LmdldCgpOyB9
CiAgICAgdm9pZCBnZXRCb3hTaGFkb3dFeHRlbnQoaW50ICZ0b3AsIGludCAmcmlnaHQsIGludCAm
Ym90dG9tLCBpbnQgJmxlZnQpIGNvbnN0OwogICAgIHZvaWQgZ2V0Qm94U2hhZG93SG9yaXpvbnRh
bEV4dGVudChpbnQgJmxlZnQsIGludCAmcmlnaHQpIGNvbnN0OwogICAgIHZvaWQgZ2V0Qm94U2hh
ZG93VmVydGljYWxFeHRlbnQoaW50ICZ0b3AsIGludCAmYm90dG9tKSBjb25zdDsKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDU3NDc5
KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBzdGF0aWMgdm9pZCBnZXRTVkdTaGFkb3dFeHRl
bnQoU2hhZG93RGF0CiAgICAgYm90dG9tID0gMDsKICAgICBsZWZ0ID0gMDsKIAotICAgIGludCBi
bHVyQW5kU3ByZWFkID0gc2hhZG93LT5ibHVyICsgc2hhZG93LT5zcHJlYWQ7CisgICAgaW50IGJs
dXJBbmRTcHJlYWQgPSBzaGFkb3ctPmJsdXIoKSArIHNoYWRvdy0+c3ByZWFkKCk7CiAKLSAgICB0
b3AgPSBtaW4odG9wLCBzaGFkb3ctPnkgLSBibHVyQW5kU3ByZWFkKTsKLSAgICByaWdodCA9IG1h
eChyaWdodCwgc2hhZG93LT54ICsgYmx1ckFuZFNwcmVhZCk7Ci0gICAgYm90dG9tID0gbWF4KGJv
dHRvbSwgc2hhZG93LT55ICsgYmx1ckFuZFNwcmVhZCk7Ci0gICAgbGVmdCA9IG1pbihsZWZ0LCBz
aGFkb3ctPnggLSBibHVyQW5kU3ByZWFkKTsKKyAgICB0b3AgPSBtaW4odG9wLCBzaGFkb3ctPnko
KSAtIGJsdXJBbmRTcHJlYWQpOworICAgIHJpZ2h0ID0gbWF4KHJpZ2h0LCBzaGFkb3ctPngoKSAr
IGJsdXJBbmRTcHJlYWQpOworICAgIGJvdHRvbSA9IG1heChib3R0b20sIHNoYWRvdy0+eSgpICsg
Ymx1ckFuZFNwcmVhZCk7CisgICAgbGVmdCA9IG1pbihsZWZ0LCBzaGFkb3ctPngoKSAtIGJsdXJB
bmRTcHJlYWQpOwogfQogCiB2b2lkIFNWR1JlbmRlclN0eWxlOjppbmZsYXRlRm9yU2hhZG93KElu
dFJlY3QmIHJlcGFpbnRSZWN0KSBjb25zdApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hh
ZG93RGF0YS5jcHAJKHJldmlzaW9uIDU3NDc5KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhZG93RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDIzICsyNSwyMyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBTaGFkb3dEYXRhOjpTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEm
IG8pCi0gICAgOiB4KG8ueCkKLSAgICAsIHkoby55KQotICAgICwgYmx1cihvLmJsdXIpCi0gICAg
LCBzcHJlYWQoby5zcHJlYWQpCi0gICAgLCBzdHlsZShvLnN0eWxlKQotICAgICwgY29sb3Ioby5j
b2xvcikKKyAgICA6IG1feChvLm1feCkKKyAgICAsIG1feShvLm1feSkKKyAgICAsIG1fYmx1cihv
Lm1fYmx1cikKKyAgICAsIG1fc3ByZWFkKG8ubV9zcHJlYWQpCisgICAgLCBtX3N0eWxlKG8ubV9z
dHlsZSkKKyAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQogewotICAgIG5leHQgPSBvLm5leHQgPyBu
ZXcgU2hhZG93RGF0YSgqby5uZXh0KSA6IDA7CisgICAgbV9uZXh0ID0gby5tX25leHQgPyBuZXcg
U2hhZG93RGF0YSgqby5tX25leHQpIDogMDsKIH0KIAogYm9vbCBTaGFkb3dEYXRhOjpvcGVyYXRv
cj09KGNvbnN0IFNoYWRvd0RhdGEmIG8pIGNvbnN0CiB7Ci0gICAgaWYgKChuZXh0ICYmICFvLm5l
eHQpIHx8ICghbmV4dCAmJiBvLm5leHQpIHx8Ci0gICAgICAgIChuZXh0ICYmIG8ubmV4dCAmJiAq
bmV4dCAhPSAqby5uZXh0KSkKKyAgICBpZiAoKG1fbmV4dCAmJiAhby5tX25leHQpIHx8ICghbV9u
ZXh0ICYmIG8ubV9uZXh0KSB8fAorICAgICAgICAobV9uZXh0ICYmIG8ubV9uZXh0ICYmICptX25l
eHQgIT0gKm8ubV9uZXh0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVy
biB4ID09IG8ueCAmJiB5ID09IG8ueSAmJiBibHVyID09IG8uYmx1ciAmJiBzcHJlYWQgPT0gby5z
cHJlYWQgJiYgc3R5bGUgPT0gby5zdHlsZSAmJiBjb2xvciA9PSBvLmNvbG9yOworICAgIHJldHVy
biBtX3ggPT0gby5tX3ggJiYgbV95ID09IG8ubV95ICYmIG1fYmx1ciA9PSBvLm1fYmx1ciAmJiBt
X3NwcmVhZCA9PSBvLm1fc3ByZWFkICYmIG1fc3R5bGUgPT0gby5tX3N0eWxlICYmIG1fY29sb3Ig
PT0gby5tX2NvbG9yOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TaGFkb3dEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU2hhZG93RGF0YS5oCShyZXZpc2lvbiA1NzQ3OSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYWRvd0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMzEgKzM0LDMx
IEBAIGVudW0gU2hhZG93U3R5bGUgeyBOb3JtYWwsIEluc2V0IH07CiAKIC8vIFRoaXMgc3RydWN0
IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHNoYWRvd3MgZm9yIHRoZSB0ZXh0LXNoYWRvdyBhbmQg
Ym94LXNoYWRvdyBwcm9wZXJ0aWVzLgogCi1zdHJ1Y3QgU2hhZG93RGF0YSA6IEZhc3RBbGxvY0Jh
c2UgeworY2xhc3MgU2hhZG93RGF0YSA6IHB1YmxpYyBGYXN0QWxsb2NCYXNlIHsKK3B1YmxpYzoK
ICAgICBTaGFkb3dEYXRhKCkKLSAgICAgICAgOiB4KDApCi0gICAgICAgICwgeSgwKQotICAgICAg
ICAsIGJsdXIoMCkKLSAgICAgICAgLCBzcHJlYWQoMCkKLSAgICAgICAgLCBzdHlsZShOb3JtYWwp
Ci0gICAgICAgICwgbmV4dCgwKQorICAgICAgICA6IG1feCgwKQorICAgICAgICAsIG1feSgwKQor
ICAgICAgICAsIG1fYmx1cigwKQorICAgICAgICAsIG1fc3ByZWFkKDApCisgICAgICAgICwgbV9z
dHlsZShOb3JtYWwpCisgICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAgIH0KIAogICAgIFNo
YWRvd0RhdGEoaW50IHgsIGludCB5LCBpbnQgYmx1ciwgaW50IHNwcmVhZCwgU2hhZG93U3R5bGUg
c3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvcikKLSAgICAgICAgOiB4KHgpCi0gICAgICAgICwgeSh5
KQotICAgICAgICAsIGJsdXIoYmx1cikKLSAgICAgICAgLCBzcHJlYWQoc3ByZWFkKQotICAgICAg
ICAsIHN0eWxlKHN0eWxlKQotICAgICAgICAsIGNvbG9yKGNvbG9yKQotICAgICAgICAsIG5leHQo
MCkKKyAgICAgICAgOiBtX3goeCkKKyAgICAgICAgLCBtX3koeSkKKyAgICAgICAgLCBtX2JsdXIo
Ymx1cikKKyAgICAgICAgLCBtX3NwcmVhZChzcHJlYWQpCisgICAgICAgICwgbV9zdHlsZShzdHls
ZSkKKyAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQorICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsK
ICAgICB9CiAKICAgICBTaGFkb3dEYXRhKGNvbnN0IFNoYWRvd0RhdGEmIG8pOwotCi0gICAgflNo
YWRvd0RhdGEoKSB7IGRlbGV0ZSBuZXh0OyB9CisgICAgflNoYWRvd0RhdGEoKSB7IGRlbGV0ZSBt
X25leHQ7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFkb3dEYXRhJiBvKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU2hhZG93RGF0YSYgbykgY29uc3QKQEAgLTY2
LDEzICs2NiwyNCBAQCBzdHJ1Y3QgU2hhZG93RGF0YSA6IEZhc3RBbGxvY0Jhc2UgewogICAgICAg
ICByZXR1cm4gISgqdGhpcyA9PSBvKTsKICAgICB9CiAgICAgCi0gICAgaW50IHg7Ci0gICAgaW50
IHk7Ci0gICAgaW50IGJsdXI7Ci0gICAgaW50IHNwcmVhZDsKLSAgICBTaGFkb3dTdHlsZSBzdHls
ZTsKLSAgICBDb2xvciBjb2xvcjsKLSAgICBTaGFkb3dEYXRhKiBuZXh0OworICAgIGludCB4KCkg
Y29uc3QgeyByZXR1cm4gbV94OyB9CisgICAgaW50IHkoKSBjb25zdCB7IHJldHVybiBtX3k7IH0K
KyAgICBpbnQgYmx1cigpIGNvbnN0IHsgcmV0dXJuIG1fYmx1cjsgfQorICAgIGludCBzcHJlYWQo
KSBjb25zdCB7IHJldHVybiBtX3NwcmVhZDsgfQorICAgIFNoYWRvd1N0eWxlIHN0eWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zdHlsZTsgfQorICAgIGNvbnN0IENvbG9yJiBjb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1fY29sb3I7IH0KKyAgICAKKyAgICBjb25zdCBTaGFkb3dEYXRhKiBuZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9uZXh0OyB9CisgICAgdm9pZCBzZXROZXh0KFNoYWRvd0RhdGEqIHNoYWRv
dykgeyBtX25leHQgPSBzaGFkb3c7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV94OworICAgIGlu
dCBtX3k7CisgICAgaW50IG1fYmx1cjsKKyAgICBpbnQgbV9zcHJlYWQ7CisgICAgU2hhZG93U3R5
bGUgbV9zdHlsZTsKKyAgICBDb2xvciBtX2NvbG9yOworICAgIFNoYWRvd0RhdGEqIG1fbmV4dDsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="36836"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>