<?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>34852</bug_id>
          
          <creation_ts>2010-02-11 10:22:56 -0800</creation_ts>
          <short_desc>Refactor parsing/serialization functions in HTMLInputElement</short_desc>
          <delta_ts>2010-02-13 12:02:36 -0800</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>528+ (Nightly build)</version>
          <rep_platform>Other</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="Kent Tamura">tkent</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>189732</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-11 10:22:56 -0800</bug_when>
    <thetext>Refacotr parsing/serialization functions in HTMLInputElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189737</commentid>
    <comment_count>1</comment_count>
      <attachid>48582</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-11 10:36:12 -0800</bug_when>
    <thetext>Created attachment 48582
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190081</commentid>
    <comment_count>2</comment_count>
      <attachid>48582</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-12 09:51:50 -0800</bug_when>
    <thetext>Comment on attachment 48582
Proposed patch

I would prefer that we use references rather than pointers for the out arguments to all these functions.

&gt; +        Refacotr parsing/serialization functions in HTMLInputElement.

Typo: Refacotr.

&gt; +        value. parseToDoubleForNumer() and parseToDateComponents()

Typo: parseToDoubleForNuer.

&gt; +        functions are helper functions for it. serializeForCurrentType()
&gt; +        is the top-level function to serialize a double value to a
&gt; +        type-dependent string, and serializeForNumberType() and
&gt; +        serializeForDateTimeTypes() are helper functions for it.

I think serializeForCurrentType could be named just serialize.

&gt; +    ASSERT_NOT_REACHED();
&gt; +    return;
&gt; +}

It&apos;s not good style to have return at the end of the function. I suggest just leaving it out.

&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return String();
&gt;      }

Including a default case defeats the GCC warning that lets us know if we forget to add a new enumeration value to the switch statement. If possible you should restructure so we don&apos;t have te default. In fact, I think the warning is slightly more important than the assertion, so I&apos;d be willing to sacrifice that.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190286</commentid>
    <comment_count>3</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-02-13 12:02:36 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 48582 [details])
&gt; I would prefer that we use references rather than pointers for the out
&gt; arguments to all these functions.

As for the pointer arguments of parseToDoubleForNumberType() and parseToDateComponents(), they are used for just check syntax of input stings, and resultant double and DateCompnents are not used in that case.  So pointers are reasonable.

&gt; &gt; +        Refacotr parsing/serialization functions in HTMLInputElement.
&gt; Typo: Refacotr.

Fixed.

&gt; &gt; +        value. parseToDoubleForNumer() and parseToDateComponents()
&gt; Typo: parseToDoubleForNuer.

Fixed.
I made too many typos...

&gt; &gt; +        functions are helper functions for it. serializeForCurrentType()
&gt; &gt; +        is the top-level function to serialize a double value to a
&gt; &gt; +        type-dependent string, and serializeForNumberType() and
&gt; &gt; +        serializeForDateTimeTypes() are helper functions for it.
&gt; 
&gt; I think serializeForCurrentType could be named just serialize.

ok, renamed to serialize().

&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; &gt; +    return;
&gt; &gt; +}
&gt; 
&gt; It&apos;s not good style to have return at the end of the function. I suggest just
&gt; leaving it out.

Removed.

&gt; &gt; +    default:
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +        return String();
&gt; &gt;      }

Removed default:


Landed as r54754.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48582</attachid>
            <date>2010-02-11 10:36:12 -0800</date>
            <delta_ts>2010-02-12 09:51:49 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-34852-20100212033609.patch</filename>
            <type>text/plain</type>
            <size>16809</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGIxMDMwOS4uOTQ5OWNmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wMi0xMiAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVmYWNvdHIgcGFyc2luZy9zZXJpYWxpemF0aW9uIGZ1bmN0aW9ucyBp
