This is simple refactore and improved date_parsing.hpp
begin 666 date_parsing.hpp.patch
M*BHJ(&1A=&5?<&%R7!E#0H@(" @<&%R7!E9&5F('1Y<&5N86UE(&1A=&5?='EP
M93HZ>65A7!E('EE87)?='EP93L-"BT@(" @(&EN="!P;W,@/2 P.PT*
M+2 @(" @='EP96YA;64@9&%T95]T>7!E.CIY;61?='EP92!Y;60H>65A7!E.CIM:6XH*2PQ+#$I.PT*(" @(" @8F]OF5R/#XZ.FET97)A=&]R(&)E9SUT
M;VLN8F5G:6XH*3L@8F5G(3UT;VLN96YD*"D[*RMB96<I>PT*(2 @(" @("!I
M;G0@:2 ](&)O;W-T.CIL97AI8V%L7V-APT*(2 @(" @("!C87-E(# Z('EM9"YY96%R(#T@
M:3L@8G)E86L[#0HA(" @(" @(&-A6UD+FUO;G1H(#T@:3L@8G)E
M86L[#0HA(" @(" @(&-A6UD+F1A>2 ](&D[(&)R96%K.PT*(2 @
M(" @("!].PT*(2 @(" @("!P;W,K*SL-"B$@(" @('T-"B$@(" @(')E='5R
M;B!D871E7W1Y<&4H>6UD*3L-"B @("!]#0H@( T*(" @("\O(2!'96YEPT**R @( T**R @("\O
M(2!'96YE7!E9&5F('1Y<&5N86UE(&1A=&5?='EP93HZ>65A
M7!E('EE87)?='EP93L-"BL@(" @('1Y<&5N86UE(&1A=&5?='EP93HZ
M>6UD7W1Y<&4@>6UD*'EE87)?='EP93HZ;6EN*"DL(#$L(#$I.PT**R @(" @
M='EP961E9B!T>7!E;F%M92!T;VME;FEZ97(Z.F-O;G-T7VET97)A=&]R(&ET
M97)A=&]R.PT**R @(" @:71E7!E*'EM9"D[#0HK(" @("!Y;60N>65A6UD*3L-"BL@
M(" @('EM9"YM;VYT:" ](&)O;W-T.CIL97AI8V%L7V-A6UD*3L-"BL@(" @('EM9"YD87D@/2!B;V]S=#HZ;&5X:6-A
M;%]C87-T/&EN=#XH*F)E9RD[#0HK(" @("!R971U7!E*'EM
M9"D[#0HK(" @?0T**R!]("\O(&YA;65S<&%C92!D971A:6P-"B @#0H@(" @
M+R\A($=E;F5R:6,@9G5N8W1I;VX@=&\@<&%R7!E/@T*(" @(&1A=&5?='EP90T*(" @('!APT*(" @(" @8F]O7!E
M/BAT;VLI.PT*(" @('T-"B @#0H@(" @+R\A($=E;F5R:6,@9G5N8W1I;VX@
M=&\@<&%RPT*(" @
M(" @:6YT(&]F9G-E='-;72 ]('LT+#(L,GT[#0HM(" @("!I;G0@<&]S(#T@
M,#L-"BT@(" @('1Y<&5D968@='EP96YA;64@9&%T95]T>7!E.CIY96%R7W1Y
M<&4@>65A7!E.PT*+2 @(" @='EP96YA;64@9&%T95]T>7!E.CIY;61?
M='EP92!Y;60H>65A7!E.CIM:6XH*2PQ+#$I.PT*(" @(" @8F]OPT*(2 @(" @("!I;G0@:2 ](&)O
M;W-T.CIL97AI8V%L7V-APT*(2 @(" @("!C87-E(# Z('EM9"YY96%R(#T@:3L@8G)E86L[
M#0HA(" @(" @(&-A6UD+FUO;G1H(#T@:3L@8G)E86L[#0HA(" @
M(" @(&-A6UD+F1A>2 ](&D[(&)R96%K.PT*(2 @(" @("!].PT*
M(2 @(" @("!P;W,K*SL-"B$@(" @('T@#0HA(" @("!R971U7!E*'EM9"D[#0H@(" @?0T*(" @( T*(" @( T*+2TM(#4S+#8Q("TM+2T-
M"B @("!P87)S95]U;F1E;&EM:71E9%]D871E*&-O;G-T('-T9#HZ7!E#0H@(" @<&%RPT*+2 @(" @+R]U7!E.CIY96%R7W1Y<&4@>65A7!E.PT*+2 @(" @='EP96YA;64@
M9&%T95]T>7!E.CIY;61?='EP92!Y;60H>65A7!E.CIM:6XH*2PQ+#$I
M.PT*(" @(" @8F]OF5R/&)O;W-T
M.CIC:&%R7V1E;&EM:71E6UD+GEE87(@/2!I
M.R!B