biBIVE1MSW5wdXRFbGVtZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzQ4NTIKKworICAgICAgICAtIFJlbmFtZSBmb3JtU3RyaW5nVG9Eb3VibGUo
KSB0byBwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSgpCisgICAgICAgIC0gUmVuYW1lIGZvcm1T
dHJpbmdUb0RhdGVDb21wb25lbnRzKCkgdG8gcGFyc2VUb0RhdGVDb21wb25lbnRzKCkKKyAgICAg
ICAgLSBSZW5hbWUgZm9ybVN0cmluZ0Zyb21Eb3VibGUoKSB0byBzZXJpYWxpemVGb3JOdW1iZXJU
eXBlKCkKKyAgICAgICAgLSBBZGQgc2VyaWFsaXplRm9yRGF0ZVRpbWVUeXBlcygpCisgICAgICAg
ICAgVGhlIGNvZGUgaXMgbW92ZWQgZnJvbSBzZXRWYWx1ZUFzRGF0ZSgpIGFuZCBzZXREYXRlVmFs
dWUoKS4KKyAgICAgICAgLSBBZGQgc2VyaWFsaXplRm9yQ3VycmVudFR5cGUoKQorICAgICAgICAK
KyAgICAgICAgcGFyc2VUb0RvdWJsZSgpIGlzIHRoZSB0b3AtbGV2ZWwgZnVuY3Rpb24gdG8gcGFy
c2UgYQorICAgICAgICB0eXBlLWRlcGVuZGVudCBzdHJpbmcgYW5kIHJldHVybiBhIGRvdWJsZQor
ICAgICAgICB2YWx1ZS4gcGFyc2VUb0RvdWJsZUZvck51bWVyKCkgYW5kIHBhcnNlVG9EYXRlQ29t
cG9uZW50cygpCisgICAgICAgIGZ1bmN0aW9ucyBhcmUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaXQu
IHNlcmlhbGl6ZUZvckN1cnJlbnRUeXBlKCkKKyAgICAgICAgaXMgdGhlIHRvcC1sZXZlbCBmdW5j
dGlvbiB0byBzZXJpYWxpemUgYSBkb3VibGUgdmFsdWUgdG8gYQorICAgICAgICB0eXBlLWRlcGVu
ZGVudCBzdHJpbmcsIGFuZCBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKCkgYW5kCisgICAgICAgIHNl
cmlhbGl6ZUZvckRhdGVUaW1lVHlwZXMoKSBhcmUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaXQuCisK
KyAgICAgICAgTm8gdGVzdHMgYmVjYXVzZSBvZiBubyBmdW5jdGlvbmFsIGNoYW5nZXMuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6cGFyc2VUb0RvdWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRF
bGVtZW50Ojp2YWx1ZUFzRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpzZXRWYWx1ZUFzRGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpz
ZXRWYWx1ZUFzTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNl
cmlhbGl6ZUZvckRhdGVUaW1lVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6c2VyaWFsaXplRm9yQ3VycmVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXJzZVRvRGF0ZUNvbXBvbmVudHMpOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2xpZGVyUmFuZ2U6OnZhbHVlRnJvbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2xpZGVyOjp1cGRhdGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlk
ZXI6OnNldFZhbHVlRm9yUG9zaXRpb24pOgorCiAyMDEwLTAyLTExICBLZW50IFRhbXVyYSAgPHRr
ZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCBhMWFkMGMxLi4xNmQ0OGFhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCkBAIC01MDAsNyArNTAwLDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVt
ZW50OjpzdGVwTWlzbWF0Y2goKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2Fz
ZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlOwotICAgICAgICBpZiAoIWZv
cm1TdHJpbmdUb0RvdWJsZSh2YWx1ZSgpLCAmZG91YmxlVmFsdWUpKQorICAgICAgICBpZiAoIXBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKHZhbHVlKCksICZkb3VibGVWYWx1ZSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGRvdWJsZVZhbHVlID0gZmFicyhkb3VibGVWYWx1
ZSAtIHN0ZXBCYXNlKCkpOwogICAgICAgICBpZiAoaXNpbmYoZG91YmxlVmFsdWUpKQpAQCAtNjIx
LDcgKzYyMSw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChk
b3VibGUqIHN0ZXApIGNvbnN0CiAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0ZXBTdHJpbmcs
ICJhbnkiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRvdWJsZSBwYXJzZWQ7Ci0gICAg
aWYgKCFmb3JtU3RyaW5nVG9Eb3VibGUoc3RlcFN0cmluZywgJnBhcnNlZCkgfHwgcGFyc2VkIDw9
IDAuMCkgeworICAgIGlmICghcGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoc3RlcFN0cmluZywg
JnBhcnNlZCkgfHwgcGFyc2VkIDw9IDAuMCkgewogICAgICAgICAqc3RlcCA9IGRlZmF1bHRTdGVw
ICogc3RlcFNjYWxlRmFjdG9yOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xNjA3
LDcgKzE2MDcsNyBAQCBkb3VibGUgSFRNTElucHV0RWxlbWVudDo6cGFyc2VUb0RvdWJsZShjb25z
dCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSkgYwogICAgIGNhc2UgVElNRToKICAg
ICBjYXNlIFdFRUs6IHsKICAgICAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKLSAgICAgICAgaWYg
KCFmb3JtU3RyaW5nVG9EYXRlQ29tcG9uZW50cyhpbnB1dFR5cGUoKSwgc3JjLCAmZGF0ZSkpCisg
ICAgICAgIGlmICghcGFyc2VUb0RhdGVDb21wb25lbnRzKGlucHV0VHlwZSgpLCBzcmMsICZkYXRl
KSkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIGRvdWJsZSBtc2Vj
ID0gZGF0ZS5taWxsaXNlY29uZHNTaW5jZUVwb2NoKCk7CiAgICAgICAgIEFTU0VSVChpc2Zpbml0
ZShtc2VjKSk7CkBAIC0xNjE1LDcgKzE2MTUsNyBAQCBkb3VibGUgSFRNTElucHV0RWxlbWVudDo6
cGFyc2VUb0RvdWJsZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlIGRlZmF1bHRWYWx1ZSkgYwog
ICAgIH0KICAgICBjYXNlIE1PTlRIOiB7CiAgICAgICAgIERhdGVDb21wb25lbnRzIGRhdGU7Ci0g
ICAgICAgIGlmICghZm9ybVN0cmluZ1RvRGF0ZUNvbXBvbmVudHMoaW5wdXRUeXBlKCksIHNyYywg
JmRhdGUpKQorICAgICAgICBpZiAoIXBhcnNlVG9EYXRlQ29tcG9uZW50cyhpbnB1dFR5cGUoKSwg
c3JjLCAmZGF0ZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogICAgICAgICBk
b3VibGUgbW9udGhzID0gZGF0ZS5tb250aHNTaW5jZUVwb2NoKCk7CiAgICAgICAgIEFTU0VSVChp
c2Zpbml0ZShtb250aHMpKTsKQEAgLTE2MjQsNyArMTYyNCw3IEBAIGRvdWJsZSBIVE1MSW5wdXRF
bGVtZW50OjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUgZGVmYXVsdFZh
bHVlKSBjCiAgICAgY2FzZSBOVU1CRVI6CiAgICAgY2FzZSBSQU5HRTogewogICAgICAgICBkb3Vi
bGUgbnVtYmVyVmFsdWU7Ci0gICAgICAgIGlmICghZm9ybVN0cmluZ1RvRG91YmxlKHNyYywgJm51
bWJlclZhbHVlKSkKKyAgICAgICAgaWYgKCFwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZShzcmMs
ICZudW1iZXJWYWx1ZSkpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogICAgICAg
ICBBU1NFUlQoaXNmaW5pdGUobnVtYmVyVmFsdWUpKTsKICAgICAgICAgcmV0dXJuIG51bWJlclZh
bHVlOwpAQCAtMTY2Miw3ICsxNjYyLDcgQEAgZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVl
QXNEYXRlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIHBhcnNlVG9Eb3VibGUodmFsdWUoKSwgRGF0
ZUNvbXBvbmVudHM6OmludmFsaWRNaWxsaXNlY29uZHMoKSk7CiAgICAgY2FzZSBNT05USDogewog
ICAgICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwotICAgICAgICBpZiAoIWZvcm1TdHJpbmdUb0Rh
dGVDb21wb25lbnRzKGlucHV0VHlwZSgpLCB2YWx1ZSgpLCAmZGF0ZSkpCisgICAgICAgIGlmICgh
cGFyc2VUb0RhdGVDb21wb25lbnRzKGlucHV0VHlwZSgpLCB2YWx1ZSgpLCAmZGF0ZSkpCiAgICAg
ICAgICAgICByZXR1cm4gRGF0ZUNvbXBvbmVudHM6OmludmFsaWRNaWxsaXNlY29uZHMoKTsKICAg
ICAgICAgZG91YmxlIG1zZWMgPSBkYXRlLm1pbGxpc2Vjb25kc1NpbmNlRXBvY2goKTsKICAgICAg
ICAgQVNTRVJUKGlzZmluaXRlKG1zZWMpKTsKQEAgLTE2OTYsMjQgKzE2OTYsMjIgQEAgZG91Ymxl
IEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlQXNEYXRlKCkgY29uc3QKIAogdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpzZXRWYWx1ZUFzRGF0ZShkb3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIERhdGVDb21wb25lbnRzIGRhdGU7Ci0gICAgYm9vbCBzdWNjZXNzOwogICAgIHN3aXRj
aCAoaW5wdXRUeXBlKCkpIHsKICAgICBjYXNlIERBVEU6Ci0gICAgICAgIHN1Y2Nlc3MgPSBkYXRl
LnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JEYXRlKHZhbHVlKTsKLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEQVRFVElNRToKLSAgICAgICAgc3VjY2VzcyA9IGRhdGUuc2V0TWlsbGlzZWNv
bmRzU2luY2VFcG9jaEZvckRhdGVUaW1lKHZhbHVlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT05USDoKLSAgICAgICAgc3VjY2VzcyA9IGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9j
aEZvck1vbnRoKHZhbHVlKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUSU1FOgotICAgICAg
ICBzdWNjZXNzID0gZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZU1pZG5pZ2h0KHZhbHVlKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBXRUVLOgotICAgICAgICBzdWNjZXNzID0gZGF0ZS5zZXRN
aWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yV2Vlayh2YWx1ZSk7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICBzZXRWYWx1ZShzZXJpYWxpemVGb3JEYXRlVGltZVR5cGVzKHZhbHVlKSk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIE1PTlRIOiB7CisgICAgICAgIERhdGVDb21wb25lbnRzIGRhdGU7
CisgICAgICAgIGlmICghZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9yTW9udGgodmFs
dWUpKSB7CisgICAgICAgICAgICBzZXRWYWx1ZShTdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgc2V0VmFsdWUoZGF0ZS50b1N0cmluZygpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIEJVVFRPTjoKICAgICBjYXNlIENIRUNLQk9YOgog
ICAgIGNhc2UgQ09MT1I6CkBAIC0xNzM1LDMzICsxNzMzLDggQEAgdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpzZXRWYWx1ZUFzRGF0ZShkb3VibGUgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IGNhc2UgVVJMOgogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICByZXR1
cm47Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHN1Y2Nlc3MgPSBmYWxzZTsKICAgICB9Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgIHNl
dFZhbHVlKFN0cmluZygpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzZXREYXRlVmFs
dWUoZGF0ZSk7Ci19Ci0KLXZvaWQgSFRNTElucHV0RWxlbWVudDo6c2V0RGF0ZVZhbHVlKGNvbnN0
IERhdGVDb21wb25lbnRzJiBkYXRlKQotewotICAgIGRvdWJsZSBzdGVwOwotICAgIGlmICghZ2V0
QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpIHsKLSAgICAgICAgc2V0VmFsdWUoZGF0ZS50b1N0cmlu
ZygpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWZtb2Qoc3RlcCwgbXNlY1Bl
ck1pbnV0ZSkpIHsKLSAgICAgICAgc2V0VmFsdWUoZGF0ZS50b1N0cmluZyhEYXRlQ29tcG9uZW50
czo6Tm9uZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghZm1vZChzdGVwLCBt
c2VjUGVyU2Vjb25kKSkgewotICAgICAgICBzZXRWYWx1ZShkYXRlLnRvU3RyaW5nKERhdGVDb21w
b25lbnRzOjpTZWNvbmQpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzZXRWYWx1ZShk
YXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpNaWxsaXNlY29uZCkpOworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCiBkb3VibGUgSFRNTElucHV0RWxlbWVudDo6dmFsdWVBc051bWJl
cigpIGNvbnN0CkBAIC0xODA5LDMyICsxNzgyLDExMSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6
OnNldFZhbHVlQXNOdW1iZXIoZG91YmxlIG5ld1ZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7CiAgICAgY2FzZSBEQVRFOgogICAgIGNhc2UgREFURVRJ
TUU6CisgICAgY2FzZSBEQVRFVElNRUxPQ0FMOgorICAgIGNhc2UgTU9OVEg6CisgICAgY2FzZSBO
VU1CRVI6CisgICAgY2FzZSBSQU5HRToKICAgICBjYXNlIFRJTUU6CiAgICAgY2FzZSBXRUVLOgot
ICAgICAgICBzZXRWYWx1ZUFzRGF0ZShuZXdWYWx1ZSwgZWMpOworICAgICAgICBzZXRWYWx1ZShz
ZXJpYWxpemVGb3JDdXJyZW50VHlwZShuZXdWYWx1ZSkpOwogICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBNT05USDogewotICAgICAgICBEYXRlQ29tcG9uZW50cyBkYXRlOwotICAgICAgICBpZiAo
IWRhdGUuc2V0TW9udGhzU2luY2VFcG9jaChuZXdWYWx1ZSkpIHsKLSAgICAgICAgICAgIHNldFZh
bHVlKFN0cmluZygpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBz
ZXRWYWx1ZShkYXRlLnRvU3RyaW5nKCkpOworCisgICAgY2FzZSBCVVRUT046CisgICAgY2FzZSBD
SEVDS0JPWDoKKyAgICBjYXNlIENPTE9SOgorICAgIGNhc2UgRU1BSUw6CisgICAgY2FzZSBGSUxF
OgorICAgIGNhc2UgSElEREVOOgorICAgIGNhc2UgSU1BR0U6CisgICAgY2FzZSBJU0lOREVYOgor
ICAgIGNhc2UgUEFTU1dPUkQ6CisgICAgY2FzZSBSQURJTzoKKyAgICBjYXNlIFJFU0VUOgorICAg
IGNhc2UgU0VBUkNIOgorICAgIGNhc2UgU1VCTUlUOgorICAgIGNhc2UgVEVMRVBIT05FOgorICAg
IGNhc2UgVEVYVDoKKyAgICBjYXNlIFVSTDoKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIERBVEVUSU1FTE9DQUw6IHsKLSAg
ICAgICAgRGF0ZUNvbXBvbmVudHMgZGF0ZTsKLSAgICAgICAgaWYgKCFkYXRlLnNldE1pbGxpc2Vj
b25kc1NpbmNlRXBvY2hGb3JEYXRlVGltZUxvY2FsKG5ld1ZhbHVlKSkgewotICAgICAgICAgICAg
c2V0VmFsdWUoU3RyaW5nKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIHNldERhdGVWYWx1ZShkYXRlKTsKLSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybjsKK30KKworU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnNl
cmlhbGl6ZUZvckRhdGVUaW1lVHlwZXMoZG91YmxlIHZhbHVlKSBjb25zdAoreworICAgIGJvb2wg
c3VjY2VzczsKKyAgICBEYXRlQ29tcG9uZW50cyBkYXRlOworICAgIHN3aXRjaCAoaW5wdXRUeXBl
KCkpIHsKKyAgICBjYXNlIERBVEU6CisgICAgICAgIHN1Y2Nlc3MgPSBkYXRlLnNldE1pbGxpc2Vj
b25kc1NpbmNlRXBvY2hGb3JEYXRlKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBE
QVRFVElNRToKKyAgICAgICAgc3VjY2VzcyA9IGRhdGUuc2V0TWlsbGlzZWNvbmRzU2luY2VFcG9j
aEZvckRhdGVUaW1lKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBEQVRFVElNRUxP
Q0FMOgorICAgICAgICBzdWNjZXNzID0gZGF0ZS5zZXRNaWxsaXNlY29uZHNTaW5jZUVwb2NoRm9y
RGF0ZVRpbWVMb2NhbCh2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTU9OVEg6Cisg
ICAgICAgIHN1Y2Nlc3MgPSBkYXRlLnNldE1vbnRoc1NpbmNlRXBvY2godmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFRJTUU6CisgICAgICAgIHN1Y2Nlc3MgPSBkYXRlLnNldE1pbGxp
c2Vjb25kc1NpbmNlTWlkbmlnaHQodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdF
RUs6CisgICAgICAgIHN1Y2Nlc3MgPSBkYXRlLnNldE1pbGxpc2Vjb25kc1NpbmNlRXBvY2hGb3JX
ZWVrKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVU1CRVI6CisgICAgY2FzZSBS
QU5HRToKKyAgICBjYXNlIEJVVFRPTjoKKyAgICBjYXNlIENIRUNLQk9YOgorICAgIGNhc2UgQ09M
T1I6CisgICAgY2FzZSBFTUFJTDoKKyAgICBjYXNlIEZJTEU6CisgICAgY2FzZSBISURERU46Cisg
ICAgY2FzZSBJTUFHRToKKyAgICBjYXNlIElTSU5ERVg6CisgICAgY2FzZSBQQVNTV09SRDoKKyAg
ICBjYXNlIFJBRElPOgorICAgIGNhc2UgUkVTRVQ6CisgICAgY2FzZSBTRUFSQ0g6CisgICAgY2Fz
ZSBTVUJNSVQ6CisgICAgY2FzZSBURUxFUEhPTkU6CisgICAgY2FzZSBURVhUOgorICAgIGNhc2Ug
VVJMOgorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQorICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisgICAgZG91YmxlIHN0ZXA7CisgICAgaWYgKCFnZXRBbGxvd2VkVmFs
dWVTdGVwKCZzdGVwKSkKKyAgICAgICAgcmV0dXJuIGRhdGUudG9TdHJpbmcoKTsKKyAgICBpZiAo
IWZtb2Qoc3RlcCwgbXNlY1Blck1pbnV0ZSkpCisgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5n
KERhdGVDb21wb25lbnRzOjpOb25lKTsKKyAgICBpZiAoIWZtb2Qoc3RlcCwgbXNlY1BlclNlY29u
ZCkpCisgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpTZWNvbmQp
OworICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKERhdGVDb21wb25lbnRzOjpNaWxsaXNlY29uZCk7
Cit9CisKK1N0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpzZXJpYWxpemVGb3JDdXJyZW50VHlwZShk
b3VibGUgdmFsdWUpIGNvbnN0Cit7CisgICAgaWYgKCFpc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKyAgICBzd2l0Y2ggKGlucHV0VHlwZSgpKSB7CisgICAgY2FzZSBE
QVRFOgorICAgIGNhc2UgREFURVRJTUU6CisgICAgY2FzZSBEQVRFVElNRUxPQ0FMOgorICAgIGNh
c2UgTU9OVEg6CisgICAgY2FzZSBUSU1FOgorICAgIGNhc2UgV0VFSzoKKyAgICAgICAgcmV0dXJu
IHNlcmlhbGl6ZUZvckRhdGVUaW1lVHlwZXModmFsdWUpOwogICAgIGNhc2UgTlVNQkVSOgogICAg
IGNhc2UgUkFOR0U6Ci0gICAgICAgIHNldFZhbHVlKGZvcm1TdHJpbmdGcm9tRG91YmxlKG5ld1Zh
bHVlKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51bWJl
clR5cGUodmFsdWUpOwogCiAgICAgY2FzZSBCVVRUT046CiAgICAgY2FzZSBDSEVDS0JPWDoKQEAg
LTE4NTIsMTEgKzE5MDQsMTAgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZUFzTnVt
YmVyKGRvdWJsZSBuZXdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgY2FzZSBURUxFUEhP
TkU6CiAgICAgY2FzZSBURVhUOgogICAgIGNhc2UgVVJMOgotICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwotICAgICAgICByZXR1cm47CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm47CisgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCiBTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6cGxhY2Vob2xkZXIoKSBjb25zdApAQCAtMjU2
MSw3ICsyNjEyLDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp3aWxsVmFsaWRhdGUoKSBjb25z
dAogICAgICAgICAgICBpbnB1dFR5cGUoKSAhPSBCVVRUT04gJiYgaW5wdXRUeXBlKCkgIT0gUkVT
RVQ7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojpmb3JtU3RyaW5nRnJvbURvdWJsZShk
b3VibGUgbnVtYmVyKQorU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnNlcmlhbGl6ZUZvck51bWJl
clR5cGUoZG91YmxlIG51bWJlcikKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8gSFRNTDUsICJ0aGUg
YmVzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyIG4gYXMgYSBmbG9hdGluZwogICAgIC8v
IHBvaW50IG51bWJlciIgaXMgYSBzdHJpbmcgcHJvZHVjZWQgYnkgYXBwbHlpbmcgVG9TdHJpbmco
KSB0byBuLgpAQCAtMjU3MSw3ICsyNjIyLDcgQEAgU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OmZv
cm1TdHJpbmdGcm9tRG91YmxlKGRvdWJsZSBudW1iZXIpCiAgICAgcmV0dXJuIFN0cmluZyhidWZm
ZXIsIGxlbmd0aCk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6Zm9ybVN0cmluZ1RvRG91
YmxlKGNvbnN0IFN0cmluZyYgc3JjLCBkb3VibGUqIG91dCkKK2Jvb2wgSFRNTElucHV0RWxlbWVu
dDo6cGFyc2VUb0RvdWJsZUZvck51bWJlclR5cGUoY29uc3QgU3RyaW5nJiBzcmMsIGRvdWJsZSog
b3V0KQogewogICAgIC8vIFNlZSBIVE1MNSAyLjQuNC4zIGBSZWFsIG51bWJlcnMuJwogCkBAIC0y
NTk3LDcgKzI2NDgsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJpbmdUb0RvdWJs
ZShjb25zdCBTdHJpbmcmIHNyYywgZG91YmxlKiBvdXQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgSFRNTElucHV0RWxlbWVudDo6Zm9ybVN0cmluZ1RvRGF0ZUNvbXBvbmVudHMoSW5wdXRU
eXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgZm9ybVN0cmluZywgRGF0ZUNvbXBvbmVudHMqIG91dCkK
K2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cGFyc2VUb0RhdGVDb21wb25lbnRzKElucHV0VHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGZvcm1TdHJpbmcsIERhdGVDb21wb25lbnRzKiBvdXQpCiB7CiAg
ICAgaWYgKGZvcm1TdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaAppbmRleCA0NjY1NDM3Li5kMTRlMTk1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKQEAgLTI2MiwxNCArMjYyLDE0IEBAIHB1YmxpYzoKICAgICAvLyBDb252ZXJ0cyB0
aGUgc3BlY2lmaWVkIHN0cmluZyB0byBhIGZsb2F0aW5nIG51bWJlci4KICAgICAvLyBJZiB0aGUg
Y29udmVyc2lvbiBmYWlscywgdGhlIHJldHVybiB2YWx1ZSBpcyBmYWxzZS4gVGFrZSBjYXJlIHRo
YXQgbGVhZGluZyBvciB0cmFpbGluZyB1bm5lY2Vzc2FyeSBjaGFyYWN0ZXJzIG1ha2UgZmFpbHVy
ZXMuICBUaGlzIHJldHVybnMgZmFsc2UgZm9yIGFuIGVtcHR5IHN0cmluZyBpbnB1dC4KICAgICAv
LyBUaGUgZG91YmxlKiBwYXJhbWV0ZXIgbWF5IGJlIDAuCi0gICAgc3RhdGljIGJvb2wgZm9ybVN0
cmluZ1RvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSopOworICAgIHN0YXRpYyBib29sIHBh
cnNlVG9Eb3VibGVGb3JOdW1iZXJUeXBlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSopOwogICAgIC8v
IENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIHRvIGEgc3RyaW5nLiBUaGlzIGlzIGFuIGlt
cGxlbWVudGF0aW9uIG9mCiAgICAgLy8gSFRNTDUncyAiYWxnb3JpdGhtIHRvIGNvbnZlcnQgYSBu
dW1iZXIgdG8gYSBzdHJpbmciIGZvciBOVU1CRVIvUkFOR0UgdHlwZXMuCi0gICAgc3RhdGljIFN0
cmluZyBmb3JtU3RyaW5nRnJvbURvdWJsZShkb3VibGUpOworICAgIHN0YXRpYyBTdHJpbmcgc2Vy
aWFsaXplRm9yTnVtYmVyVHlwZShkb3VibGUpOwogICAgIC8vIFBhcnNlcyB0aGUgc3BlY2lmaWVk
IHN0cmluZyBhcyB0aGUgSW5wdXRUeXBlLCBhbmQgcmV0dXJucyB0cnVlIGlmIGl0IGlzIHN1Y2Nl
c3NmdWxseSBwYXJzZWQuCiAgICAgLy8gQW4gaW5zdGFuY2UgcG9pbnRlZCBieSB0aGUgRGF0ZUNv
bXBvbmVudHMqIHBhcmFtZXRlciB3aWxsIGhhdmUgcGFyc2VkIHZhbHVlcyBhbmQgYmUKICAgICAv
LyBtb2RpZmllZCBldmVuIGlmIHRoZSBwYXJzaW5nIGZhaWxzLiAgVGhlIERhdGVDb21wb25lbnRz
KiBwYXJhbWV0ZXIgbWF5IGJlIDAuCi0gICAgc3RhdGljIGJvb2wgZm9ybVN0cmluZ1RvRGF0ZUNv
bXBvbmVudHMoSW5wdXRUeXBlLCBjb25zdCBTdHJpbmcmLCBEYXRlQ29tcG9uZW50cyopOworICAg
IHN0YXRpYyBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50cyhJbnB1dFR5cGUsIGNvbnN0IFN0cmlu
ZyYsIERhdGVDb21wb25lbnRzKik7CiAgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CkBAIC0zMDUsMTEgKzMwNSwxNCBAQCBwcml2
YXRlOgogICAgIC8vIHN1Y2NlZWRzOyBSZXR1cm5zIGRlZmF1bHRWYWx1ZSBvdGhlcndpc2UuIFRo
aXMgZnVuY3Rpb24gY2FuCiAgICAgLy8gcmV0dXJuIE5hTiBvciBJbmZpbml0eSBvbmx5IGlmIGRl
ZmF1bHRWYWx1ZSBpcyBOYU4gb3IgSW5maW5pdHkuCiAgICAgZG91YmxlIHBhcnNlVG9Eb3VibGUo
Y29uc3QgU3RyaW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3Q7Ci0KLSAgICAvLyBHZW5l
cmF0ZXMgYSBzdWl0YWJsZSBzdHJpbmcgZm9yIHRoZSBzcGVjaWZpZWQgRGF0ZUNvbXBvbmVudHMg
YW5kIHRoZQotICAgIC8vIHN0ZXAgdmFsdWUsIGFuZCBjYWxscyBzZXRWYWx1ZSgpIHdpdGggaXQu
Ci0gICAgdm9pZCBzZXREYXRlVmFsdWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmKTsKLQorICAgIC8v
IENyZWF0ZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGRvdWJsZSB2
YWx1ZSBmb3IgdGhlCisgICAgLy8gY3VycmVudCBpbnB1dCB0eXBlLiBJZiBOYU4gb3IgSW5maW5p
dHkgaXMgc3BlY2lmaWVkLCB0aGlzIHJldHVybnMgYW4KKyAgICAvLyBlbXRweSBzdHJpbmcuIFRo
aXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIHR5cGVzIHdpdGhvdXQgdmFsdWVBc051bWJlci4K
KyAgICBTdHJpbmcgc2VyaWFsaXplRm9yQ3VycmVudFR5cGUoZG91YmxlKSBjb25zdDsKKyAgICAv
LyBDcmVhdGUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNwZWNpZmllZCBkb3VibGUg
dmFsdWUgZm9yIHRoZQorICAgIC8vIGN1cnJlbnQgaW5wdXQgdHlwZS4gVGhlIHR5cGUgbXVzdCBi
ZSBvbmUgb2YgREFURSwgREFURVRJTUUsCisgICAgLy8gREFURVRJTUVMT0NBTCwgTU9OVEgsIFRJ
TUUsIGFuZCBXRUVLLgorICAgIFN0cmluZyBzZXJpYWxpemVGb3JEYXRlVGltZVR5cGVzKGRvdWJs
ZSkgY29uc3Q7CiAKICNpZiBFTkFCTEUoREFUQUxJU1QpCiAgICAgSFRNTERhdGFMaXN0RWxlbWVu
dCogZGF0YUxpc3QoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcCBiL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCAxZTBhMDdiLi5j
NmM1OGE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC04MCw3ICs4MCw3IEBAIGJvb2wgVmFs
aWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKICAgICBjYXNlIEhUTUxJbnB1dEVsZW1l
bnQ6OkNPTE9SOgogICAgICAgICByZXR1cm4gIWlzVmFsaWRDb2xvclN0cmluZyh2YWx1ZSk7CiAg
ICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpOVU1CRVI6Ci0gICAgICAgIHJldHVybiAhSFRNTElu
cHV0RWxlbWVudDo6Zm9ybVN0cmluZ1RvRG91YmxlKHZhbHVlLCAwKTsKKyAgICAgICAgcmV0dXJu
ICFIVE1MSW5wdXRFbGVtZW50OjpwYXJzZVRvRG91YmxlRm9yTnVtYmVyVHlwZSh2YWx1ZSwgMCk7
CiAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpVUkw6CiAgICAgICAgIHJldHVybiAhS1VSTChL
VVJMKCksIHZhbHVlKS5pc1ZhbGlkKCk7CiAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpFTUFJ
TDogewpAQCAtMTAwLDcgKzEwMCw3IEBAIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNo
KCkgY29uc3QKICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6Ok1PTlRIOgogICAgIGNhc2UgSFRN
TElucHV0RWxlbWVudDo6VElNRToKICAgICBjYXNlIEhUTUxJbnB1dEVsZW1lbnQ6OldFRUs6Ci0g
ICAgICAgIHJldHVybiAhSFRNTElucHV0RWxlbWVudDo6Zm9ybVN0cmluZ1RvRGF0ZUNvbXBvbmVu
dHMoaW5wdXQtPmlucHV0VHlwZSgpLCB2YWx1ZSwgMCk7CisgICAgICAgIHJldHVybiAhSFRNTElu
cHV0RWxlbWVudDo6cGFyc2VUb0RhdGVDb21wb25lbnRzKGlucHV0LT5pbnB1dFR5cGUoKSwgdmFs
dWUsIDApOwogICAgIGNhc2UgSFRNTElucHV0RWxlbWVudDo6QlVUVE9OOgogICAgIGNhc2UgSFRN
TElucHV0RWxlbWVudDo6Q0hFQ0tCT1g6CiAgICAgY2FzZSBIVE1MSW5wdXRFbGVtZW50OjpGSUxF
OgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKaW5kZXggYjJmNWNlZi4uNWJiZTlhZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgZG91YmxlIFNs
aWRlclJhbmdlOjpjbGFtcFZhbHVlKGRvdWJsZSB2YWx1ZSkKIGRvdWJsZSBTbGlkZXJSYW5nZTo6
dmFsdWVGcm9tRWxlbWVudChIVE1MSW5wdXRFbGVtZW50KiBlbGVtZW50LCBib29sKiB3YXNDbGFt
cGVkKQogewogICAgIGRvdWJsZSBvbGRWYWx1ZTsKLSAgICBib29sIHBhcnNlU3VjY2VzcyA9IEhU
TUxJbnB1dEVsZW1lbnQ6OmZvcm1TdHJpbmdUb0RvdWJsZShlbGVtZW50LT52YWx1ZSgpLCAmb2xk
VmFsdWUpOworICAgIGJvb2wgcGFyc2VTdWNjZXNzID0gSFRNTElucHV0RWxlbWVudDo6cGFyc2VU
b0RvdWJsZUZvck51bWJlclR5cGUoZWxlbWVudC0+dmFsdWUoKSwgJm9sZFZhbHVlKTsKICAgICBp
ZiAoIXBhcnNlU3VjY2VzcykKICAgICAgICAgb2xkVmFsdWUgPSAobWluaW11bSArIG1heGltdW0p
IC8gMjsKICAgICBkb3VibGUgbmV3VmFsdWUgPSBjbGFtcFZhbHVlKG9sZFZhbHVlKTsKQEAgLTM3
OSw3ICszNzksNyBAQCB2b2lkIFJlbmRlclNsaWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQoKQogICAg
IGJvb2wgY2xhbXBlZDsKICAgICBkb3VibGUgdmFsdWUgPSByYW5nZS52YWx1ZUZyb21FbGVtZW50
KGVsZW1lbnQsICZjbGFtcGVkKTsKICAgICBpZiAoY2xhbXBlZCkKLSAgICAgICAgZWxlbWVudC0+
c2V0VmFsdWVGcm9tUmVuZGVyZXIoSFRNTElucHV0RWxlbWVudDo6Zm9ybVN0cmluZ0Zyb21Eb3Vi
bGUodmFsdWUpKTsKKyAgICAgICAgZWxlbWVudC0+c2V0VmFsdWVGcm9tUmVuZGVyZXIoSFRNTElu
cHV0RWxlbWVudDo6c2VyaWFsaXplRm9yTnVtYmVyVHlwZSh2YWx1ZSkpOwogCiAgICAgLy8gTGF5
b3V0IHdpbGwgdGFrZSBjYXJlIG9mIHRoZSB0aHVtYidzIHNpemUgYW5kIHBvc2l0aW9uLgogICAg
IGlmICghbV90aHVtYikgewpAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgUmVuZGVyU2xpZGVyOjpz
ZXRWYWx1ZUZvclBvc2l0aW9uKGludCBwb3NpdGlvbikKICAgICBpZiAoc3R5bGUoKS0+YXBwZWFy
YW5jZSgpID09IFNsaWRlclZlcnRpY2FsUGFydCB8fCBzdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0g
TWVkaWFWb2x1bWVTbGlkZXJQYXJ0KQogICAgICAgICBmcmFjdGlvbiA9IDEgLSBmcmFjdGlvbjsK
ICAgICBkb3VibGUgdmFsdWUgPSByYW5nZS5jbGFtcFZhbHVlKHJhbmdlLnZhbHVlRnJvbVByb3Bv
cnRpb24oZnJhY3Rpb24pKTsKLSAgICBlbGVtZW50LT5zZXRWYWx1ZUZyb21SZW5kZXJlcihIVE1M
SW5wdXRFbGVtZW50Ojpmb3JtU3RyaW5nRnJvbURvdWJsZSh2YWx1ZSkpOworICAgIGVsZW1lbnQt
PnNldFZhbHVlRnJvbVJlbmRlcmVyKEhUTUxJbnB1dEVsZW1lbnQ6OnNlcmlhbGl6ZUZvck51bWJl
clR5cGUodmFsdWUpKTsKIAogICAgIC8vIEFsc28gdXBkYXRlIHRoZSBwb3NpdGlvbiBpZiBhcHBy
b3ByaWF0ZS4KICAgICBpZiAocG9zaXRpb24gIT0gY3VycmVudFBvc2l0aW9uKCkpIHsK
</data>
<flag name="review"
          id="31292"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>