ࡱ> bz  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdefghijklmnopqrstuvwxyz{|}~Root Entry FnwZ@ ZNWorkbook#_VBA_PROJECT_CUR"! `Z@ ZVBA `Za Z ' \p Sam Savage Ba= ThisWorkbookPSI Distribution=h#8X@"1Arial1Arial1Arial1Arial1Arial1Arial1Arial1 Arial1h Arial1hArial1hArial1h>Cambria1,>Calibri1>Calibri1>Calibri1Calibri1Calibri1Calibri1>Calibri1?Calibri1 Calibri1 Calibri1 Calibri1 Calibri1Calibri1Calibri1 Calibri1Calibri1Arial1Arial1Arial1Arial1@Arial1Arial1Arial"$"#,##0_);\("$"#,##0\)!"$"#,##0_);[Red]\("$"#,##0\)""$"#,##0.00_);\("$"#,##0.00\)'""$"#,##0.00_);[Red]\("$"#,##0.00\)7*2_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_).))_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)?,:_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)6+1_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_) General_)0.0$"$"#,##0.000_);\("$"#,##0.000\) "$"#,##0.0_);\("$"#,##0.0\) "$"#,##0 "$"#,##0.00=8_("$"* #,##0.0_);_("$"* \(#,##0.0\);_("$"* "-"??_);_(@_)94_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"??_);_(@_)                                                                      ff + ) , *     P  P       `            a8  !  H # "X  L "    L "\  `@ @ *  `@ @ ,  h@ @   d@ @ *    # #X "   l@ @ *  !  #  !   h@ @ *  "  "@ @    "  !   h@ @    h@ @  ##X   l@ @     " # "@ @   20% - Accent1 20% - Accent2 20% - Accent3 20% - Accent4 20% - Accent5 20% - Accent6 40% - Accent1 40% - Accent2 40% - Accent3 40% - Accent4 40% - Accent5 40% - Accent6 60% - Accent1 60% - Accent2 60% - Accent3 60% - Accent4 60% - Accent5! 60% - Accent6 "Accent1 #Accent2 $Accent3 %Accent4 &Accent5 'Accent6(Bad) Calculation* Check Cell+,-./Explanatory Text 0Good1 Heading 12 Heading 23 Heading 34 Heading 4 5Input6 Linked Cell 7Neutral 8Note 9Output: ;Title <Total= Warning Text8 ``i̜̙3f3333f3ffff333ff333f33f33BBB\`z The Problemu DIST Model! Amt_Stocked:Demand: Dst DstAverage DstCreate DstMaxVal DstMinVal DstNumberOfTrials DstPercentileExp_Cost: %Expiration_Cost:F_Cost: " Freight_Cost:[ Chash_code@3b19a38e0f71ffc3d53aef6e0e6f3d73eb0f74440db360f07b61d63da08aa83a is_active solver_typ solver_ver Trial: " ȍ<L"&o=@'E ڌ@=Ҍ&o=@'E  W&#xڬ{uX[Ao X;Hݡ)@q 8@(ES݊Kqw;ɜ=sfgggw;9^^@eYVZO } 2T@s(c@< =4O8V8@?yxthG@K8pqGO-h8,7MOK_t+ cާj?mopȰHyiV'`E]NP2LV@y, ڿ4WW,6v&R0 qLoP%4<1촽=[W! ow:@\Rq]z oLY,/b1,]3%8 uj7KZ\G‚nG+j |yx}o1i`kL(rCŘϧWˌI&t#>ƣܴ%h>(~C6XDX9u]6,&϶jû0{"|"hf+߲oY33f.+I-w[yb6[F.W]$ƾrb7j*OOw| (>;38&XXz 69+4/x83HyғS0?&s龜q]i:,"RrCeC]|{|UQ޿R5r[+vwĽo%ww3bT0ҲAX-}'% HY+uߵu٣&+ͮŊ=tr~@ÆU4_.JHΧ>\20VI~-FaOr%g,P XW"HIwEM];ת+ƶM8߼'K9y;Pnn"pF&CbXeO Fඎ loݛVny6Nh|ݯ0EPliRUI@4jdȏL\5*aT#vyTn\NQǤmMzvtHPNN`i/Gj 5UHm%CNHD /H/s ߊ' a^ ry&_!cPq:t+LaÚ/5j8ƂuxCUҶ8mr'Sf"۸)N WZ2F֏قt3R.ARuĺJ;w*-޿YfyCӪワÇ!͂Md=~z5ZS eGG}t,#j濽Do%a4#b ly$.yng}|Ze[G&@<F9/_m:_|9uheW,ܻx 2fט<ʱS?~/I8OL`eF#"oϹē?dOSm$y]HT>? D i;~ⲔDȳO3g3g5QO)=ƮON&^wOrTYN.Xj"x/6ѫ|0aPم vQUYv+*Ƅ2;QQ* oP޴-w 2l[@ꗩ RV#upٲ"%/Fk{QuA~ YUHr2h;}o/j[0J\Ify_v^ ˪2o}(Pk.e"|yI A1xteBLs$e_; vL АPҏj.!d)MpZPݽx]kf-ӊme䗊(N=N6kUv$uaSx~+%[7MEQτ]+rge Wn}|l@tv)9ozP;5[qW1m a:񊖔2gQ:"mQįp2 _ͬb0|H{KWks֧ kFp +;Y~I<}01=rK${D{c!I>)*6:R$Jzt[rgm3еw03CGSn8 "ud o+<^pfۻ\̤ޟ}_$&)cӬ<pـW~+Y*X,(O RG[t6|d0P'Ȧ{yy`nOiݟdtzc|0W7v FqP䐒Q(͎er]v0GńZS"{G,ݱW!FH n@q:bY*PbUMen,)D(E 2'zD׺fb=)'PgR5oق/]S=֔ ]ÿv4@y+Wteѱ a[NB;SoU>+ԬqxfㇷZdkk\13!ZLJLȖ^zϸ&<6,؞eBSro%n.]LA\\V1QUOs61f܉$hBpfGBKlHPc|${;] ),;Z4 w4~ַrXF{?h*azΉ<_ЊS}-J PqlБt"ΛT6Ja!O1!%2|r^r{y2LY cXFP}e˝dHqдV{]h҉z2CXoìͺ" Gj37y֯0Wd[_EL`S2{7U`qNp|cǨ/p4h%O"f@(}=cW9Do`29HVhT"Iu}'31Qv6Zclֺ)-} 8)\e>.C7CY;SA$Z00$uBj7cgm6:/~ QD:F%Rd1W2USR p {\̿oaKm(}WLBǬx,$i\!w\ѫ_`ܮ 5< nb׳^D{Luѣ R4FDv_a 5o(>HcgyC^O> ngQ$+?4kf1&3~Qt]aþ;J>hXW$YPLybAs) |X*+k@SPuE#6XH_, G+gRYJ[fe3k'Cb;޾cni<` y݅'gt6|[޿3޻z?y`%vyM6[>,3-e 7^Ub=뿵k̻TkCff3I:`ُaf)iCuo#yQR %UN_ > E={Efgy\ RV1q\(NCӆhd_?g:Ib¡('@ ܾm)ߗ >U=K 皲wX D-c6h9~cB9~ ϛ[N4D[Wi!!F#n3,;P{5byAm!>Df7oG7 b!h0#C_Y<2D [pV'F+p!3RqB W2YCF%sXwX@!ԕqGSQ<7%}dVq}O:ZUUIUPM*A >,韁Xtk63rbkXnvEJ^jCDĬ\:S~"qn-ki炰*0U7TQ6T ߑUXTz TXd BA*MzfuU5R XD& ٪ w"]xվ[q2'Q?)Q~G~sĥÙ4:.Ǫј-zcXwJEZ 8t :Jr{6pDi0,&oxB$Yj_ICq|"mʑԗ햞«~m| qr#؅w`eiۥǹ?2O2̡{Q&&N<ʇ L(4(wѼtvd!%d pH2/U۷k!G*`BSeT@ЛδCҌnEZa;),E wQTҿtd@ jw{: 燁x9L8vqYIGu(=Lk $9T$+ErFa$2rDj.@bgYq&#U7<{RGetg?0/Ah:uw9w_"Fgdž%(. :f? 0 1Q`opZgFom\2JBHFܓ3*X80juskCypn#};$Vn\y7;9P#-L(p,+?oU _l%Mߧr#CݤL)ZȒ 9`%uм1Sz&+8¶dpz"Zԟʹ}O:pJЂ_̱jӫE<|?%Eviod=K">''Pvnd-g~b1 !cݏl=Aj<1ot$,[2{)CbsBCnbx\%i'*BoJkpQS29|`FYG5Y:bp--ӎӞIc9n,Hzߊj}Z ʍ\i #=?XFUp^'d~qK_J(,DonEuIrlP>8K7(Q v_tfaq3շ [4n|?RPIB(X|M|fF=w 6nv$|ݤ<5v־϶ئ}\˻4 M;%3 e@uB3!<'G s4VDGE{evǛ(0@bNaga)5-q0 )4ú} I,uVed ,UghY!ҭL$cTg*6Q684Dp!)Q-x%^wY0CG{~[7$VXJ<9nFNggŲyЅT-遃InPݔ6y9I4p+e^?{PЉ<9NޠDm{w}e7*[i~;+ Q,4FZߙ*5G*h*[\\x}`oX` NrHgw;;/ ytr6Z\d0>`9I/yiYIupw)%ɏ:^(wC Zo? iaZ N b ׍c>bE+/-1H&ćh%, 0;^.r:{pwtDQ77Eu/-)B2|\;J'06l=K)N G8NƁL=0lfĄg=8KZҀho]wLd$H;jBƛ/)U[9i  5J} Є4;[l\I3٥~{eY0~KeeD;fWK!MN+hWw'b jGQ Za-~z`|8~raDD:gP晴(WgZеJ)s7sV&D_u_ ueG"M.v' _~_C8j Jb Y v%9$Dm~JܵAȹ^.]p!!Yg Vog"ng 2DƇ(&AۦNO(Bk;eX0"o쓟:' X[5?$5zf ~P܈14O54 e6!Zx,8]lH&43ZX!ڔBՙvÑHw:De͜[g-G*n&gN1X^X䘉?d @G u .t|ڮM.AV\7 qhOrs.] ;%Uo jKh1f4U*VVx 7Ct Ӈ7@@C[4n{,m:-`6`8b~ L.誁tv2A=E PEk : Z.0>TZ(_ l'"q3.ٺsjRibmBјߖkk¸?9HUYH,'ү`QҴhOwҶ2.lRGJ{{[B9?qqp$ ~]3Z`rX ҳRgX"N99P~@NŁ * r{׀V}xbvi㛭 K<Vx/SAkkNxa;GLG6=;>rRqэ/ )?lrz!G2?}D Uzzړ esY߰Yj!#gzMYZn?SY0Qf7O[ "L|IRɦBw=%Di%AJ<chRS8 s& l@_FNe[W' ڑ#s<+9ʖ1o}5aw ,h"fgYaQM g|Ũ'^Ͼ 5/v &yNb1XQ(ɼ>v .MF5o9۽ac7ܺc ~3+V֐CKťŘ1a%L7" 4W(x߬ͨKڙGhr@}֦ 1cѩEmRV+E;ɀufl,W+^}ϧGqaDYilSF~֙[@ IfQTY&M#A}R$;( $o:uIZ4՝a~cK1m˨G e8#Oe[c*rG K]"k&HiO|)^rͮTO)ym}9/t$m,_d_Dk ة;bɬ.WMK }9sW]>lב*߶$pud-QW~ޯ?9eE/5@T1jY[8)>'G]"D̛q r 1omG@݊$&[f/Όe?23#G.4=#`l/LEFJhqx/jjhTQP$E.YQluSlJr՚ l@3lŶ8,y{%.z_S"LKT,s=fu3C3t,U&3|kN.!7_e'SI+3NfQaHo06,>_+R@- oO4&)e}ޢ f voY8#{/Pk_13"sz"碜.4el|/&4id f K$тE UlFg֝ mkl7\!9T7)h6P9 Iex \Fix6פF%_i75е-IyE0 v].k{}tj J@2o-9Hő ?H!SSlzHla^IcLo,+!>Q˥sY?4r_&ܟD)OAv^*~v+)WL]p>[ xLN x{ˆ^D7Wr:2puua25 Ϊ[[)S 𥫩K"a*9G :=B$(U$Fvp3d M9~*HB0k#UAZŠZIT˟0%m \^wB@M_֗fI#yh5&g{K~XV3MeWx.ay0QU䋯hX@>fbU㢿PCd~+v46 "vU{YB: ׮WjtC@3Ug]1=qWEG 8ؽ% 갢V4;,3 ?kLzqIʑF­qIAEBrf' -ə+{43q_Vac@Vfr6GW/m?rpX,UpA0߳(RIB_=mr<*E/1#c8SuSb?GCm^Gdu{~" OBȁCTN37/˃XoX%A[#p3aT= 7BKR  u2-}DjmeV Ug?i}b@Y2ΨpwbU`(Z'W)Zu"ۇ8], ޝ瘶z!0Rt/+߱$#iO?eyJt!%٘aIv7;y_?(j_ѥeCGY R.t`3g zVr⧺k^!Z5 I :4iPULO'a߰2-̊ L.Cj/ ;RnX%q8V(\fmmBguE HWc 8:@~f )t*b~dr(Z7(iDNn¶Փd٨"P8/ˆ`DBPϡ\!C$0n˯gN@o]dgRE~,3ǂߥ .IwuK9*/O&K0 'o>X*q 4=آHldX\)u X*ÙF+^.'N>:cs%Wa÷}K<犾n3r#"st+&ƿz{@d%M2[f;w3fhWڥ@qa6 uJRyz%&/QE!-39zx;fۦ8J$&ẖp@u.g揫H "1l֣m^ZA pKYG,B'5[B:1pzj P̶٦@Jv^֔7PGh??5h4k|&-Tjߊ^'ZD 2ڨar@%uMR qpcHqJk?;(sa$lmt[0r!T&Eح3|bײPJj7 rStW)dž xeoϚ|OX|:5OTzŤq{:)a3 طݸᑉoT4qT\*V2S<}=F\6b 1QmqMS >=^D\ÅX;sc{v|ˤo9^vN%ߐZa=cSr騻׍.I~eڄo!Ձ(Y28d'}ċhCH hZgl),|D~o*FDD"0E$?kHlĄ)@%Ȍ,SXGYq.b:k^ <1WEFn;Fc6n ǒZꛜR_Z7[38Ҭ}fL>><;|9ӊƦKGI=7,&n.KiI# %'PBJ^nj31ʇ{BP:ү  ܶ k=hܑ4m+;yë(_5a[e_;^jܬE g$PHX4c!NU;7h2FTY}0LK@Yo jF[ZҪ䉲oyqM~p|`"DTκfpz]ͤ |_IG]f\j^3Ɨ5IrdEO=O+t;WElthPXzWDFM"2Bs,!8lU_fQQ̜472gRj+~3(9=Іȇ`ˈU5/s6} |=*li1:=p4҇rAD0Ρ$79 }FwL>o"M5O1tbl5}ZhT3D˔+bRCGLN#޿էjY&{W jVq1b<9BOWmVoM뉟U{HiK?2Vh}>c/yoLĥ}bqSKuʈrT=3%+8xa,.w[ڪjmɚZ.T aryiS>` h+]ZJB$㩲%|F & 6iEKyJZv\8 ՉB< |kItLby07e֕hʠuWvH.Hfp쵉`0hlXCq x FL{*ZLݠp<(ˍcԽ4q.7Y}8x_[dyט\hJH7;:z~E,YBbx$̐`617Z*5>=x|>^txV \`q,bM'm6Ȯ,oد|Xԫ,]'%U.mdvHt_gbXgIWJo$JY0p&<Ȓ]/~45sIZ'>g rGd£"ŕDwt/sVmYKP> ~9"`FlJ8Ӳee1$ĽXtDSbFiKd+>Iܛ?*aҜ㾡iOjO-Zp)Z& `ϘW(|U Wj3}s5W6"mwssĺy#>\B< \:QD X4c6sy߼m'WkK]qki2>QS|N3u5 6E AG4K%t6 *BX+5i?:!dQd<)B9z`!eqS'9), dv]aqey2P@v_nL=xǣ[|}3<GY|~jq Qrf3tKotWkeѷU?(z@LI&nZlю]UxS>v[UU 2fzdW7ReE[\rZzP]b+dimM}V"}S; 1Ǿ/qjf}l  /k:z/Ο$h!`ϮtF*wt<]לfy 8*We6]њS7BޟkXpݷ潛xpt-<rj*KW=kok%OJ?>?;G_cwuF"s\v|I O8KnF]HRe^Nֱ19Ō3ƙ`f"ۧ6sf=hJ_̤4Ko roU_!r~3v)g7v]lz-'s2F wWe{ 0[ڬ:>rl^n#6,k=})ZQg~jEwb “wd"G$"O8-e]Sjf^ӵEߧ4z羉粱G;4sïu޼oYHݗ3'gY{v rf*Ӏ3!S^Q?w!O O&{;7VO-9ު,n+5 =ɝSݸfjLIquNNxLwlj;;bmAr˻-\مjWt|w2skuq1t8V,2- (桃I#e{g<4wJodO0\ץGZ;䊬qB{&f<"iu!'tliڟe[οC\?O73E}Q=n-Ҭzy催1WmwPfiƴrn s:pSOd24>CmוyOȌ/r׆oo͡Kr}׷ˇZe]Uﶢ,O*k0}ݰ$VD?r'V~ F&]h3'z!Ӛڷ{XKypw+&/jiSϗ(r-C֪kGwSMIKJoY]Vvy#6WA޾snu~^+Ӽ2kZc$u[O2 [DI;Fv nMxa{Okl|K-ixz_a83:ΩY_ڨfV[J&"/9gY5w5H;'mۏ,{iSB٧O2s x־ICq&nQZ&Y-N?J[c[ruK=떿|H7/vh3g%}G[.;.3Ph*"b+I?s\ʣ9ML2T,'P9V.,uKOnYQ:h)0;@B3ƫ8FF`H[kڌ):ToTV&KR6[~ҽQVYqdk9[r#eó?!m-Q=<Ѥ{ι,nUZyF VᩳFimOks~jζ\Njxj}Q633ߨ IZĤYY6_nﴴw̡ye̱5+9!I#:Ƙ=bS  8~~k<5hmet0 u(l;XӿpViuN|ba}V ma:17j(׻@3 =uOq`䁿tqEȯ8#n-&" tn|&&rf?}\|lih|mrPk6Z72Ұy(`W.x,a^c:6Zt$ram$K٬KgG=v/*tv٣3|z,ڲeIMF4mEEJty?Ɏ= `\Y\KZ- Ojp'AԚaݟizy QD;nF< S\|93czYV)y`=\~eѦ~ec=P5 W2L hĈ'^Y.(.43ĆY*\QzYt]xeg1xY^6tzNG[Ӻ6Ee~WK6Y ,&^N˚rTH 'ǂeO߹eYN3%[5/C"a&e\iP8ɷCn~ڻߋv[Hy-2y^ݜF ^v+:73Y$5'& )sTM.vz\z[HAG}~4$l7a~7lͷ)3g7^l{ƴsI}K0"⦻U-^7p)=շvzsҏZKfBhj3|CUX3)_B6 KNMH^i?Ԛ@yAfgW<~1Vwբ%lfΞ5ioԧ?m{Pc@OOy_QeWj} 8?i(U˷ZvΉq][P$wgF# ;; >!>YE{^;蜤XNiK,rDf7Q o@ԒGa=-1I͸|"p5'v:DJ6tt[AmZ~YDWս2ؚqi[YxEO@-~QA!`v;kmksV%6ߟvl k(IGBn1 Xf#~}nO諂U_ }*J&|X# 咿y۲>mOc\NBR}ʷ!BULx>k-)5?4]`ԡ"O!vSM>yY'D|Yo'ON!'^ &Ois\`ϼ&ye#|*ǣ"|T"]krb5jt?]R_>8),w5C0b>DL.n /zR8k2m €H808j6j(:LԾv?6e"bz_;z_E,u(6j8#E[McVFΎjb{(793qA56"/'.?< ((99<(Ԁp/b仗W2  nݭ9JI!j* T)'S8jeEM{`Q0$Su-eT/TaJ nTA55qR Ex ^{2 *!0(ۓ^~/PN@Gׁ+Jwں@/d`'@X*PU9JMJT (]A9x$bI d /d7xA6ppO4 Y6NDzrpoe~~UyBlItPtڢ$l Hdv_WUN]uf @P~ BNm5fl;v8p@Kvչ5(A(l>E F1 |/"9;U)|P| h68JktWPF GA y $LV4VP]S@UP6⍠LdANb>& *,͐V͓^C 22 C [Q\D"$X5ՠYrYbVavLQ0@ ゚>{AdK pdtE2?ERU]<82vDcE>ml#$<\O1FX^dS aX8^Ĕ)f~ (  VKY:)|PqS\g0U4OA% /<CбxeO @f$>D+A F^{dU(@0ZO(AZ<" x}|mb?mP^{)OPi |( ͯ숂R!KYS$> SC\vX| t6=͢CT| ["غu/$%XD|j(YVRi)!J`9TкZ;{j"bB1 JLr ?i =| P ڥ0 x'(rIt  >ȹ6=WZ$  A pRM 0~P[6yI+UwЂ$9v.ܢX|%`Y&g l,H"jNWPf| )'d9)V:*_yR욠V%._ 5NnיP3 k}7ɾǪX}yy)J@8 j lR wBԮvVQn0qSs+1Q&|_@Xy,$'+c&8^ H/MW_Я 4ڱf'9` -s`jgj\7EĸZdyv' 5)ʿ* g#n5kdƋSW땊> LX#l+(S05g&~aj92d9L dkWڑW O(Zz 9+b$YidR # $=sIG@ )j`vk$d/w.!bRo18A.$D_Vy]<ZY#IPJs.+| R'Bp;)UBr*%3IoDF \(U* Ry8:x ` mA=|U$%&fZ<8E0NL0UmR!EZ t_ A[*[rpչFRE|~EWK+{.9_Zj#..۩k bkqky.t\[զ:J0J'AȘ,H R+YjC*}~#-؏&7b "~%Օ/!ل4u> $DmuaA]| 귻dF=̯%9RV (NC &+xZV^^T>BW@؈$9$ )u`A|P}ٛe_&rE_X)sAWYzK$04Q*Eց_AAu1J/nQxB/1(LW13M|PzCX<;A̓5S%*A ^BTW\pBZYNڧ⥂4[&.@-uvu͹,9ys9N+. P{R>hv')RD>b5ۜ"1F^?vujG`9 ̪C* 6{T,]" ~X+b^-@ [OXųd"u:H0oX0  X CR)%Y3 R lA"jrnu/ɇyB#0<-ݷ'vIna|I~c1D]!TW\Y|P %ZI f@4B|1_+*Ǥf`6hԺ ->~<@RL|XF`Rth?b6#uUI9.牙bd>AXT8:)b\ ?vj|p;6TA ]詩x"͒uȖ@$ ºBMTҮ_$ X` |@. c 9*->zFmeyjS#PU:X.axxRBxqV|R(Cv@^aM^K.t  d3 ;)IywR=a|6ܮ):ºBV-P_gW^ "wbHU@\hK7bjCWvo(d+)įPWcAl8  /(0-YuUW~)_q́d^Q*e\y&|a `"Ƽu<1;f3 A^Dლ]D>יV(_o"OJც $oޣ`\u'HCS8QXWHOQV](06Ug],Ƞ+Ucu> շ.W:s|Z2HszU*V @|~'N*~fQQ6.MW\H\gѵ¯;bAuyBUM` +p[82;; xU?v92oRQSI˂;IuyB؝lmFAPk3|e`AhYceYo%#;Y c][~7|PkT7vY6K ˥olxdyN%˖o rSe3:u+.RV-Yծ&kU$OxN-ϯP?n [i( Aڅp.yԢprꛮ0BL^:]fY]#aڌW トu ^=/Yei:t[ dD)P>u0JTR  yd0夸e&_U7k3?|YDcDe VXz8합2 _]+ˏ@ `[_e;gC/O,;$rBmU|a00 0 ƀ6q~@̋%9_XB4 ,RA_띃'f USKKn~z87V_"[cZ9-Hu@LHg1;+ YxA] _?Q0jL\5KL  e+MԆWZc~eȖ+% WP|~cu >+A_#Ez.D"D$RB=)Fx^":Xj.Ye7<~fxD*Rj+g鿆u ">ɢ6De;@ԪWZ #$fGH^@SM[o DqXkGtIeW"pDM *Ym5|UuoK¼( :ȏY0 GBẕE)"z!.C}>VYP0VGrx$p* ȎP51z VT`-a6/9  +snn0ύsJ2;`&R s^^r(ks'>P!: Hw`C0Bb]Qg7peyx 8&+W o\ b/^)UA11Q.k3 ne4@};*15wX+ {s,[<"AEO9Jh%M `o}¼@9s 8̐'5/|14(o gx2hk`"ƍan,"lcM}tbb`b0TBT%-jIȻcMI@"* jD2GS$蛍h)a@#թ&;H 0 n,o24:(6Vi%#>b2:(+ ]G =Q ZD9?1WɡfJQt@N ֓hQw@9)@xL*\FMeD)cdtPWyR@1qt:A DJ %%AJ V:J%LH6H 6 hI2A:uo@m0iwY:Z W^$R쀵옠W 9O Vt H2Z#rr^Am5^bȼեT "D)jl)Rl*tqlgƹu/k}MVJdգ`OMt@q@-Ȋ`["U@mʳ^&g:b-`$u~Ua|t: )y~Xt )hf=$6EUqt@my(:6M1@ mT[ m |> hӫ-~^пmѽ چxر0wT*WT.Ļ!^nzbUIw޼rm>hAskJf%= |EiGr i F"d^`N`?эcIx:xE+ratmqjt:zt(wUSPmpMкyxz වT>u rĖuNQMQCg mWAD_\n 4hb1E񐬫 w> kL2̛AڡJBpd# Eeb,nӧvpr:>cSSui^9,PF )0O]faϫܮptSyӋKs:~;mǂVźM/t++46n;mqc*9K}&=f?{.[޽;A}gܮؗJK߳GoFNqIJڷoM^^jߡVɉOw[|^%}vn _sagua3J{γێ;zr"}α_4C͂+WzN7W# n,ݧvISmn3".{g\ijL0ŝ!mxd+'6"2Z9 8<P ?4/`!+.Uwm:?/bj"6?nMXګG(N; ;>~k#  {#Gzggܹ̾ %+PT66έ~Fnd];uln]۞:;yvY?yu5鎳k}QmKnkO 9lݦa~^:VKғ29^rs׺>cmP}2'e*wn{~)=GoK𤩗B[7ڮ]5;Uybjw=vO3&G^n;&E;dtVW{OFkX?9TA[B7v tޗ[.w:OS=Fi[:o-Yy4yN 4< {ޞeQ>z>%7Nt]m7X7ϱɔyWg ~{ Ʒ7mg=`#nz?s>m6ؤSQ,;-Nֱv^F}2rضCoxxޛi"C: ^d{눒f備2k;O'ufYٯO ӏxMYq&yL}>=ټuY'.znws厃 xaɝN2,|gIﺸth--:ˈ[q1a]u><-vd}}^smE~ÚN{ض9J+ MOym~F鉽g9w;O>QVĹ]-3ink}ر[soۦfRv`cn|N>`+u;ݙ1;hh{]ñod~叛1#xzNv>m`ԾvF7M\8wM} MƽhpKk㌔ \6ۮrƧB?.-m&_Izvn?=meG:3=osv;z-E8o8==_r}!AčYzGOajxw֝wh{N|ɸǸJЗn}&/էg/4b ݘ,fb3Tv8MARx/#26nz؃;b4!nD;^^hKF5V~]G"ɕߛ|= B>04Q'wc xVDrɱA$V\c.I$H%96Xy>҅^Wq,\WP+Q)86Wq\rO0sv cdiZ;I,Nr 1 c2"9֙[^;~[I9=u=v+I+$HYI8َ Uߟܴj|&G v>K䊭b&" @:hjj"zzzHÆ 333GG!HƍsssFh4j i֬bmm"5B  H-f#VVVH˖-n111AKKKiڴ)Ҽysp]xU=%y[NiƂ5j,r,nJ4e/(h,5PDon&j,} CȺedaa"HYMձ64SH]Qca0Yƶ`34Ќ&溆-QNc3Q# wL,Kp,*TtM}#U)r,lt0*phh0>d3*4t6P5C M1b,;L0dU7/2 VX&4/kDžEx) #ccy!T.0/L RLs:*4/1ۘ1IyؤD`^57/*LUz%= Cluy!zA遅 Nt, u6 ` =* TWg2h,Z2l^Lt &6,cu}^du A" BǂaGUGU@ VFNk^~0/l̠1DFRRB L1cQyو0 NI/4dҠ煎>DyQe_K XUhpNb~U)G=1?m~>/,+S~i5F۩X_tI * bsȄ;85BƠ4Pyt hPI`j{^ gUҕp_@'?.=>]uG|O}w#e K2 ;8UYՔY=џFeV|!1c|مPW’=UP6}%_ʨei{io@e5h|GV2 UaŨ<"kzhh]$2KGƚ`Ք#Ih*H}~NwbJ|у 5н !o0W@4+qR9+B3 A@@Avg DecisionsDISTs StatisticsCost CalculationsUncertain DemandCostsPer UnitExpiration Cost Air Freight Overall CostAverageYJBQYIBAYCAgYJBQMGBAgCAwIGBgIGCAYDAgMDBAMGBgUCCAwEBQYGCgoFBQQHAwUDBQIGCgQDAwYDAwYDBAYIBQQEAQUEAwgEBwkJAQEFCQUFBgIEBAUGBgsJCQUGBQQCCAECAwQGBQoEBAkFBQYDCAIEBAYFAQQHAwUCCQMGBgQEAgQHBgMGBgcGBwkHCwkFBgECCgMCBQcDBAMFCAUFBwUDAQQFBAcHBwoBAQgDCAYIBwQIBwkCBAIFBwMFAgYFBQUEAwoEBQMHBAIGBQkEAwQGBAMGBAcDBwUIBwUHAwUICQUHCAUHBQEGBQQEBAUHBQIDAgMFBQwIBgYFCQEEBggCCAQDBQQDAgMFAgQDBgUDAwgFBwcGCwQFBAMHBAMCAwEDBAQGAwMFAwYFBAkFBAQHDgMJAwMHBQEEAgcFAggDAwQGBQQEBwMFBgUGDAQEBwYFBgQJBgQEAgMLBQYKBAQKAAQEBAYDAwQDBgEHBQYKBwQFBQsECgYEAgkBAwcDCAUEBAQJAwcDCAICBQMDBwkGBAYJAgYFAQQFAQILBQMCAgcIAwgDBQEFBAYCBAcHAwQGAwQCBgICBQcFCAIECAsCAQMIBAMIBAcGCAgFBQMHAwcGAwcFAgUCCgQCBAACBwQKAwUEBQMJAwQHAwUHBQUEBAUEAwMEBgYFDwMFBAkHBgYEBwUHBwcIAgcJBgUBCAUFAwUHBQcHBgIEAwEEAwMIBQMFAgMEBAUEBwMFBQYFBQQDAwUDBgQBBwQHAgcDAwcIAgMLBwMGAgYFBgQEBwkFAgkFBQgFBQUGBQkGAgQJAwUIBgUIBQEHCAgDBAMEAgYFBQUIBgQEBAMCBAgHBAkFBAcDBAgFBQQHCQgGBwEHBgYBCAYFBwoEBAQEAgUGBQUGBQcECQMBAAUEBggBBQUDBQUGBwgGBAQDBgYJBAQCBQYIBgEFBwUIAgcEBQYBBQQCAgYEAwUJBggDBQQGCAgEBAYDAgMEBAYDCAQIBwIHAQkEBAIDBQUBBAUHAwUGCgkJBwIBAgcECwQCAwYFBAIEBgYEBAQDBAQDBwUIBAUFCAUCAwUIAwQFAQYGBgQEAgIHCgQEBwUDCQIFBQUCAwEGAgQEAwMEBwUGAwUKAwQDAQYIAwYFAgUFAwcFBgMHAAUEAwIEBQADAggJBwcECAUGAgIGAwUDBQYDBAcGAwcDBQUEBQUEAwMFBwcHAgYCBgMGBAUCBwEEBwYHBAcEBQMEAwQEAwcFBwkEBAUEBwUDCgYGBAcEBQQHBQQJBAYJCAMIBgIIBwUFCQUEBgQIBQUGBwQGBQMECAQEBwQEBAgABAMFBAYAAA PercentileDemand Amt StockedHistorical DataMonthAverage DemandCosts per unitAmount Stocked) mcc||W7hx}-}; 00\);_(*}A}1 00\);_(*;_(@_) }A}2 00\);_(*?;_(@_) }A}3 00\);_(*23;_(@_) }-}4 00\);_(*}A}0 a00\);_(*;_(@_) }A}( 00\);_(*;_(@_) }A}7 e00\);_(*;_(@_) }}5 ??v00\);_(*̙;_(@_)    }}9 ???00\);_(*;_(@_) ??? ??? ??? ???}}) }00\);_(*;_(@_)    }A}6 }00\);_(*;_(@_) }}* 00\);_(*;_(@_) ??? ??? ??? ???}-}= 00\);_(*}x}800\);_(*;_(??? ??? ???}-}/ 00\);_(*}U}< 00\);_(*;_( }A}" 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}# 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}$ 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}% 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A} 00\);_(*23;_(}A}& 00\);_(*;_(}A} 00\);_(*ef;_(}A} 00\);_(*L;_(}A}  00\);_(*23;_(}A}' 00\);_(* ;_(}A} 00\);_(*ef ;_(}A} 00\);_(*L ;_(}A}! 00\);_(*23 ;_(}(}V00\);_(*M 20% - Accent1 ef %M" 20% - Accent2 ef %M& 20% - Accent3 ef %M* 20% - Accent4 ef %M. 20% - Accent5 ef %M2 20% - Accent6  ef %M 40% - Accent1 L %M# 40% - Accent2 L湸 %M' 40% - Accent3 L %M+ 40% - Accent4 L %M/ 40% - Accent5 L %M3 40% - Accent6  Lմ %M 60% - Accent1 23 %M$ 60% - Accent2 23ٗ %M( 60% - Accent3 23֚ %M, 60% - Accent4 23 %M0 60% - Accent5 23 %M4 60% - Accent6  23 %AAccent1 O %A!Accent2 PM %A %Accent3 Y %A)Accent4 d %A-Accent5 K %A1Accent6  F %9Bad  % Calculation  }%  Check Cell  %????????? ??? Comma( Comma [0]&Currency. Currency [0]G5Explanatory Text %;Good  a%G Heading 1 I}%OG Heading 2 I}%?G Heading 3 I}%239 Heading 4 I}%uInput ̙ ??v% K Linked Cell }%ANeutral  e%"Normalb Note  wOutput  ???%????????? ???$Percent1Title I}%MTotal %OO? Warning Text %XTableStyleMedium9PivotStyleLight16B '  ,'8I Zi  dMbP?_*+%M HP Officejet Pro K8600#C odXXLetterDINU"0 l pr4V0 SMTJ HP Officejet Pro K8600 SeriesInputBinFORMSOURCERESDLLUniresDLLHPPreAnalysisFalseMSPreAnalysisFalseHPReportSymmetricMarginsFalseHPPaperSourceMappingTrueHPMinimizeMarginsFalseHPAlignMarginsForMDTrueDuplexNONEHPPrintPreviewFalseHPOverSprayOptionAutomaticHPOverSpray100HPBorderLessPhotoFalseHPOutputOrderReverseTrueJobUITruePaperSizeLETTEROrientationPORTRAITMediaTypePLAINHPPaperSizeDuplexConstraintsINDEX_CARD_3X5HPDocPropResourceDatahpzhl5k2.cabHPNUseDiffFirstPageChoiceTrueHPMediaTypeDuplexConstraintsHP_MATTE_GREETING_CARDSHPDryTimeOptionAutomaticHPDryTime0HPInkVolumeOptionAutomaticHPInkVolumeNormalHPPrintInGrayScaleFalsePrintQualityFastNormalPrintQualityGroupPQGroup_4HPJobAccountingHPJOBACCT_JOBACNT_TIMESTAMP_USERNAMEHPColorModeCOLOR_MODEHPPDLTypePDL_PCL3HPPJLEncodingUTF8HPXMLFileUsedhph86003.xmlHPTilingSelectionTrueHPMediaTypeTreeviewPopupTrueColorModeColor24TextAsBlackFalseResolution600dpiPQDPIInstalledHPMirrorPrintFalseHPAutoDuplexScalingTrueMediaWidthSensorInstalledHPManualFeedOrientationFACEUPHPSpeedMechFastDraftHPOutputBinOrientationFACEUPHPMapManualFeedToTray1FalseHPSendPJLUsageCmdLNNAME_EIGNPSAlignmentFileHPZ3A5k2PSServicesOptionServiceFileEndHPCleaningFilesDataHP_Clean_TestPageHPConsumerCustomPaperHPCustomHPColorSelectionForHPAEnabledHPSmartDuplexSinglePageJobTrueHPBornOnDateHPCurrentBODHPInputColorSpaceCOLORSMARTHPDriverDataDriverDataHPCustomSizeCommandTRUEHPSendPreloadCommandTRUEESPRITSupportedTrueHPUseAutoDuplexUnitFalseHPRESDLLNameHPFRS5k2HPRedEyeReductionOffHPDigitalImagingHPHomePrintingHPSmartFocusOffHPContrastOnHPDigitalFlashOnHPSharpnessOnHPSmoothingOnHPJpegPngPassthroughTrueHPReverseBandOrderForEvenPagesReverseBandOrderHalftoneHT_PATSIZE_DEFAULTHPHagakiPrintingTRUEHPHTDLLNameHPFIG5k2HPMHDLLNameHPFIE5k2HPHPAFilterTrueHPAdvancedColorSettingTrueHPICCPrinterFamily5700_6500HPCRDCommandTrueHPSendUnitMeasureCommandTRUEHPPaperSizeTreeviewPopupMetricHPSimplifiedUITrueHPPosterPrintingOptionSUIFalseHPPhotoFixOFFHPScaleToPaperFalseHPDuplexToScaleConstraintTruepIUPHdLetter o [none] [none]Arial4Pd?LENOVO USER<Automatic>44dMicrosoft Office ExcelNone<EXCEL.EXEC:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXELENOVO USERLENOVO-09C5B9C1IPACDRWDSGATCAPI;F4E8Q;Ki݅&E%9xPPBHAERP"dXX??U} $} 44@4@4@4@4@4@4@4@4@ 4@ 4@ 4@ 4@ 4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4@4n????????????????????????????????????????????????????3n????????????????????????????????????????????????????3n????????????????????????????????????????????????????3n????????????????????????????????????????????????????3n????????????????????????????????????????????????????3n????????????????????????????????????????????????????3??>>????????  PT ???????????????????????????????????????3??>????B??  T TC??????? XDV??????????????????????????????3??>????B??  T~  ^I@F \ 0DD  DD D  B ??????? V VB??????????????????????????????3 ?>>??????? T ~ ^b@F \ 0DD  D DD  B ??????? W?W$@B ??????????????????????????????3. ??>???????M?]??????? W@W@B ??????????????????????????????3 ??> Q~ Z@ ????? T  ?! \  D D  ??????? W@W$@B ??????????????????????????????3 ??> Q# Y@ % ,B$ ??????????????? W@W @B ??????????????????????????????3. ??>????????????????? W@W@B ??????????????????????????????3.???????B????????????W@W@B??????????????????????????????3.??F????B????????????W@W@B??????????????????????????????3.??F????B????????????W @W@B??????????????????????????????3.?PF?E??BE????F??????W"@W@B??????????????????????????????3.??F?E???E????F??????W$@W@B??????????????????????????????3.??F?E??????E?F??????W&@W@B??????????????????????????????3? P*??E??????E?F??????W(@W@B??????????????????????????????3 ??~ U@(?E??????E?FA?????W*@W@B??????????????????????????????3.?FF?E??????E?FA?????W,@W@B??????????????????????????????3.??F?E??????E?FA?????W.@W@B??????????????????????????????3.??F?E??????E?FA?????W0@W@B??????????????????????????????3.??F?E??????E?FA?????W1@W@B??????????????????????????????3.??AAAA?????E?FA?????W2@W@B??????????????????????????????3.??AAAA?????E?FA?????W3@W@B??????????????????????????????3.??AAAA?????E????????W4@W@B??????????????????????????????3.?AAAAA?????E????????W5@W@B??????????????????????????????3.?AAAAA??????????????W6@W@B??????????????????????????????3.?AAAAA??????????????W7@W@B??????????????????????????????3DDlrrrrrr 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4. ?AAAAA?????????????? W8@W@B ??????????????????????????????3.!?AAAAA??????????????!W9@W @B!??????????????????????????????3."?AAAAA??????????????"W:@W@B"??????????????????????????????3.#?AAAAA??????????????#W;@W@B#??????????????????????????????3.$?AAAAA??????????????$W<@W@B$??????????????????????????????3.%?AAAAA??????????????%W=@W@B%??????????????????????????????3.&?AAAAA??????????????&W>@W@B&??????????????????????????????3.'?AAAAA??????????????'W?@W@B'??????????????????????????????3.(?AAAAA??????????????(W@@W@B(??????????????????????????????3.)?AAAAA??????????????)W@@W@B)??????????????????????????????3.*?AAAAA??????????????*WA@W @B*??????????????????????????????3.+?AAAAA??????????????+WA@W?B+??????????????????????????????3.,?AAAAA??????????????,WB@W@B,??????????????????????????????3n-?AAAAA??????????????????????????????????????????????3n.?AAAAA??????????????????????????????????????????????3n/?AAAAA??????????????????????????????????????????????3n0?AAAAA??????????????????????????????????????????????3n1?AAAAA??????????????????????????????????????????????3n2?AAAAA??????????????????????????????????????????????3n3?AAAAA??????????????????????????????????????????????3n4?AAAAA??????????????????????????????????????????????3n5?AAAAA??????????????????????????????????????????????3n6?AAAAA??????????????????????????????????????????????3n7?AAAAA??????????????????????????????????????????????3n8?AAAAA??????????????????????????????????????????????3n9?AAAAA??????????????????????????????????????????????3n:?AAAAA??????????????????????????????????????????????3n;?AAAAA??????????????????????????????????????????????3n<?AAAAA??????????????????????????????????????????????3n=?AAAAA??????????????????????????????????????????????3n>?AAAAA??????????????????????????????????????????????3n??AAAAA??????????????????????????????????????????????3D,lrrrrrrrrrrrrrrrrrr@4A4B4C4D4E4F4G4H4I4J4K4L4M4N4O4P4Q4R4S4T4U4V4W4X4Y4Z4[4\4]4^4_4n@?AAAAA??????????????????????????????????????????????3nA?AAAAA??????????????????????????????????????????????3nB?AAAAA??????????????????????????????????????????????3nC?AAAAA??????????????????????????????????????????????3nD?AAAAA??????????????????????????????????????????????3nE?AAAAA??????????????????????????????????????????????3nF?AAAAA??????????????????????????????????????????????3nG?AAAAA??????????????????????????????????????????????3nH?AAAAA??????????????????????????????????????????????3nI?AAAAA??????????????????????????????????????????????3nJ?AAAAA??????????????????????????????????????????????3nK?AAAAA??????????????????????????????????????????????3nL?AAAAA??????????????????????????????????????????????3nM?AAAAA??????????????????????????????????????????????3nN?AAAAA??????????????????????????????????????????????3nO?AAAAA??????????????????????????????????????????????3nP?AAAAA??????????????????????????????????????????????3nQ?AAAAA??????????????????????????????????????????????3nR?AAAAA??????????????????????????????????????????????3nS?AAAAA??????????????????????????????????????????????3nT?AAAAA??????????????????????????????????????????????3nU?AAAAA??????????????????????????????????????????????3nV?AAAAA??????????????????????????????????????????????3nW?AAAAA??????????????????????????????????????????????3nX?AAAAA??????????????????????????????????????????????3nY?AAAAA??????????????????????????????????????????????3nZ?AAAAA??????????????????????????????????????????????3n[?AAAAA??????????????????????????????????????????????3n\?AAAAA??????????????????????????????????????????????3n]?AAAAA??????????????????????????????????????????????3n^?AAAAA??????????????????????????????????????????????3n_?AAAAA??????????????????????????????????????????????3Dlrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr`4a4b4c4d4e4f4g4h4i4j4k4l4m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~44n`?AAAAA??????????????????????????????????????????????3na?AAAAA??????????????????????????????????????????????3nb?AAAAA??????????????????????????????????????????????3nc?AAAAA??????????????????????????????????????????????3nd?AAAAA??????????????????????????????????????????????3ne?AAAAA??????????????????????????????????????????????3nf?AAAAA??????????????????????????????????????????????3ng?AAAAA??????????????????????????????????????????????3nh?AAAAA??????????????????????????????????????????????3ni?AAAAA??????????????????????????????????????????????3nj?AAAAA??????????????????????????????????????????????3nk?AAAAA??????????????????????????????????????????????3nl?AAAAA??????????????????????????????????????????????3nm?AAAAA??????????????????????????????????????????????3nn?AAAAA??????????????????????????????????????????????3no?AAAAA??????????????????????????????????????????????3np?AAAAA??????????????????????????????????????????????3nq?AAAAA??????????????????????????????????????????????3nr?AAAAA??????????????????????????????????????????????3ns?AAAAA??????????????????????????????????????????????3nt?AAAAA??????????????????????????????????????????????3nu?AAAAA??????????????????????????????????????????????3nv?AAAAA??????????????????????????????????????????????3nw?AAAAA??????????????????????????????????????????????3nx?AAAAA??????????????????????????????????????????????3ny?AAAAA??????????????????????????????????????????????3nz?AAAAA??????????????????????????????????????????????3n{?AAAAA??????????????????????????????????????????????3n|?AAAAA??????????????????????????????????????????????3n}?AAAAA??????????????????????????????????????????????3n~?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3Dlrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr44444444444444444444444444444444n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3Dlrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr44444444444444444444444444444444n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3Dlrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr44444444444444444444444444444n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3n?AAAAA??????????????????????????????????????????????3>.0rrrrrrrrrrrrrrrrrrrrrrrrrrrr  A,0 (  0f" 0 c $$ A@0]`$H%d  08<aA Classic Inventory Problem by Sam L. Savage Suppose you maintain a perishable inventory item subject to uncertain demand. The average demand is 5, so that s the quantity you stock. But actual demand has ranged historically from a minimum of 1 to a maximum of 10 units per period. If demand in the period is less than 5, you will incur an expiration cost of $50 per unit left over. If demand is greater than 5, you must air freight the extra items at $150 per unit. Try different possible demands in cell E11, and observe the costs incurred in cells M8 and M9 . If you plug in the  average demand of 5 you will get a cost of zero, so this is your average operating cost, right? Copyright 2008, Sam Savage <8!", -#G0ff" 0 c $t A@ pp]`t(&d  *<+Wrong. This is a classic case of the Flaw of Averages. Zero is the minimum cost, and only occurs when demand is exactly 5. For any other demand the cost is greater than zero. To find out the actual average cost, go to next sheet to see an unteractive simulation using DIST distribution strings. <# ) *>@  7 Sheet1 '  7Yտ  dMbP?_*+%&A Page &PM HP Officejet Pro K8600#C odXXLetterDINU"0 l pr4V0 SMTJ HP Officejet Pro K8600 SeriesInputBinFORMSOURCERESDLLUniresDLLHPPreAnalysisFalseMSPreAnalysisFalseHPReportSymmetricMarginsFalseHPPaperSourceMappingTrueHPMinimizeMarginsFalseHPAlignMarginsForMDTrueDuplexNONEHPPrintPreviewFalseHPOverSprayOptionAutomaticHPOverSpray100HPBorderLessPhotoFalseHPOutputOrderReverseTrueJobUITruePaperSizeLETTEROrientationPORTRAITMediaTypePLAINHPPaperSizeDuplexConstraintsINDEX_CARD_3X5HPDocPropResourceDatahpzhl5k2.cabHPNUseDiffFirstPageChoiceTrueHPMediaTypeDuplexConstraintsHP_MATTE_GREETING_CARDSHPDryTimeOptionAutomaticHPDryTime0HPInkVolumeOptionAutomaticHPInkVolumeNormalHPPrintInGrayScaleFalsePrintQualityFastNormalPrintQualityGroupPQGroup_4HPJobAccountingHPJOBACCT_JOBACNT_TIMESTAMP_USERNAMEHPColorModeCOLOR_MODEHPPDLTypePDL_PCL3HPPJLEncodingUTF8HPXMLFileUsedhph86003.xmlHPTilingSelectionTrueHPMediaTypeTreeviewPopupTrueColorModeColor24TextAsBlackFalseResolution600dpiPQDPIInstalledHPMirrorPrintFalseHPAutoDuplexScalingTrueMediaWidthSensorInstalledHPManualFeedOrientationFACEUPHPSpeedMechFastDraftHPOutputBinOrientationFACEUPHPMapManualFeedToTray1FalseHPSendPJLUsageCmdLNNAME_EIGNPSAlignmentFileHPZ3A5k2PSServicesOptionServiceFileEndHPCleaningFilesDataHP_Clean_TestPageHPConsumerCustomPaperHPCustomHPColorSelectionForHPAEnabledHPSmartDuplexSinglePageJobTrueHPBornOnDateHPCurrentBODHPInputColorSpaceCOLORSMARTHPDriverDataDriverDataHPCustomSizeCommandTRUEHPSendPreloadCommandTRUEESPRITSupportedTrueHPUseAutoDuplexUnitFalseHPRESDLLNameHPFRS5k2HPRedEyeReductionOffHPDigitalImagingHPHomePrintingHPSmartFocusOffHPContrastOnHPDigitalFlashOnHPSharpnessOnHPSmoothingOnHPJpegPngPassthroughTrueHPReverseBandOrderForEvenPagesReverseBandOrderHalftoneHT_PATSIZE_DEFAULTHPHagakiPrintingTRUEHPHTDLLNameHPFIG5k2HPMHDLLNameHPFIE5k2HPHPAFilterTrueHPAdvancedColorSettingTrueHPICCPrinterFamily5700_6500HPCRDCommandTrueHPSendUnitMeasureCommandTRUEHPPaperSizeTreeviewPopupMetricHPSimplifiedUITrueHPPosterPrintingOptionSUIFalseHPPhotoFixOFFHPScaleToPaperFalseHPDuplexToScaleConstraintTruepIUPHdLetter o [none] [none]Arial4Pd?LENOVO USER<Automatic>44dMicrosoft Office ExcelNone<EXCEL.EXEC:\Program Files\Microsoft Office\Office12\EXCEL.EXELENOVO USERLENOVO-09C5B9C1IPACDRWDSGATCAPI;F4E8Q;Ki݅&E%9xPPBHAERP"dXX??U} $ ?} m?} ?} m?} I?} I ?} $ ?} ?}  ?} $ ?} $ ?} ?} ?} $ ?7      !"#$ >>  P~ _W@>B  @  C CB ? ? >B  L~  NI@ HH  !h  Z#c##b c##bc @"Exp CostBAAAAAAAyAJiYAAAAZQAyAJhlmAAAmAAAAGWYZWUyZQAAAJgAADIAAAAAAAAAMgBlAGUAmAAAMmVlAGVlAGUyAAAAMjLLADJlADIAAADLywAAAAAAmDIyAAAAAAAAAAAAMpgAy5hlMgAAADIyAAAAAGUAmDIyAADLMgBlAJgAZQAAMjKYMgAAZQAAAAAAAAAAAAAAy5gAZZgAAGUyZQAAAAAAAGXLMgAyAAAAAMvLAGUAAAAAMgAAAJgymAAAZQCYAAAAADJlADIAZQAymAAAADJlMgAyZQAyAGUAAAAAAABlAAAAAAAAAAAAywAAMjIyAAAAmGWYZQAAAAAAAAAAyzIAAJgAMmUAMmWYZQCYMmUAAGVlAAAAAAAAMgAyZQAyZZhly2UyMgBlZQBlAAAyAAAyMgAAZQBlZQAAyzKYAACYAGVlMgAAMjIAZQAAAAAAMjIAAAAAMgAAMjKYZQAAAAAyMgD+MjIyAGVlMmUAywAAAAAAMgAAADIAADKYAMtlAGUAADIyMgBlAGUAmJgAZWUAAAAyAACYAADLMgDLmAAAZZiYAABlAGUAywAyAJgyAABlMgBlMpgAmJgAAAAAmDIAAJjLZQAyZQAyAAAAAAAAZQBlAABlAACYAJgAMpgy/pgAMgBlADIAZQBlMgBlAAAAADIyADJlZTIAAAAAZQAyAAAAADIAAAAAAACYAAAAAMsAAABlAAAAAAAAmDJlyzJlZQAAZQCYZTIyADIAZQAAAAAAMmVlAGUAMssAMgCYAGVlAACYZQAAZQCYAAAAMjIAAACYAAAAAAAAAAAAAACYMgBlAAAAAAAAywAAAGUyZTKYAAAAAAAAMjIyZZgyAAAyAAAyAGUyAAAAMgAAAAAAywAAAMsAAAAAADIyMjKYAAAAAAAAADIAZcv+ADIAAMsAAGUAAAAAAAAyMmUAAAAyMpgAAAAAywAAAACYADIAAMsAMpiYADJlAAAAAGUAMgAAADIyAGWYZTIyAGUAMgAAmADLADIymGUAAMsyAABlAAAAAAAAmMuYADIAMphlAAAymDIAADIyMmUyMmUAAAAyAAAAAJhlAABlMgDLAAAAMjKYmAAAMjIAAGUAmAAAAJhlywCYMjJlZTIAAABlAABlMmXLAABlAACYAABlAAAAZQD+ADJlmDIA/mWYAAAAADIAAACYmABlAGUAAGUyAABlAGUAADIAADJlZQAAAACYAJgAZQAyAJgAyzIAAAAyADIAZTJlMjJlAAAAADIyADIAAGUAAAAyADIAMgAAMgAyAAAAZQAAmAAAAAAAADIAMgAAAAAAMgAAZTIAMjIAMjIyAP4yZQAyAAAA  HH$J333333F@`##$ B)Jhɿb@# $ $B >>  @ ~  Nb@ H   !p b#c##b ##bcc @" Freight Cost@BGWYAGUwAGQAAGWYAABkATAAAABkZABlMGQAAAAAAABkZAABMswAAGRl/fwAAADMAAAAAABl/AAAAGQAAGQAAGUwAAAAAAAAATAAzZmYAAABmAAAZAAAAABkZmWZmABkAAABMAAAAABkAfwAAZgAAGQBMAAAAGQAAADMAAABmABkZAAAAADMZABkZMxkzZjOZZgAZAAB/AAAAMwAAAABMAAAzAAAAAAAAMzMzfwAATABMGUwzAEwzZgAAAAAzAAAAGQAAAAAAfwAAADMAABkAZgAAABkAABkAMwAzAEwzADMAAExmADNMADMAABkAAAAAADMAAAAAAAAAs0wZGQBmAAAZTABMAAAAAAAAAAAAAAAZAAAATAAzMxmZAAAAADMAAAAAAAAAABkAAAAAGQAAZgAAADPmAGYAADMAAAAAMwAATAAAABkAAAAzAAAZABmzAAAzGQAZAGYZAAAAAJkAGX8AAH8AAAAAGQAAAAAZADMAGX8zAAAAmQB/GQAAZgAAMwBMAAAAAGYAMwBMAAAAAAAzZhkAGWYAGQAAAAAAAJkAAAAAM0wATAAAAAAAGQAAMzMAABkAAAAZAAAAMwBMAABMmQAAAEwAAEwAMxlMTAAAADMAMxkAMwAAAAB/AAAAAAAzAH8AAAAAAGYAADMAADMAAAAAAAAAAAAZGQD/AAAAZjMZGQAzADMzM0wAM2YZAABMAAAAADMAMzMZAAAAAAAAAEwAAAAAAAAAAAAzAAAAGQAAAAAAAAAZAAAzADMAMwAAM0wAAJkzABkAGQAZAAAzZgAAZgAATAAAABkAZhkAAGYAAEwZAEwAADNMTAAAAAAAGQAAAEwZAAAAAAAATDMAZgAAMwAATAAAADNmTBkzADMZGQBMGQAzfwAAAAAAABkAABkAMwBmAAAAAAAZTAAAAAAAABkzTBkAAAAZGWYAAAAAGUwZAAAzAEwAMwAAGQAAAAAAGQAAAGYZTAAAABlMTAAAGQAAAAAAGQBMAEwzADMAZgAAAAAAAAAAADMAABl/ZmYzAAAAMwCZAAAAGQAAAAAZGQAAAAAAAAAzAEwAAABMAAAAAEwAAAAAGRkZAAAAADN/AAAzAABmAAAAAAAAABkAAAAAAAAzABkAAH8AAAAAGUwAGQAAAAAAMwAZADMAAAAAAAAAAAAATGYzMwBMABkAABkAAAAAGQAAMxkAMwAAAAAAAAAAAAAzMzMAGQAZABkAAAAzAAAzGTMAMwAAAAAAAAAAMwAzZgAAAAAzAAB/GRkAMwAAADMAAGYAGWZMAEwZAEwzAABmAAAZAEwAABkzABkAAABMAAAzAAAATAAAAAAAGQAA  HH$Jfffff`@#$ B)JĐ?Ƃ@# $ $B > Q P M D BK > H $ S@##B T  H   !D  6##$ b#$ b Overall Cost BGWYAGUwIGRkZGWYAERkITBkRGRkZGRlMGREZEREIERkZABlMswgAGRl/fwAACDMRABEAGRl/CBERGRERGREIGUwACAgiAAgRTAgzZmYiIgBmAAAZGQgIABkZmWZmABkACBlMIhkRCBkAfwgIZgAAGRFMGQgIGQAiCDMRABlmERkZCAgZCDMZERkZMxkzZjOZZgAZIhl/ERkAMxEIEQBMAAAzABEiCAAIMzMzfyIiTBFMGUwzCEwzZhkIGQAzEQAZGQAAAAgRfwgAETMIGRkAZggRCBkIERkIMxEzAEwzADMRAExmADNMADMAIhkACAgIADMAGREZEQAAs0wZGQBmIggZTBlMCBEACBEZEQAZCBEZABERTAAzMxmZCAAIETMIERkRIhEICBkREQARGQAIZgAICDPmEWYRETMAIggZMwAZTBERCBkACAgzEQAZABmzCAgzGQAZCGYZCAgZEZkAGX8ICH8qCAgIGRERCBEZIjMAGX8zCAAAmQh/GQgZZiIRMxFMAAgICGYRMxFMGRkAEREzZhkIGWYZGQAiCAAiGZkAERkZM0wRTBEAIgAIGRkIMzMRCBkRCBkZGRkAMwBMGQhMmRkiEUwIEUwIMxlMTAAAETMRMxkRMwAZABl/CBkIKhkzCH8RAAgAEWYRCDMRADMAAAgIAAgREQgZGQD/EQAIZjMZGQgzADMzM0wZM2YZACJMAAARADMAMzMZGQgRIggREUwAEQAZEQgIAAgzEQAAGQAACBERABEZCCIzCDMZMxERM0wZEZkzERkZGQAZCAgzZgAZZgAATAAAABkAZhkZCGYRAEwZAEwAIjNMTBEIEQgZGQAAAEwZCAgIERkITDMIZgAIMxEITAAACDNmTBkzIjMZGSJMGQAzfwgICAgZABkAABkAMwhmESIqAAgZTCIAABEAABkzTBkICBEZGWYICBkAGUwZIgAzAEwZMwgAGSIACBkZGQgRAGYZTBEACBlMTAgIGREZEQgIGRFMCEwzGTMiZggIGREAACIIADMRABl/ZmYzGSIZMwiZCBkRGQAIGQgZGQgICBEICBEzAEwIAABMABkRAEwRCAAiGRkZCAgZGTN/CAgzABFmGQAAABkRIhkZCAgREQgzABkRAH8RCBEiGUwRGQAZAAARMwAZETMqAAgRGQgAKhEZTGYzMwhMABkZGRkRABEAGREIMxkRMxEAAAgAAAgREQAzMzMZGRkZERkIABkzIggzGTMIMwgAEQgRCAgRMwAzZggIAAgzABF/GRkIMwgACDMACGYIGWZMEUwZGUwzAABmAAgZCEwAABkzCBkAEQhMCAgzCAgITCoIEQAIGQAA HH$ O 3f@ #$ B) O > BFBFBF,E#@$ @B?/$?![M@#@$ @"@%@A@#@$ @B@ BE, F #@$ @B?7A`?![M@#@$ @"@% @A@#@$ @B@FE?@6L@D@D@@@@@@?%C?E Fb@  @ 6L@D @D @@@@ @@?/$?FE@?K? E Fr@  ?(\?R [E@?q= ףp? E F |@  ?~ U@E@?Cl? E F@  AZd;? FFE"@?S㥛? E Fp@  A;On?FE&@?~jth? E F @  AFE@*@?Mb`?  E Fh@  A~jth?F,E.@#@$ @B E F@  AAAAA E F@ AMb`?AAAA E, Fp@ #@$ @BAAAAA EAAAAA EAAAAAAAAAA AAA IA AAA G A !AAA !H!A"AAAAA#AAAAA$AAAAADl l*`H tZV(((%&'()*+,-./0123456%AAAAA&AAAAA'AAAAA(AAAAA)AAAAA*AAAAA+AAAAA,AAAAA-AAAAA.AAAAA/AAAAA0AAAAA1AAAAA2AAAAA3AAAAA4AAAAA5AAAAA6AAAAA(T  A  K@(  ~  c DN Chart DistoGram l]@ d  ' PP PZaajk" ??3PH0(0(  (п3d23   M4  3Q  BinCountsQ ;QQ3_    MM<4E4  3Q $SeriesAxisLabelsQQQ3_ M NM  !!d R R R R R R "#S S4ES S 4D$% 0P43O&Q4$% MP43O&Q4FA*3 3OA$3 bR RR RV Vdp`#M! M .3(QR(CS S43*?N &! ! 4523  M43" 43d" 4S S4% ^c)3O&Q 6Overall Cost Distribution'R R<~GZ?M*?S S4% m@& 3O&Q: $0'R R<S S4% 5@& 3O &Q:  $150'R R<S S4% @& 3O &Q:  $300'R R<S S4%  @& 3O &Q:  $450'R R<S S4% u@& 3O &Q:  $600'R R<S S4% @& 3O &Q:  $750'R R<S S4% O @& 3O &Q:  $900'R R<S S4%  @& 3O+&Q: $1,050'R R<S S4%  @& 3O+&Q: $1,200'R R<S S4% q @& 3O+&Q: $1,350' R R <S S4% @& 3O+&Q: $1,500' R R <S S4% & 3O&Q'4DAu`?>MF?'(?w\I`? [S S 4 e??@ @@@@@!@ #@ %@e  e& ~  c DN Chart DistoGram l]@d  ' PP PZaajk"??3PH@,0(  ,u@3d23   M4 3Q  BinCountsQ ;QQ3_    MM<4E4  3Q $SeriesAxisLabelsQQQ3_ M NM  !!d R R R R R R "#MS S4ES S 4D$% 0P43O& Q4$% MP43O& Q4FA  3OV 3 bR RR RV Vdp`#M! M .(QRmS S43*N &! ! 4523  M43" 43d" 4S S4% 4 8a)3O&Q *Demand Distribution'R R<J}̣?&q-?S S4% `Z@& 3O &Q: 0'R R<S S4% Z@& 3O &Q: 2'R R<S S4% Z@& 3O &Q: 4'R R<S S4% Z@& 3O &Q: 6'R R<S S4% CZ@& 3O &Q: 8'R R<S S4%  Z@& 3O &Q: 9'R R<S S4%  @& 3O&Q: 11'R R<S S4% J @& 3O&Q: 13'R R<S S4% @& 3O&Q: 15'R R<S S4% & 3O&Q'4DR EL?BǼ?X?θ ? [S S 4 e??@ @@@@@!@ee& TL  3 @6Q]B`d \*    \-$xx $ 6- GHOA@ $ ]$`-Pd  <Adjust stocking level here<#ll" % s *- A@`lp]%`-d  <This sheet models the probability distribution of demand with a DIST of 1,000 trials in cell E11. Change the amount stocked in cell C21 with the spinner, and observe the average and distribution of overall cost on the right. Remember that each click of the spinner results in 1,000 Monte Carlo trials. Copyright 2008, Sam Savage <# -H@ &  Ay]&&`*d xx ' 6. G4HH?A@ 0Q y]'`.H+d  <Input DIST of uncertain demand<# xx ( 6. GHeA@ 2 9](`.,d  <Calculated DISTs<#xx ) 6(/ GHA@ p2 -])`(/-d  <Calculated DISTs<#xx * 6x/ GHA@ p2 -]*`x/x.d  <Calculated DISTs<#ll" + s */ A@@ #]+`/p/d  <Which stocking level minimizes average cost? Which level minimizes the 95th percentile of cost? < _X_P$'()*>@  7 Sheet2ggD& ThisWorkbook __SRP_3 -X__SRP_27Sheet1:  !"#$%&'()*+,./012345689;<=>?@ABCDEFGHIJKLNOPRTUVWXYZ[\]^_`abcdeghikmnopqrstuvwxyz{}~    2 !"#$%&'()*+,-./013456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}t8  #< 5)Jә7FZ:#@P`1}SxZ:#@P`1}S 5)Jә7MEPSLSS6" <<N0{00020819-0000-0000-C000-000000000046}(% ``kpT i  i"  (`|kX 0( %X %p0$&$25 - E@Hl N1@`\ 7 @xL / @< $@, 17@ 9 @ - @ 10 *000@\TJ$*\Rffff*1d4ac28320*\R0*#14$*\Rffff*0t4ac283c74 "   8 2H :+  "   x02 ThisWorkbook.Names.Add is_active_string, False, Sheet1.Range("on_off_indicator") = "OFF"$$0The model has been modified and cannot be saved.A@&<'"k oA*oAttribute VB_Name = "ThisWorkbook" Bas0{00020P819-0C$0046} |GlobalSpacFalse dCreatablPredeclaIdTru BExposeTemplateDerivBustomizD2Option /licit` P"& Sub _BeforeSave(ByVal AsUI As Boolean, Cancel ) '  .s.Add is_act \_sng, _Sheet1.Range("on_off_indicator")OFF1@If Not-IsAuthentic() T@$ MsgBox e mod-ha@s beenifi@Rand cannbe s9?d.D;= SE@ If=AQUOpen(IlPC`_s?rU  iA#4a  `` IWD ?+'''<:lN\\ 6\< D$ \<<   $ 44PrU @,`T#$A`X nDr%#<pN6K\( F,isD;}4TOx,isD;}4TOpN6K\(ME(SLSS6"N0{00020820-0000-0000-C000-000000000046}(%@h % %Xp@@HH0J$*\Rffff*0h4ac283934 xpAttribute VB_Name = "She@et1" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2Option /licit rU Qy1 4 __SRP_cM__SRP_dQBSheet2S__SRP_ef`rU @nDr#<FӼKHTot3H F6\jlzLVﯶx6\jlzLVﯶFӼKHTot3HME(SLSS6"N0{00020820-0000-0000-C000-000000000046}(%@h % %Xp@@HH0J$*\Rffff*0i4ac283934 xpAttribute VB_Name = "She@et2" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2Option /licit rU (y91 4 `rU @nrU $8`Y Unnamed---single/,`Yq/(`__SRP_f jBMakeDistGetDist \__SRP_86=__SRP_9l1$*\Rffff*1d4ac28320$*\Rffff*0t4ac283c7*\R0*#14*\R0*#e*\R1*#61*\R1*#d7*\R1*#e8*\R1*#2ac*\R0*#f*\R0*#f*\R4*#5*\R0*#19*\R0*#1a*\R4*#4*\R4*#6*\R0*#0*\R0*#13 4 8@H P `p     0 @:P, B,0Pp      ( 0@ P Xh x    L" LLLLLLXBʐBH ʐDH ˜HB ʘL@vB˜NgBR @ Avg= Min= Max= Count=T Unnamed---+V``;p*oIX (4iZP4i\x(4i^8,4 15Returns name of the DIST in  15 15``t4`bp 4`dl|4`fh|4`h(`4`jX4`lP4`nH,4`p8 4`r44`t2 4`v04`x `z `|`~``( `x `P```8 D0 (hP`"` `@`p`h+8 ` fo( $i Hid.!Returns minimum value in the DISTIST 15 15`h0000``d`b``hX`j(P`lH`@y`8 `P4`8,`n$x p   `r`H G `^`` tena`h`  H% '% 0 f%`'` v` 8 h x  L $ `F$`tD` B`@+`>@ `<'`4`` ,``(t`x$'` ` 0 t`  ` +` f P ` 9kx  ,I + 15 15 15 15`\ x X +% T t% P0 %`L "p `; 6k  LI P 15 15 15" `6\ h  X % T0 % PP c%`L 0 &p` lI #Returns k-th percentile of the Dist` $ ($% H$% h$% *`p2k  I Returns variance of a DISTe  15`\ ' X0% TP$P% Pp%`L .`p4k  I  rns variance of a DISTe `\ XP% Tp% P%`5L 2`  I ` @% `% % 6`@  ##I Returns average of the DISTfT` H% h% %+:H `   i  rns k-th percentile of the DistT`r`< +D `;  !i  Returns correlation of two DISTSDIST`r`< +J `h H 7i hiL `l ion 46`r`N`< `P +V( ` X Oi xiL @ cent@h `r`N`< `P \  ` 7kh gI I^ !Returns maximum value in the DISTin ``\ `bL `< ``!hk `( o  `j ˜0B˜2B˜6(Cʘ<xBʐ@HʐFH ˜JB Ph @˜T*BH`p0Xh(p x P @P8 (.  %single<> Returns origin data for the DIST Returns covariance of two DISTs dard deviation of a DISTH@ valuh8'ISTP%Returns array of elements of the DIST  x  H `  8P8 @ @ @  @ @ @ @x PL@ xL@ P@ P@  TR02:@8 @P @ (@ @P Txs@ y@x  y@0 H}@ X0}h0@ x@h @ @ (@&@x @t h@p @l  @h   !`!0!! ! @l  Jl@x!d @H!T @D p@!4 (@!0 @, @! @ @ I("""PRx @"h @#X @ #H @8#8 @P#( @h# @# @# @# @# @# @# @$ @($ @@$ @X$x @p$h @$X @$H @$8 @$( @$ @% @% @0% @H% @`% @x% @% @% @% @%x @%h @&X @ &H @8&8 @P&( @h& @& @& @& @& @& @& @' @(' @@' @X'x @p'h @'X @'H @'8 @'( @' @( @( @0( @H( @`( @x( @( @( @( @(x @h @)X @ )H @8)8 @P)( @h) @) @) @) @) @) @) @* @(* @@* @X*x @h @p P+8X+2`+++X-H,+1(+`Vx8+++p64@x+ @, @+ @ `,+@, @, @@, @0, @x @p,t ,H,7@,p ,p,7-p,@XH+:0P2@2l @@-\ @- 0-,[@.  p--[(@ @- -X-m@- --m--o@- --r@(. .-r.-t@.-x@P. h.(.@. x.P..P.@. ..@0 ..@/ /.@8/ (//P//@`/ x/8/@/ /`//`//.@/ //@X0 // 0/@00 H00@ p000@0 0X0@0 0000@0 00@(1 1010@100@P1 h1(1@1 x1P11P1@1 11@ 111,&X;@2 @02 @H2 @`2 @x2 @2 @ @ 8xX`33(4334@4`33x3@*l 3`36@3< @, @ @ @ @X4 @  @ X x855`55555H5(5@.l 8559@x5< @, @ @ @ @6 `@  WMFC@ ," X 8 X777@7p77666@"l 66$@0@ @@(7< @, @ @ @ @7 @  @ p8hP98889p888@\l d8p8f@8, @ 9 @9 @9 L@ @ @h9 @ @9 @ %P: 8  :;::;0;P::h:@l x:P:q?@:< @, @ %@ @ @H; @  @ %Returns a DIST created from the arrayL$Returns number of trials in the DIST$Returns standard deviation of a DIST/`$5 J$*\Rffff*1g4ac28320*\R4*#6d*\R4*#1*\R4*#9*\R1*#1c7*\R0*#17*\R1*#229*\R1*#228*\R1*#f 0 ( 8@ HX `h&p$    (08@X `x    08_H8_8_$!(;((;P(;x6R*;6. @ $Px       0  8 .8P        4' 4' 8 X ` h  1              (  8  H  4'h  4'          1  @  P X  ` p          -      &((  P ` x         4' 4'@`4'4'  18 Xhpx               4'8 4'p   4' 4'  X x   1       ( 8@ X` x        4' 4'X 1  0 @ P X h x         4' 4'@ x    1    (08 @  08~4@  B  H(@Xp     ( 0 8@  `&p / ) 9R$@HP 7X x    777( 8Hh!   (8 H P X ` h px    @W  `p,$x4'.$ 0@Xp(9x,E%  8 @#H`#p #  &;   &;0  X  p         @W  8!H!,$P!4'!.$!,$!4'".$P""" " " " "$""##8#X#p#,Ex###%# ##$ $#$0$#@$X$p$ x$#$$$ $ &;$ $ &;% (% @% P% X%p%%%% %%@W% &(&,$0&4'`&.$&&& & & &'' '@'X'`'x' ''' '''.' ' (@_( P(`(((($((( ()# )8)P)"3X) ) )#) ))) )* *** * 8* P*`*h*p*x*G******** * +++ + (+ 8+H+P+x4X++ + B + +++,  , ,@,H, P, X,`,  ,&, /, ),7, - -  - (- 8- B @- H-P-X-h-  p- --- - --  -&- /. )0. 7H. h. x. . . . B  . ...  . ../ ///  8/H/ h/ // / / / / B / //00  0 (0H0P0 X0 `0h0  0&0 /0 )070 1  1 (1 01 @1 B H1 P1X1`1p1  x1 111 1 11  1&1 /2 )827P2 p2 2 2 2 2 B  2 222  2 233 33 3  @3P3 p3 33 3 3 3 3 B  3 344  4 (4H4P4 X4`4h4  44 4 44 5 5(5 05@5 H5 P5 X5 h5 B  p5 x5  5 555 5 555 6 6 6  6 B  (6 06  @6 P6p6x6 6 666 6 6 6 6 B  6 6  7 787@7 H7 P7X7h7p77 7 7 7 7 B  7 7  7 8 8(8 08 88@8P8X8h8 8 8 8 8 B 8 8  8 899 9  9 9 (9 H9X9`9%h9 999 9K9 9 9 9 9 "9  H:0H:8f; X= B `= h=p= mx=+= = ==- DstCreate/Dst 256 bins Base64 multitype v3.0v80]Iv]xJv]-1]-1]$ (s ]$P)]$0le]$x)]$ Avg=Xy D]$ Min=]$ Max=]$ Count=]]]$ 8 H :  J < > ] 8 H :  J  @]h]* single Unnamed--- 4] 44]8Ph4 4]44](4]@Xp4]4]4$4l4Error:Demo is inactive.'Vzk \$4singleKT4' Single 'doubleKT4' Double 'binaryKT4' Binary 'Sh' Custom 'nH Z'|'z Sip is Range or ArrayL4 X$Range'v X!! X!! X!!'b'zd X!!'bk'd b'f X$  e' Sip is Array X'v X X  'b X'd X'fd Y(X 'Vzk X'p 6'h 4'j'l ` d f z v `$p'xd ` v$p'xk` x j G x'jj x h G x'hj l x 'l ` h 6'h'jk l b'l h j  'n :$ j0.00000000E+000$ :$'~ :$ h0.00000000E+000$ :$' :$ l0.00000000E+000$ :$''r concatenate array characters]8]p]'  ` d f z v `$p'xd ` v$p'xk n  x j  n 0 'dx 0'kh $+$ $ +$ $@ +$@ +' t r t$ $P'r tH' t t+ tk  '  + ` $+$ $ +$ $@ +$@ +' t r t$ $P'r tk e ` d f z v `$p'x1;/dP ` v$p'xk0 n  x j  x h 0 ' 0 'd x j  n 0'c 'emo    0'kdx''k` XML.$+$ $ +.7$ $@ +mo$@ +e m$+$ $ + $ $@ +$@ +0' t0 r t$ $P'r t' t t+ t0kH  '  +  'Dd  + ` $+$ $ +$ $@ +$@ +$+$ $ +$ $@ +$@ +'x t r t$ $P'r t(k  e'' ` d f  ' ' z v `$p'xd ` v$p'xk x  'kX  2  '   +''k $+$ $ +$ $@ +$@ +'@ t r t$ $P'r t ' t t+ tk `  t 2  ' t  '  +k( $+$ $ +$ $@ +$@ +'X t r t$ $P'r t k d k r'r r'Vz    -Error in data passed to EncodeString routine. Trial  ` ( d based.)  Click 'End' to abort processing. B@z A@  '  d LAn unidentified error has occurred. Lookup table arrays have been recreated. Try DstCreate again.A@&k8i0A This function can only be called from a formula in the worksheet]] ]8Ph]]]0]H`]x]]D]  $Error:Demo is inactive.'zk ' $ Gj (  %Gj !!Gj %.0 %!'r @ this means there is no node value, i.e. the DataString is empty'rktype !%!' $singleKT'doubleKT'binaryKT'S('navg !%!'lmin !%!'jmax !%!'hcount !%!'b h j  'n bpX ''']`  ]    ]0 H ` x ]  ]  ]  ''''  4'  6''' r  ` b '  t  '  r Gyj r $$ T $R t+ t$$ +$ $ +$ @$ +'k  ' $'  0  h `+pd  0 n j `+pkX `$p j `$p h  'k  `$p ' `$p  `$p' `''  `$p e  '  `$p  e `$p'  `'' `$p e  'k `  h $p   ' h +p  j $p   ' j +p e ` b 'H t  '  r Gyj r $$ T $R t+ t$$ +$ $ +$ @$ +$$ +$ $ +$ @$ +'kp  ' $'  ' $'  0   0  h `+pd j n  0 ' n  0'   `+pk `$p j `$p h  'k@  `$p ' `$p  `$p' `''  `$p e  '  `$p  e `$p'  `'' `$p e  'kP `  h $p   ' h +p  j $p   ' j +p e' ` b  'h t  '  r Gyj r $$ T $R t+ t$$ +$ $ +$ @$ +'k(  '   ' $'k  2   `+pd `+pk  2'k` `dHk@   b      b'  :$ 0.00000000E+000$ :$' l  '  b    b   'dX  b b    'k( ` b `$p  h `+p `$p e j `+pd `$p  `+p `$p h h `+p `$p j e j `+pkk `kkkd ` b h `+p `k] ' !!G'jX   p'd0 $p'kz Y('zA@  '  d LAn unidentified error has occurred. Lookup table arrays have been recreated. Try Dst again.A@&k(i 8 ] ] ]D  ]8 $Error:Demo is inactive.'zk  ' $ G j (  %G j !!G j %.avg !%!' X'z  Y('iP ] ] ]D 8 ]X $Error:Demo is inactive.'"zXkP$H ' $ G$j (  %G$j !!G$j %.count !%!' X '"z$x Y('"i`p ] ]]D0P$Error:Demo is inactive.'&zk( ' $ G(j (  %G(j !!G(j %.name !%!'&z8(0 Y('&ip]]]D8X]x$Error:Demo is inactive.'*zk, ' $ G,j (  %G,j !!G,j %.min !%!' X'*z, Y('*i] ]8]DXx]$Error:Demo is inactive.'.zPkH0@ ' $ G0j (  %G0j !!G0j %.max !%!' X'.zx 0p Y('.iX ]](]DHh$Error:Demo is inactive.'2z k 4 ' $ G4j (  %G4j !!G4j %.type !%!'2z0 4( Y('2i ]]0]DPp$Error:Demo is inactive.'6z k 8 ' $ G8j (  %G8j !!G8j %.origin !%. '6d !'6k z 8 Y('6i ]0$Error:Demo is inactive.':z@ k8 >0 'r r$'< < !@%B':z > Y(':i H]$Error:Demo is inactive.'Dz k Fx 'r r$'< < !@%H'Dz@ F8 Y('Di ]$Error:Demo is inactive.'JzkR 'r r$'< L'N N$'P < P !@%T'JzXRP Y('Ji8]$Error:Demo is inactive.'VzkX 'r r$'< L'N N$'P < P !@%Z'VzpXh Y('ViP(]$Error:Demo is inactive.'\zkd '` ^'b `$  b$f Y('\zk b b  Y('\zhk` `$'  b !@%^'\z(d  Y('\i B 64 safe characters for encoding use. As used for standard Base64.&JlABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/D@'P"0dp?@56789:;<=>  !"#$%&'()*+,-./01234DP'Ro`] l %j!n %h' G'j 'i@8Attribute VB_Name = "MakeDistGet0" ' DstCreate/$ 256 bins Base64 multitype v3.0^ Option Explic it b 1 Const BD=OtsPerPChar8MinStartL20ax-Pubx f@Length?3H2 um16 CountG TyAvgHTexY" =? iaxaxMyExtraO.5 7 =He0aderO+ 3 * (M+ NQ) +@]Mp_ + GO&TrialsLoci~+Dim#de_Values As Va@nt, pDecoQE#F(loo4Fu nc(Sip, al S-%AS@ng1"Unn@d---", BCG Param si0ngle OriginK "), GF-.De0scrit~Retur`za DIST c}d from the `array`X ProcData! Invoke_% \n15 1.Ro>wK*K ip s % TruM-Q)=VsHC> vbB=B 6LB d, 2849 U81) - IzQ1 Y _ o0!C&(CV@E(xlPK) D a0"POggī&h= OpN GoTo  orHandlerF`.c &'* a(S, c9>EoyuW< l =3 >+axoPbcN1Bs4@t|E?da$O e /}:!&-g3PST0"Right(Space(& $mat( , "0.0E+"),P {r Qџu " Then }\o-^:!>" 'wncaten array chara ctersmim BytesIn(1 To 6) As Integer, Outm8  C A8Error `Code12Ermedib ValueDopuble$_1= 0 ۃ]d8] `StartABEnd UseCols p  *= a(Period,) Els1ALCMnd IfK(f - 1 )0T*BinNtum@>_!@^(((H#- Min6) / Dif) * @s) + 1 6A S2Gw>= 3U2)3 ) \ 4 a2(Mod 416 \ 16 3  1`i* 4 \ 69=rk#*_7On o Go {Recre`hB%aai'€paWv_BCs*+iB,VNext i*+yaA2p}j3 EC&qlIg`A FAE`tgc}@yUys-?}G_& T= __S`^4^ ]]O.& .Ճ.Pq.3P$ - %!Sj2N #":j#1jbb;0j"O]j34 5 jA`X>vg_b@= `# ?zs 1 hrkY2_p?ٟ= v v" vo  !{nX21 1(N B&~,P]bQr"G_Ѐ6 JQmHLOQI*߀fQ`߀`߀ Qd5e\` @_`p7ad`!plq6?a1_a a8aabs_bsV: r"c @=g (&"@k' w=#D Trյials If ByteCount <> 0 Then|sOut(1)D =sIn\ 4R2R(pTMod 4) *` 16 +C&\;D3 D+D16E4D&\ 6t*C58ZpB= p+ p(p7 p"p5p8Y! pArrayErrDor= 0\On  GoTo Recreate For i1 8KDataStri ng & Code_Value&sNi)@r1)Next iK(/End If! Else@Di@stType@ 3̳Char CurrentBitA;TrStart? *+ 1 c"%* 2 3UslsA\!4a(Period, 'LVH 0#, # --aa@b/g.#I:a` *+@5s"x]g aaj&FEA a Lat& >= Va hAo\  þ~eꗌea vaA.j3?SEAZr )2@G8>  :- 1 y5.Q %>>"4 > P&"-߉e<0499`9Bo9o9`oF/9dN8M8o "o8 /83o"o`o" 7?/Wri * "<$/d>"stCR0bGExFunctioHandler:rr.Raise Numb`=1005, _A Descri"p!:="in d passed top cproutine." & vbCrLf(a"? !? " (%&ba@.) "Click ''aboГprocess@.4SetupQr(ĩ)@<<wResume@WMsgBox "An unid@ifieѵ has occѤd. Lookup table a1sve @been rTd<y D$`againF f q*$ (DIST As Vant, O9B#al3&Lo R-K Attribute0.VB_'-"Rprns of` elemfx th`p~P` 11Invok e_ 1 \n1 50'is f2 can onLly llfrom a formula 01worksheetDim Ro>wb 5, Max4/$1Douin1>Avg<7New, AverageDifNonZero AmtToAdd a()Q DataString As , ResultAsColumndBoolean Dim DistType8Integer,( lTempNumjVariant, CurrentBitL28XmlU7xDocNew DOM umO30"Node a$IXML$,p xAt9 ributes; ,atVal&Double<,  If Not IsActive() Thest = "Error:Demo is ina.""ExFun oEnd If#On $ GoTo GDA_= DIS^T @'ar(C) <> vb;*CA^.validateOnParse3FalsPD? LoadZA Childks.Len(gthA(1&Se8t xA #(0)/CLAme NextC=.#@.u; @['0'' th@sm@sereawno nNui.e. ty!@V~2v3F^s.getNamedItem("t `{")-Select Ca( +b"s9@fleXbe= 1'dBj2 Rb`ery3 EfSA4*CAvg.&avg&Min.minax)axT lsAcount/Dif`M- +8Rea(rLo #, 1m)Averag! dNonZeroC#2 BytesInc8)n$bOut6  {`߆i Aprray C-@|1!2.1Dec@' 0",Long, axi:?oWIn'@ @p 6> F#icGY =  =(S8tar[m ax6 ^Fpgpf(_) > ]#1C@OP.:}For q7b0 g1 >= 3c' 9aRecrve`zshT)A iy o PV1=or@ P> or_a?i) _3_+s(Asc(MidH3@J8)) - DFloor) -k i 1ozrDRL1) * 4 + 2) \ 1?-q9B1P= b(8ModP1632@W46 4M 8=yoL#'0=S?O )7Bins_8a(<#=&5,(() / w+vE@S" AP}8oAx/k a @w+ y o] >h 3 =v+k[(^ xE j R-?P/$%[alue Then MinInTrialV!= a(8s, 1)Numl1J = ZRCo(unt+1&ElseIf uT3 ' b + rnd If ENexteNewAvg+ (Max f-`ax)8 * F 8a(z' M@in@i@Q ]G gDistType2ForDO1 To FCU{ByteG >= 6اArrayError = 0K1ŴOn  Go@Rec reates2 -i+8, "8 > Len(DataString); Exit WAsIn(i) _ Decode_ns(As c(Mid, OB A - Floor) -1i3! i2GDA_b4Out(1!* 4 + 2) \ 16|= (1hModr16 3 4  Ձ 4a 6)4k@=56#h`7t( @8rE!F!g2jCZ1_sA(Pfc 2 & `deinsAa A`ԉNQB!cr!+ DifcB!/ B2m(g2/2Q ^ 2R +o fJ<> `2Lvo NonZero% P _5>+_ @ axϘ`!Ϙ YX`!/wR 2ퟑ ~ =|  ?- /) < //?@,1t? ??km ?+u-?p_+/,,( 7)i"k1*0{p&3 CurrentBP.q2 sϭcU?wh3b6Vq ?(r/QnSlEC>"P1CT6* 16 + BytesIn(3) \ 4 #Out= (Mod 4) * 644)Count = 0DEnd IfCurrentBi7 + 1,If /1 Then'dG+TempNum^sxgP$Ax2 ^itsPerChPar -`)^a(Trials, 1)IElse|(cW@eF.WZddNext 814X'(Dis tTypeD ODr 2) A\(Max > in_NonZero 0iNewAv`gValu#I/ g Right(Space(Length) & Format(H , _O"0.0E+0"), oAverageDif(F- h "<> 0/ C+d/M-] $6!!AmtToAddP!wf*9 / (- ()UA>boyIa@(L~I\Twwe"/AA)inE in L + DWM>1"P 2*< Md"?DO) \9! 0π] MaxN IDim IsArrayFunc As Boolea=:u(On Error Resume0T xts #Not Application.Caller.HaZ= FGoTo GDA_#Bp^berB-1Xi +?Dsa+A0QEx  :SCV@ x(xlPPRecreates2SetupCode orVV`<= 33MsgBox "An unidified eRhas occd. Lookup table a#s have been rDd."{& v bCrLfp~"Try agai8n."4 Ta4 *qtj(XmlAttribute.VB_Descrip"Rrns р of tbh0IST@OgeAProcDataInvok e_ \n15 S A5p StrI4Vantx Do6p DOMc4nt3{x N IXML@, x H  d`ingS92ctive>(mTa b':Demo is inaB-"?B<'I==  1A ) vb CDO0IS.valid`7OnParsQFTLoadD ?< Childs. Oa5 @@ S= (0DQ./s.getNamedItem("avgx").1EcCDbl(6N GO"O;;VOf#mo<\st[7 vbsd-0`.validateOnPParse:F@eCJ LoadaMChildqs.Len(gthA/1-Se8t x* (0V).= .riAs.getNamedItem("count").Valu=fCLng(I | Tu:C&V}(xl@! B@1c 8DescripA@0"Returns n of~}|}av}`} Uzz,?y?y/y wwe, CB^v`d .v @jxu2?t TRbyWtU/txoFw(n` ClAlM 1!ASe}9 J(0)!).AttributmgetNamedItem(""t").Valuq Exit Function) :4CV(xl%E%nd% +OriginpDistT.VB_Descr ipFj"Ret@urns o a for the DIST" $ProcDataInvoke_# \n15@6im u As Vari8antA^Ne w DOMum`ent30AU  I , x?@&)CIsA`ve(@bCN-\or:Demo is ina .@2 Ps2EeIfCCOn BCC=Fk+Gvbing)B?osfto ba<= x!>oW"eIshE'#8ۊ>;E-x` z>{ '|`M|…{k|C(r^`h)/hLu ~vpce of aR}|}D`}$V}#, Array a-26ut! gttGD *c{P="%#'s vbSng A<pNumeric$(cqCV@(xlValuk6!c < 0 Or_> 1Sw=bFst<Applicaa.Worksh(eetEf.Q(b'8 o }Og:3@aG @ Sub SpCodeYArrays(!' 64 safe charers for encodi@vuse.dBstandard Base64. A_FsAC( _."@A", "BCUDEFGUHIJKULMNOPQe RSTUVWXYZabcdefghVi jklUmnopUqrstUuvwxyze 0123456789+/"E+8De4eu/63, 0E64, 5U55`6`7`8`9, 6 612, f ?  , W` @ 111U1 1@1 1U 111222222 L2223@33333333344444444445r552(-kj Fá}zĂBooleFaDưRes pNextcaEv`ate(Thisbook.Names(is&_ t_s).RefvToy+0B False Ϡtb#m  D   `1)5pM@ : ]3p:]3p:]3pp7 D   BtH)57 D   BtP)57 D   BtX)58 D   "q`)5oXoPt$!l`  t@t8 q4 q( q$ q q -1t t pFpBlJH ktdl`d kFp@K5DcD kBpBkBlJDW(kBM@  *D%(UkDh/6 DdK $hhL'hhL$h@hLpF kFpFkFLD(]Z oXkldl F9(o$koPkldl 5Eldl oP~uk] kFpF kFLp<k>k붫t4o$k<϶t,o4o,kldl Eldl oPk]lx:?lx:@lx:Alx:Blx:Clx:Dlx:Elx:Flx:Glx:xHlx:hI lx:XJ!lx:HK"lx:8L#lx:(M$lx:N%lx:O&lx:P'lx:Q(lx:R)lx:S*lx:T+lx:U,lx:V-lx:W.lx:xX/lx:hY0lx:XZ1lx:H[2lx:8\3lx:(]4lx:^5lx:_6lx:`7lx:a8lx:b9lx:c:lx:d;lx:e<lx:f=lx:g>lx:xh?lxxh ixZh Ox(h?lxR(XlxR(HlxR(8lxR((@lxR(5lxR(6lxR(7lxR(8lxR(9 lxR(: lxR(; lxR(< lxR(= lxR(>lxR(xlxR(hlxR(XlxR(HlxR(8lxR((lxR(lxR(lxR(lxR(lxR(lxR(lxR(lxR(lxR(lxR( lxR(x lxR(h lxR(X !lxR(H "lxR(8#lxR(($lxR(%lxR(&lxR('lxR((lxR()lxR(*lxR(+lxR(,lxR(-lxR(.lxR(x/lxR(h0lxR(X1lxR(H2lxR(83lxR((4lxR(5lxR(6lxR(7lxR(8lxR(9lxR(:lxR( ;lxR(!<lxR("=lxR(#>lxR(x$?lxR(X%@lxR(H&AlxR(8'BlxR(((ClxR()DlxR(*ElxR(+FlxR(,GlxR(-HlxR(.IlxR(/JlxR(0KlxR(1LlxR(2MlxR(x3NlxR(h4OlxRxh ixZh $> hxKm :T$%d%$& 'd4(00a%,$ ,  Vpj)d0,64 $ dd ldpj kjTlt(l$d0,4       Y/(`YY/(!`Y/(I` Y/(q`YY/(`/(`Y/( `Yq/( `9Yq/,9 `Yq//,a `Yq//, `aYqA//$`$`nrU~|   A  1 ) 1 Y A  ModuleHashFormulas&'__SRP_4|__SRP_5ModuleXL2Dist #1a*\R0*#13*\R1*#64*\R1*#e4*\R1*#e8*\R1*#2ac*\R0*#f*\R1*#229*\R1*#228*\R1*#f1$*\Rffff*1d4ac28320l  B   ( H,P 2[2[  2  @ B H P FX  /   0 $; !@ X h p  0 $;Z50H P ` h x     B *!ExMET@ (> L LLLL"+   ( 0 H P h x    N <(  zh  x]$ is_active]A@| t$~'t make key 256 bits long'x'z t  x&h t t$XD6$'xco z&h t t$XD\$'z z x v$~$~'ri? makes a sha-256 hash of the unprotected formulas in a workbook]Ph'  ! !  !%. D:   !%$9  !'99 :d :d B@94:kx  !%.  4   !%4 !!d$XLSim:  !!d$Dst: 44  !!d'4k 44d B@44kdx  !'44kX 4\4 'i8('$%Waltz, nymph, for quick jigs vex Bud.$$r hash_code %j!n@$'$i](Hh$'$$ l !jB@'Sheet1.Range("on_off_indicator") = "ON"! Application.CalculateFull1 For Each wks In ActiveWorkbook.Worksheets+ If Not wks.ProtectContents Then$ On Error Resume NextD Set fc = wks.Cells.SpecialCells(xlCellTypeConstants) If Err = 0 Then fc.Dirty  End If End If Next wksledp l !jB@ 15(Sheet1.Range("on_off_indicator") = "OFF"4The model has been modified and cannot be activated.A@&ko to use this sub: Uncomment it.  Run it. Re-comment it. ' 'End SubSub hrihkybgpv()WoG ' Sets stored hash code value to the actual hash code of the workbook.d.6 ' This allows the workbook to be activated and saved.h cos ThisWorkbook.Names.Add "hash_code", HMAC_SHA256("Waltz, nymph, for quick jigs vex Bud.", GetWorkbookFormulas())޵Attribute VB_Name = "ModuleHashFormulas" Option Explicit Pub, Const is_active_sng&~ Fun@HMAC_SHA256(key As S3, data)e Dim inner_ /oiALong, cL, b Byte TC_Crs_Initializ6= U) ' make  _ bits l5 )T}6'T i1 To 32! & Hex(C`("&h" & Mid, i, 2)) Xor 54" ;$92DNex|n.F I-t)D End EwFGetWorkbook"(@ ' \s @a sha-]h of the unprotected fī=@ w@Vfmc@zIwkssheet, fBpRangJCoEach AIn VA0.svI f Not .P#-tenTh,en ZO@rr@tResu@GaAQSet+=Cells.SpeFc@(xlTxypeETa#Err 90  b`"@ .B _Bl E(&.?$K Elsd2E `.Clear@MIfk_&E&Comm!3_&I _&4H3 %@40Amtrp(Left(fc. .T@s, 6), "XLSim:", vbare) Or ?4!Dst3CP:i/E03a>% >BF aZ!'"@p`3" IsAuntic()!Boo`WWY Fab(i"Waltz, n0ymphN Fquick jigs vex Bud.$s(Pf=rgPThis.s("qY_code").Refer@sTo, 3*4g``SuySateRX_A[?Z`2Z ;]sS p6 /_.Addޏ, T$ruJ'Se1. ("on_off_indica tor")@"OJN'.ApaAQ.CalcpteFullqDF/h hvhyh)!nUblliostaoUn =0ui1 `PDirtya1%i!7"OFF1Msg Box "& m 3l p4 beenifiaS@cannot 2P:3, G55to useis sub:! Uncm iDt.Rune-a:hrih@kybgpv ' Pp, !@ !@ valuJoe ua hoԛ52'P` a`llowsb ` bRivq saved OBxI, PPPϩPPi 4 l ' Ch Cd` dP[lhF:( l`lM@@ D6D `1h6 [ldF:( l`lM@@ D\D `1d6  `fP<2ldlh*ǜ #*ǔ F l244lhd\0   Ch/X\ $ H \ QX[Td\P N d kNK0<%\d \`\5$ \\ l\;<%\d \[`\5!lhF<`a`1h6 `, \\H\0<%\d \`\5$ \\ l\;<%\d \[`\5`a\\a`aXXa(,]`F  :</(H]`Fx  x:hX/8()\X6xX5lh`a\\a`#$*1h/$\6 ` \\H\lh$d H l$*1h/$ dP 9 lhF<lXL4 lTP`dhL$\XxX8(Kpz:<%L$ Lah h``CddP  P(@ /Vpz2d`)L6 hP$ 8 d`LhP` ``1p5` K(:L%c,%\$ \\):L%f,%\$ \\+''' :LN`` 6` 0txp \` \rU ,`00$`$`$`n ~XxME(<<< < ` `le`as`x`s `````% X@J, "  0@P` p  ( 8 "@ Hh pB , 0@ ` *p    8  * .H px " . @ H`x]@Xp-& !' (' )' =' &  $  Create_Dist(      $ Dst(      $ )   $ )' B@  (o]( !' ='  $  DstCreate(    $ )' B@   {  $}' *{F2} ^+~' A@$Selection.FormulaArray = CurrFormulaoPublic Sub AddDistCreate()1 Dim CurrFormula As String, EqualsSign As Long# CurrFormula = Selection.Formula( EqualsSign = InStr(CurrFormula, "=")j CurrFormula = Left$(CurrFormula, EqualsSign) & "DstCreate( " & Mid(CurrFormula, EqualsSign + 1) & " )" Selection.ClearContents@,( Selection.FormulaArray = CurrFormulaEnd Sub@`Attribute VB_Name = "ModuleXL2Dist" Option Explicit SubdPRGKSendKey!biNdx "O@rror GoTo ADC_err-0ʂ\}Ahi"B = 1 `LeniS$jV(t*^{H , 1B} a NextC+. "{F2}a ,@ ^+~dd`;, True n'4RP<:Q'Q' 'Q`>J _JAB J* G+Ln/(&rU~|  ModuleDistXmlFunctions.Ra__SRP_a:__SRP_bXModuleSHA256{ V N ` h  T    D( p x  B H H8    J H &P 4x    J ,8 h p   F   P  (p "  F   ( J@ "    T NH N < ( 0 VH N .   ( @ X ` x T    (  H P Vh   :   ( @ H h ,    $ $( &      !#$%&'()*+,-./123457P :x . X \@    H   ( V@ 2 Z ^0    6   D  h p  B          (0 8 P` hpx  B   &&   0 @`h p:x  : 0 @HP X <`    ( f0 6   8H P Xp0  &. (0  X h p $x  0   ! ! !(! 0!  @! H! !!!"  "(8" `"p" " " "" " "," #0# &P#.x###4# $$($ P$p$ $$$$,$ $% %% % (% 8%H% P%`%% % n% & ^& bx& 0& ' ' f8' ,' ' ' ( 0( 8( jX( 0( ( ) 0) @) BP) ) ,) ) ) * (* H* h* * * j* + 8+ H+ `+ $+ 0+ D+ 4 , $X, , 6, ,, X- *X- - - - <- F. R`. <. ,. (/ DH/ :/ `/ 200 $h0 0 0 0 0 1 1 1 (1 1 *1 1 "1  2 @2 $P2 (x2 *2 22 3 6 3 "X3 .3 43 $3 4 *(4 2X4 C_xME(<6 < <0 `@ i`Fui  0` 8 \\I the I i - 15P 15 15 15`` mult` .` 10-2` h fi`t`  2 `h fi`ed T` to ` 2` -`fix.`ed D   `@ @ p .I 10-0I ta 8i han$Returns DIST of minimum of argumentsh `` _DIS` ` for` `te` eta_` - - or Dth. Ap `e `n Ac`p fo` som`save`oved`code   `H 8 I X wheI xta: i  2'Returns DIST of sumproduct of arguments`` ed T` y wh` aft` d.`t09-1` ed r` DstX 9 dgeky `rmat`oved`port` 2` -`2 -` DstX x  P `( I  , geI @  i ed Dh 0rns DIST of minimum of argumentsh `` a` to c` nt e`te di` G ` ( DI`eate`}`08-2`1.5 `ed b`_IF    2 -   ` kk\i  ; -it, D 0 `  ( cien% ` 0 0 P  - % Unnamed--- Unnamed--- Unnamed--- Unnamed--- Returns DIST of sum of argumentsents$Returns DIST of maximum of arguments   med---p (rns DIST of sumproduct of argumentsD` 0  p J$*\Rffff*1h4ac28320߹   ( 0 H R` 8  $   N8    D   ( .@ p x $ X   "0 X x  " 0   " (8 ` h & 4    P 2h X    `0   " V 0 8 6P   ( *     88 p x  ( ^ 8 "X   4 @4 <4 F(5 :p5 65 D5 $06 HX6 46 :6 @7 0X7 $7 67 >7 $(8 P8 <p8 ,8 8 9  9 89 P9 8`9 :9 9 9 9 h: h: .p: : l: b; 0; ; ; ;; 0< =  = 0= H@= = = = = j= "P> x> > (> > > > (? :0? 4p? ? ? F? *(@ 0X@ @ @ @ &@ @ $A 0(A DXA 8A $A B 6B ,PB XB *B C (C @C <XC FC RC @8D ,xD D DD :E `PE 2E $E F 0F PF hF F F F PG *`G G &G G G &G  H @H XH hH *H 4H H I &(I $PI xI I I 6I I $I ( J *HJ 2xJ J 6J "K .(K 8XK $K K *K 2L 8L @PL <L FL :M 6XM DM $M HN 4HN :N DN 0O $8O 6`O >O $O P @ P ,`P P P P P Q 8Q <HQ Q Q Q dQ R 0 R PR lXR bR 00S `S hS SS ,T T T T HT 8U HU hU U jU V V ( V HV XV pV (V :V 0V (W HW F`W *W ,W X (X 8X &HX pX $X 0X DX 4 Y $XY Y 6Y ,Y XZ *XZ Z Z Z <Z F[ R`[ <[ ,[ (\ DH\ :\ `\ 20] $h] ] ] ] ] ^ ^ ^ ^ *^ _ &_ @_ P_ &p_ _ _ _ _ *` 00` `` ` &` $` ` a a 4 a Xa $ha (a *a 2a  b 68b "pb .b 4b $c (c *@c 2pc c @c <d F@d :d 6d De $He Hpe 4e :e @0f 0pf $f 6f >g $@g hg <g ,g g h 8h Ph hh 8xh 8h h h i bi xi 4i i ^i B j 0hj j j j fj *Hk xk k fk *l @l `l pl Pl l l (l m (m @m (`m :m .m m n F0n 8xn *n n o o @ o `o &po :o .o p (p ,@p "pp Tp &p q 0q Hq *Xq q q q 0q q r * r Pr &pr r r r r *s .0s `s s &s $s s t t  t 8t Ht &ht (t t ,t u *u .Hu xu u &u .u v  v 0v 88v 8pv v v vB  v v <v 0w,8w&hww  w www w8w x0x8x@xPx:Xx x xxx x Dx yy(y@yPyXypy xy dy y z z "z @zHzPzXzpz z zz$zzz "z { @{P{X{`{{0{{{{ { {| | | 0|8|P| h| || | ||0|}} } } &(}.P}(} }}}$} }0~@~H~P~ X~ h~x~ ~ ~ "~ ~~ ~~  (8P` x    "@X@p   (0VH  ȁЁ ؁    "( PXp 8 ؂   0@ H P@h  &؃.0PPh $Ȅ  (8@H@`  ȅЅ ؅    0P h B  p  < І,؆&0  @ Ppx 8 Ї؇: 8 HPX ` Dh Ȉ  d    "  (0$8`h " Њ؊0HPX ` p  Ћ   00Hx  &.( $( P0p  ȍ؍  "  ( HX p  ؎  0H "h@ 0H`hpV   (08 @ "H px 8    8P X `@x Ȓ &.@`Px ȓ$ؓ  8@H@`  Ȕ ؔ  0 H P X h B  p  r &8X  h x 8 : P`h p ^x ؗ   " 08@ X J`  И    $(P X Z` (ș  R h x  , Ț "  0@HPp<ț Л   < @H` x   < "0 X x<Н  (8 @ *H rx 8 ( B ~ px$H ` x( @ PX` x : " H` x ȣ   8H P `p x    "  0 @HP ,h  ȥ  "8P@h ئ @( hx   ȧ  B  . (  ^Ȩ t(  0    0 $P $x  R : R@ X X H P Hh v H( Jp J  B B` R R X h  H , "0 `X  8Ȱ  , 8 P 0h N F 0 FP  ز 0 N Fp  Fس  @ ` 0x N F @ F`  ȵ  0 N0 F ȶ F 0 P p 0 N F P Fp  ظ  0 N@ F ع F @ `   6 غ     $ H P h" p x  2 ػ`H` h (p  & ȼ м "    0 $8 ` hx Change History 2008-12-01 dge9 - 14th fix.9d9L - Fixed AddDistCreate to work if the Dst() functions have second arguments,ll 2 by using SendKeys to enter the altered formula. 2008-10-29 dge (fix from rr) - 13th fix.G - Fix Dst() to work when Datastring is not a multiple of 4 bytes long. 2008-10-28 dge - 12th fix= - don't use Dst() TrialNumber parameter if in Array formula. 2008-10-18 dge9 - 11th fix99' - Added TrialNumber parameter to Dst()9 2008-10-12 dge9 - XML DIST beta 10th fix.xlal4Q - Fixed Divide by zero error in Dst() when the DIST consists of only two values. 2008-10-11 dge4 - XML DIST beta 9th fix.xla4L4 - Added DstOrigin()4,4 2008-10-09 dge4 - XML DIST beta 8th fix.xla4|4* - Added error handling to DstPercentile() 2008-10-08 dge4 - XML_DIST_beta_7th_fix.xla4" - 2nd bug fix for Dst() from Ron. 2008-10-06 dge ' XML_DIST_Beta_5th_f      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstvwy|}~ix.RE.xlaSh- - Installed bug fix for Dst() from Ron Roth. Ap 2008-09-30 dge - 5th fix. In AcI - Removed Help form, Scatterplot, and some internal Dists to save space.+ - Removed a couple of unused code modules.D Q - Fixed color picker form to show white text when color background is very dark. 2008-09-25 dge - 4th fix.fc.DirY - Fixed Dst to work correctly when the XML tag contains no data: e.g.  2008-09-12 dgeSh - XML DIST beta 3rd fix.xlaOFF"P - Fixed Thaw to work correctly when thawing a comment after an array is thawed. 2008-09-10 dge/ - Fixed return types of some DstX() functions.en 2008-09-09 dgeky! - Fixed to use XML format dists.# - Removed DstExport and DstImport. 2008-09-03 dge - DIST beta.xla2 - Added DstExport and DstImport to DIST category. 2008-09-02 dge - v 1.1.7b beta dge" - started adding cumulative graphX - changed dist_ and getdist_ to dst; getdist_max -> dstMaxVal, getdist_min -> dstMinVal dstVariance -> dstVar - added DIST category back. 2008-08-30 dge - v 1.1.6 betaP - add button to convert single argument excel functions to the dist equivalent;G for instance, =Sqrt( DIST ) becomes {=DstCreate( Sqrt( Dst( DIST ))} 2008-08-26 dge - v1.1.5 betaM - Fixed bug in computing Dist_IF output types when both clauses are scalars. 2008-08-25 dge - v 1.1.4 beta> - Dist_sCorrel -> Dist_Correl, Dist_sCovariance -> Dist_Covar 2008-08-23 dge - v 1.1.3 beta; - Dist_From_XML => Dist_Import, Dist_To_XML => Dist_ExportA - Fixed Dist_Export to put avg, min, max in scientific notation.B - fixed problem with Dist_Power() with name argument not working. 2008-08-19 dge - v 1.1.2 betaC - DistX functions changed to Dist_X, GetDistX changed to GetDist_XB - Fixed DistFreeze, DistThaw to work on gen_ functions as well as Dist_ and GetDist_ functions.. - hid and disabled Show Distributions button. 2008-08-14 dge - v 1.1.1 betaC - Fixed DISTFreeze bug that kept DISTFreeze from properly clearing[n% the values in some array formulas. 2008-08-13 dge - v1.1 beta - v 1.0.0 beta@ - fixed DistSum, DistProduct, to work with 1 range as argument. 2008-08-05 dgeI - v 3.1: Fix DistArithmetic() function to convert Dist types as follows:! Binary op X = X op Binary = X Single op Double = Single X op X = X? - Added arg to specify DIST names in DistArithmetic functions. 2008-07-11 dgeD - V1.0.17.lookup: fixed error in Decode_Values array causing Dst to skip over bins 53 to 62.-ma 2008-07-10 dge - V1.0.14.lookupN - added Ron Roth's lookup table code to hopefully speed up creation of DISTs.G - Dist functions use new format with 100 characters to represent data.lH - V1.0.15.lookup: fixes data labels for histogram so they work in XL 036 - V1.0.16.loopup: sample DISTs changed to new format. 2008-06-20 dgeO - Fixed bug in Dist_Create that didn't recognize zeroes when computing min/maxG - Added DIST category to function wizard, with list of DIST functions.( - Changed DIST category to 4=statistics 2008-?? dge - Added Dist_If 2008-05-10 dge - Version 1.0.7N - Fixed bug in Dist_Product--accumulator was initialized to 0, changed to 1M 2008-05-10 dge - Version 1.0.6" - change argument names to Dist - Version 1.0.5bP - Fixed Excel 07 version not to have a flash of junk when creating the chart. - Version 1.0.53 - Changed GetStringX() argument names to DistArg - Version 1.0.4 - MakeDist => Dist_Create - GetDist => GetDist_& - GetStringAverage => GetDist_Average - DistVariance - DstsCovariance - DstsCorrel - GetStringMax => GetDist_Max - GetStringMin => GetDist_Min - GetStringName => GetDist_Name3 - GetStringNumberOfTrials=> GetDist_NumberOfTrialsGi' - DistPercentile => GetDist_PercentileQ - Rename Distogram funct to something else that won't mess up the Dist functionsU - Fixed DstSum being displayed as Dstsum (Defined a name DstSum and then deleted it;s this fixed it.) - Version 1.03bB - Changed MakeDistoGramChart to work with both Excel 03 and 07. - Version 1.0.3 P - Fixed bug in MakeDistoGramChart; save ActiveCell.Address in string so I can, refer to it when the chart is selected.T - Fixed makeDistogramChart to select source by columns, so I don't get 10 series.W - Fixed MakeDistoGramChart to use font size of 12 for data labels and y-axis labels. 2008-05-09 dge - Version 1.0.20 - fixed bug in DstSumProduct() and sped it up - Version 1.0.1= - changed MakeDistoGramChart to hopefully work on Excel 03 before 9 May 08 - Created $  C( $"'  Y('P.Ozdkd  $" Y('zkk $fe Y('z`kX'iH Unnamed---]Xpo] 8Ph]$Error:Demo is inactive.'zk '` `$  `$f `$    Y('staz0k( $ ' $  $f $    Y('zkk6 put all arguments in one array for easier processing. s $ `+d `+ +k_ check that all args are either scalars or DISTs of the same length, or ranges of those things,/ and compute output type while you're doing it.'' t  t$$   t$$$ Y('zk t$$  t$$2'  Binary Single 'k8k0d(  t$ t$%  t$ t$a    t$#$$ Y('zk   t$#$    t$#$2'  Binary Single 'kk s k tz Now add up all the arguments. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. (itl t  t$$f   $ t$ +  t$$ e t$$' $  Y('elz0k(   $ $ +  t$$   e  t$ t$  t$ t$m   t$#$f   $   t$# +    t$#$ ed   t$#$' $  ad Y('z`kX   $ $ + d Y('azk  k te n GSingle'j   $V'i`gFunction DstProduct(Dst_or_number, Optional Dst_or_number2, Optional DistName As String = "Unnamed---")W Dim x As Variant, y As Variant, W As Variant, z As Variant, i As Long, V As Variant\ Dim Args() As Variant, Base As Long, j As Long, DistLength As Long, K As Long, L As LongG%* Dim OutputType As String, xt As String x = Dst_or_number_ If (VarType(x) <> vbString And Not IsNumeric(x) And VarType(x) <> vbArray + vbVariant) Then& DstProduct = CVErr(xlErrValue) Exit Functionce End If) If Not IsMissing(Dst_or_number2) Then y = Dst_or_number2c If (VarType(y) <> vbString And Not IsNumeric(y) And VarType(y) <> vbArray + vbVariant) Thenthe* DstProduct = CVErr(xlErrValue) Exit Function End If End If '; ' put all arguments in one array for easier processing. 'r % If IsMissing(Dst_or_number2) Then ReDim Args(1 To 1) Args(1) = x Else ReDim Args(1 To 2) Args(1) = x Args(2) = y co End If 'c ' check that all args are either scalars or DISTs of the same length, or ranges of those things ' compute output type ' DistLength = 1 OutputType = "" For i = 1 To UBound(Args)* If VarType(Args(i)) < vbArray Then= If IsError(CheckDstArg(DistLength, Args(i))) Then. DstProduct = CVErr(xlErrValue) Exit Function End If/ If VarType(Args(i)) = vbString Then% xt = DstType(Args(i))Q If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then# OutputType = xt End If End If Else6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)K If IsError(CheckDstArg(DistLength, Args(i)(K, L))) Then6 DstProduct = CVErr(xlErrValue)% Exit Function End If= If VarType(Args(i)(K, L)) = vbString Then3 xt = DstType(Args(i)(K, L))Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then+ OutputType = xt End If End If Next L Next K End If Next i 'iI ' Now multiply all the arguments. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. '$ ReDim V(1 To DistLength, 1 To 1) For j = 1 To DistLength V(j, 1) = 1. b Next j For i = 1 To UBound(Args)" If IsNumeric(Args(i)) Then# For j = 1 To DistLength+ V(j, 1) = V(j, 1) * Args(i) Next j/ ElseIf VarType(Args(i)) = vbString Then W = Dst(Args(i))( If VarType(W) < vbArray Then. DstProduct = CVErr(xlErrValue) Exit Functione End If# For j = 1 To DistLength+ V(j, 1) = V(j, 1) * W(j, 1)s Next j: ElseIf VarType(Args(i)) = vbArray + vbVariant Then6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)c4 If IsNumeric(Args(i)(K, L)) Thenmar/ For j = 1 To DistLength= V(j, 1) = V(j, 1) * Args(i)(K, L) Next j%A ElseIf VarType(Args(i)(K, L)) = vbString Then. W = Dst(Args(i)(K, L))4 If VarType(W) < vbArray Then: DstProduct = CVErr(xlErrValue)) Exit Function End If/ For j = 1 To DistLength7 V(j, 1) = V(j, 1) * W(j, 1) Next j Else6 DstProduct = CVErr(xlErrValue)% Exit Function$ End If Next Lix Next K End If Next i1 If OutputType = "" Then OutputType = "Single"3 DstProduct = DstCreate(V, DistName, OutputType) End FunctionTY/aFunction DstDifference(Dst_or_number, Dst_or_number2, Optional DistName As String = "Unnamed---")'(' Compute Dst_or_number - Dst_or_number2A^'f Dim x As Variant, y As Variant, W As Variant, z As Variant, i As Long, V As Variant, XX As Variant\ Dim Args() As Variant, Base As Long, j As Long, DistLength As Long, K As Long, L As Long>* Dim OutputType As String, xt As String XX = Dst_or_number x = Dst_or_number2D If (VarType(XX) <> vbString And VarType(XX) <> vbArray + vbVariant And Not IsNumeric(XX))' Or (VarType(x) <> vbString And VarType(x) <> vbArray + vbVariant And Not IsNumeric(x))' Then) DstDifference = CVErr(xlErrValue) Exit Function End If 'B ' put all arguments but XX in one array for easier processing. ' ReDim Args(1 To 1) Args(1) = x 'c ' check that all args are either scalars or DISTs of the same length, or ranges of those thingsqui ' and compute OutputType ' '! ' first check the XX argument ' DistLength = 1 OutputType = ""! If VarType(XX) < vbArray Then4 If IsError(CheckDstArg(DistLength, XX)) Then- DstDifference = CVErr(xlErrValue) Exit Function End If? If VarType(XX) = vbString Then OutputType = DstType(XX)# Else ' xx must be a single cell) DstDifference = CVErr(xlErrValue) Exit Function End If ' ' Now check everything else ' For i = 1 To UBound(Args)m* If VarType(Args(i)) < vbArray Then= If IsError(CheckDstArg(DistLength, Args(i))) Then1 DstDifference = CVErr(xlErrValue) Exit FunctionTgM End If/ If VarType(Args(i)) = vbString Then% xt = DstType(Args(i))Q If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then# OutputType = xt End If End If Else6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)K If IsError(CheckDstArg(DistLength, Args(i)(K, L))) Then9 DstDifference = CVErr(xlErrValue)% Exit Function End If= If VarType(Args(i)(K, L)) = vbString Then3 xt = DstType(Args(i)(K, L))Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then+ OutputType = xt End If End If Next L% Next K End Ifbb Next i ' ' Now subtract all the second and following arguments from the 1st. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. ' a$ ReDim V(1 To DistLength, 1 To 1) ' ' first put XX values into V ' If IsNumeric(XX) Then For j = 1 To DistLength V(j, 1) = XXt Next j Else W = Dst(XX)$ If VarType(W) < vbArray Then- DstDifference = CVErr(xlErrValue) Exit Function End If/r For j = 1 To DistLength V(j, 1) = W(j, 1) Next j End If 'U/ ' Now subtract everything from 1st argument '.O For i = 1 To UBound(Args)" If IsNumeric(Args(i)) Then# For j = 1 To DistLength+ V(j, 1) = V(j, 1) - Args(i) Next j/ ElseIf VarType(Args(i)) = vbString Then W = Dst(Args(i))( If VarType(W) < vbArray Then1 DstDifference = CVErr(xlErrValue) Exit Function o End If# For j = 1 To DistLength+ V(j, 1) = V(j, 1) - W(j, 1) Next j: ElseIf VarType(Args(i)) = vbArray + vbVariant Then6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)4 If IsNumeric(Args(i)(K, L)) Then/ For j = 1 To DistLength= V(j, 1) = V(j, 1) - Args(i)(K, L) Next jfA ElseIf VarType(Args(i)(K, L)) = vbString Then. W = Dst(Args(i)(K, L))4 If VarType(W) < vbArray Then= DstDifference = CVErr(xlErrValue)) Exit Function End If/ For j = 1 To DistLength7 V(j, 1) = V(j, 1) - W(j, 1) Next j Else9 DstDifference = CVErr(xlErrValue)% Exit Function] End If Next Lb  Next K End If Next i1 If OutputType = "" Then OutputType = "Single"6 DstDifference = DstCreate(V, DistName, OutputType) End FunctionLa]Function DstDivide(Dst_or_number, Dst_or_number2, Optional DistName As String = "Unnamed---")')' Computes Dst_or_number / Dst_or_number2'f Dim x As Variant, y As Variant, W As Variant, z As Variant, i As Long, V As Variant, XX As Variant\ Dim Args() As Variant, Base As Long, j As Long, DistLength As Long, K As Long, L As Long|E|* Dim OutputType As String, xt As String XX = Dst_or_number x = Dst_or_number2D If (VarType(XX) <> vbString And VarType(XX) <> vbArray + vbVariant And Not IsNumeric(XX))' Or (VarType(x) <> vbString And VarType(x) <> vbArray + vbVariant And Not IsNumeric(x))' Then% DstDivide = CVErr(xlErrValue) Exit Function End If 'GB ' put all arguments but XX in one array for easier processing. ' ReDim Args(1 To 1) Args(1) = x 'c ' check that all args are either scalars or DISTs of the same length, or ranges of those thingsame ' '! ' first check the XX argument ' DistLength = 1 OutputType = ""! If VarType(XX) < vbArray Then4 If IsError(CheckDstArg(DistLength, XX)) Then) DstDivide = CVErr(xlErrValue) Exit Function End If? If VarType(XX) = vbString Then OutputType = DstType(XX)# Else ' xx must be a single cell% DstDivide = CVErr(xlErrValue) Exit Function End If ' ' Now check everything else ' For i = 1 To UBound(Args)* If VarType(Args(i)) < vbArray Then= If IsError(CheckDstArg(DistLength, Args(i))) Then- DstDivide = CVErr(xlErrValue) Exit Functionre End If/ If VarType(Args(i)) = vbString Then% xt = DstType(Args(i))Q If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then# OutputType = xt End If End If Else6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)K If IsError(CheckDstArg(DistLength, Args(i)(K, L))) Then5 DstDivide = CVErr(xlErrValue)Ot% Exit Function End If= If VarType(Args(i)(K, L)) = vbString Then3 xt = DstType(Args(i)(K, L))Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then+ OutputType = xt End If End If Next L Next K End If Next i ' ' Now divide all the second and following arguments into the 1st. Scalars are treated as if they are DISTs made up of DistLength copies of the scalar value. '$ ReDim V(1 To DistLength, 1 To 1) ' ' first put XX values into V ' If IsNumeric(XX) Then For j = 1 To DistLength V(j, 1) = XX Next j Else W = Dst(XX)$ If VarType(W) < vbArray Then) DstDivide = CVErr(xlErrValue) Exit Function End If For j = 1 To DistLength V(j, 1) = W(j, 1)y= Next j End If 'P.- ' Now divide everything into 1st argument ' For i = 1 To UBound(Args)" If IsNumeric(Args(i)) Then# For j = 1 To DistLength+ V(j, 1) = V(j, 1) / Args(i) Next j/ ElseIf VarType(Args(i)) = vbString Then W = Dst(Args(i))( If VarType(W) < vbArray Then- DstDivide = CVErr(xlErrValue) Exit Function End If# For j = 1 To DistLength+ V(j, 1) = V(j, 1) / W(j, 1) Next j: ElseIf VarType(Args(i)) = vbArray + vbVariant Then6 For K = LBound(Args(i)) To UBound(Args(i))@ For L = LBound(Args(i), 2) To UBound(Args(i), 2)4 If IsNumeric(Args(i)(K, L)) Then/ For j = 1 To DistLength= V(j, 1) = V(j, 1) / Args(i)(K, L) Next jimA ElseIf VarType(Args(i)(K, L)) = vbString Then. W = Dst(Args(i)(K, L))4 If VarType(W) < vbArray Then9 DstDivide = CVErr(xlErrValue)) Exit Function End If/ For j = 1 To DistLength7 V(j, 1) = V(j, 1) / W(j, 1) Next j Else5 DstDivide = CVErr(xlErrValue)$% Exit Function End If Next L Next K End If Next i1 If OutputType = "" Then OutputType = "Single"2 DstDivide = DstCreate(V, DistName, OutputType) End Function\Function DstPower(Dst_or_number, Dst_or_number2, Optional DistName As String = "Unnamed---")'.' Finds dist of Dst_or_number ^ Dst_or_number2Te'X Dim x As Variant, W As Variant, z As Variant, i As Long, V As Variant, XX As Variant; Dim j As Long, DistLength As Long, K As Long, L As Long>* Dim OutputType As String, xt As String XX = Dst_or_number x = Dst_or_number2` If VarType(XX) <> vbString And VarType(XX) <> vbArray + vbVariant And Not IsNumeric(XX) Then$ DstPower = CVErr(xlErrValue)tus Exit Function End If_ If (VarType(x) <> vbString And Not IsNumeric(x) And VarType(x) <> vbArray + vbVariant) Then$ DstPower = CVErr(xlErrValue) Exit Functionpe End If 'I ' check that both args are either scalars or DISTs of the same length ' '! ' first check the XX argument 'Da DistLength = 1 OutputType = ""! If VarType(XX) < vbArray Then4 If IsError(CheckDstArg(DistLength, XX)) Then( DstPower = CVErr(xlErrValue) Exit Function End If? If VarType(XX) = vbString Then OutputType = DstType(XX)1 Else ' XX can't be an array so issue an error$ DstPower = CVErr(xlErrValue)Da Exit Function End If ': ' Now check X is scalars or DISTs of length DistLength ' If VarType(x) < vbArray Then3 If IsError(CheckDstArg(DistLength, x)) Then( DstPower = CVErr(xlErrValue) Exit Function End If% If VarType(x) = vbSingle Thend xt = DstType(x)CoM If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then OutputType = xt End If End Ifz Else$ DstPower = CVErr(xlErrValue)rea Exit Function End If '* ' Now find dist of XX^X, in two steps. ' V <= XX '$ ReDim V(1 To DistLength, 1 To 1)La If IsNumeric(XX) Then For j = 1 To DistLength V(j, 1) = XX Next j Else W = Dst(XX)+'$ If VarType(W) < vbArray Thenate( DstPower = CVErr(xlErrValue) Exit Function End If For j = 1 To DistLength V(j, 1) = W(j, 1) Next j End If ' ' V <= V^X ' If IsNumeric(x) Then For j = 1 To DistLength! V(j, 1) = V(j, 1) ^ x Next j% ElseIf VarType(x) = vbString Then W = Dst(x)$ If VarType(W) < vbArray Then( DstPower = CVErr(xlErrValue) Exit Function End If For j = 1 To DistLength' V(j, 1) = V(j, 1) ^ W(j, 1) Next j End If1 If OutputType = "" Then OutputType = "Single"1 DstPower = DstCreate(V, DistName, OutputType) End Function Unnamed---05 Finds dist of max elements of trials of input dists.] 8Ph]0H ]`x$Error:Demo is inactive.'z(k  ' $  $    $f Y('zk $ '` `$  `$f `$    Y('zPkHk@= put all arguments but XX in one array for easier processing. $e `+dk^ check that all args are either scalars or DISTs of the same length, or ranges of those things and compute OutputType first check the XX argument'' $   $$ Y('z`kX $ G $2'jd(   unt      $$$ Y('zk  $$   $$2'  Binary Single 'k(k   k Now check everything else t  t$$   t$$$ Y('z`kX t$$  t$$2'  Binary Single 'kkd  t$ t$  t$ t$g    t$#$$ Y('z@k8   t$#$    t$#$2'  Binary Single 'kk atu k t first put XX values into V  $f    + pac $ e $' $  Y('zpkh   $ + ~ $   e        $$f    $ $ G  $ +j   $$ e  $$' $  Y('z~k~   $ $ $$G $ +j dH~ Y('z0~k(~  d~ Y('z}k} Now find dist of max values t  t$$f   t$ $ G t$ +j  t$$ e t$$' $  Y('z|k|    t$ $ G $ +j  t$$   e  t$ t$  t$ t$   t$#$f     t$# $ G   t$# +j    t$#$ e   t$#$' $  Y('zzkz   $ $ G $ +j dHz Y('z0zk(z  dz Y('zyky t GSingle'j   $V'iy Unnamed---5 Finds dist of min elements of trials of input dists.]0H`]x](@$Error:Demo is inactive.'zxkx ' $  $    $f Y('z(xk x $ '` `$  `$f `$    Y('zwkwkw= put all arguments but XX in one array for easier processing. $p `+dwkv^ check that all args are either scalars or DISTs of the same length, or ranges of those things and compute OutputType first check the XX argument'' $   $$uku $ G $2'jdu         $$$(uk u  $$   $$2'  Binary Single 'ktkt  kxt Now check everything else t  t$$   t$$$sks t$$  t$$2'  Binary Single 'kxskpsdhs  t$ t$  t$ t$    t$#$$rkr   t$#$    t$#$2'  Binary Single 'kPrkHr  k r t first put XX values into V  $f    +  $ e $' $   qkq   $ +  $   e        $$f    $ $ G  $ +j   $$ e  $$' $  oko   $ $ $$G $ +j dookn  dnnkn Now find dist of min values t  t$$f   t$ $ G t$ +j  t$$ e t$$' $  mkm    t$ $ G $ +j  t$$   e  t$ t$  t$ t$   t$#$f     t$# $ G   t$# +j    t$#$ e   t$#$' $  kkk   $ $ G $ +j dHk@kk8k  dkkkk t GSingle'j   $V'zjj Y('ij Unnamed---l Finds dist of sumproduct of AA and A; each must be a range of scalars and DISTs, each DIST the same length.]      ]0 H ` x ]  $Error:Demo is inactive.'z`ikXi ' '` $  $    $f Y('zhkh `$  `$f `$    Y('zhkhW check that both args are either scalars or DISTs of the same length or ranges of same. and compute OutputType first check the XX argument' $  D If XX is not an array, then X must not be one either, so check that `$  Y('zgkg  $$ Y('zfkf $ G $2'jdfS If XX is an array then X must be an array with the same dimensions, so check that. `$  % is X an array? Y('zeke  `  `I do X's dimensions match XX? Y('zekxe% Dimensions match, so check each cell         $$$ Y('zdkd  $$   $$2'  Binary SingleG 'jk0d  kd5 Now check X is scalars or DISTs of length DistLength `$   `$$ Y('zpckhc `$  `$2'  Binary SingleG 'jkbdb  ` `  ` `   $`$$ Y('zpbkhb  $`$   $`$2'  Binary SingleG 'jka  ka$ Now I create a dist of sumproducts.l I have two arrays of (scalars or dists), each array with identical dimentions (or else it's two 1x1 arrays)1 the dists should all have a length of DistLengthy for each trial from 1 to distlength, I take the sumproduct of the arrays formed from the Trial-th elements of the dists;< that sumproduct is the trial-th element of the output dist.x if the element of an array is a scalar, not a dist, I treat it as a dist of identical values equal to the scalar value.  ]  Products to be Summed $fs XX and X must refer to single cells containing a scalar or a DIST; the result will just be the product of XX and X    +  $  e&s XX and X must refer to single cells containing a scalar or a DIST; the result will just be the product of XX and X $' $  Y('z]k]   $ + d  XX is a range     H        $$f    $   + dP\  $$' $  Y('z\k\   $   + k[  k[ `$f   $ ` +  `$ e `$' $  Y('zZkZ   $ $ + dPZ   +   ` `  ` `  $`$f   $   $  $` + d@Y  $`$' $  Y('zXkX   $   $ $ + kX  kXX GSingle'j   $V'iXP $fG 'cG $'jiWFunction DstIf(Dst_or_Scalar_1, Operator, Dst_or_Scalar_2, Dst_or_Scalar_Then, Dst_or_Scalar_Else, Optional DistName As String = "IF--------")W Dim A1 As Variant, A2 As Variant, Op As Variant, AThen As Variant, AElse As Variantn Dim D1 As Variant, D2 As Variant, DThen As Variant, DElse As Variant, DistLength As Long, TrialNum As Long Dim DR() As Variant* Dim xt As String, OutputType As String A1 = Dst_or_Scalar_1 Op = Operator A2 = Dst_or_Scalar_2 AThen = Dst_or_Scalar_Then AElse = Dst_or_Scalar_ElseL If (VarType(A1) <> vbString And Not IsNumeric(A1)) Then GoTo DstIf_error4 If VarType(Op) <> vbString Then GoTo DstIf_errorL If (VarType(A2) <> vbString And Not IsNumeric(A2)) Then GoTo DstIf_errorR If (VarType(AThen) <> vbString And Not IsNumeric(AThen)) Then GoTo DstIf_errorR If (VarType(AElse) <> vbString And Not IsNumeric(AElse)) Then GoTo DstIf_error DistLength = 1A If IsError(CheckDstArg(DistLength, A1)) Then GoTo DstIf_erroro If Op <> "<" And Op <> "<=" And Op <> "=" And Op <> "<>" And Op <> ">" And Op <> ">=" Then GoTo DstIf_errorA If IsError(CheckDstArg(DistLength, A2)) Then GoTo DstIf_errorD If IsError(CheckDstArg(DistLength, AThen)) Then GoTo DstIf_errorD If IsError(CheckDstArg(DistLength, AElse)) Then GoTo DstIf_error< If VarType(A1) = vbString Then D1 = Dst(A1) Else D1 = A1< If VarType(A2) = vbString Then D2 = Dst(A2) Else D2 = A2K If VarType(AThen) = vbString Then DThen = Dst(AThen) Else DThen = AThenK If VarType(AElse) = vbString Then DElse = Dst(AElse) Else DElse = AElse ' ' Determine OutputType ' OutputType = ""A If VarType(AThen) = vbString Then OutputType = DstType(AThen)% If VarType(AElse) = vbString Then xt = DstType(AElse)Y If OutputType = "" Or OutputType = "Binary" Or xt = "Single" Then OutputType = xt End If1 If OutputType = "" Then OutputType = "Single"% ReDim DR(1 To DistLength, 1 To 1) Select Case Op Case "<"* For TrialNum = 1 To DistLengthG If GetTrial(D1, TrialNum) < GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case "<="* For TrialNum = 1 To DistLengthH If GetTrial(D1, TrialNum) <= GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case "="* For TrialNum = 1 To DistLengthG If GetTrial(D1, TrialNum) = GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case "<>"* For TrialNum = 1 To DistLengthH If GetTrial(D1, TrialNum) <> GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case ">"* For TrialNum = 1 To DistLengthG If GetTrial(D1, TrialNum) > GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum Case ">="* For TrialNum = 1 To DistLengthH If GetTrial(D1, TrialNum) >= GetTrial(D2, TrialNum) Then? DR(TrialNum, 1) = GetTrial(DThen, TrialNum) Else? DR(TrialNum, 1) = GetTrial(DElse, TrialNum) End If Next TrialNum End Select/ DstIf = DstCreate(DR, DistName, OutputType) Exit Function DstIf_error: DstIf = CVErr(xlErrValue) End Function ] Macro_option_data %#. ! G B@j $a ! $$$! $ $!  B@$.CoC!Sub ShowUserFormCreateHistogram() UserFormCreateHistogram.ShowEnd Sub0 CDist %B@oBSub DstAbout() MsgBox "DIST beta 1.2.11"End SubBAttribute VB_Name = "ModuleDistXmlFunctions" Op$ Explic it ' Change H^ory(2008-12-01 dgeL- 14t@h fix.Fixed Add!iCreato work if the Dst() f have second arguments,N by using SendKeys& LerJalteroform8ula7S0-$29S (O from rr)Z3ZKUwhen Datas?is not a 3tiple of 4Ote@s long=8 26=don'tkTrialNumbjparjin ArPray o1 11 1_@E@8B`## J12+XML DIST beta 10.xlaA - yDividehzero error ,_wP{wssAMonly two values N1 "9!9Origin(w40,80dlJPercileH` _M_M_7th_AL2@bugsEARon AD06Ec ' FBIc_5DREdInstall| Roth 098-30> yRemov HelpP, Scat@Splot, a$so`in`na,l !~sszpaDce - e a coudgunus co@Hmb"A#KcolIpickb`!sho w whiext@t#back0grou`uvery dark |251I correctUY!@1 tagntain ta: e.g. OOlc-l3rd/lThawawT*m af`1@3K!ted 1>-return typ@B;!XIk f:!VbFat %;@ 9or5Imp 3g5Ƒ^q a&b`Veg@؎ v 1.1.7NbF`jrt`Ta$dd,cuatiAgraph:-T cd_@/dP get_Adst;max -> `MaxV8al,'$inK A Vance@  !`8=S6BV ptoo1-9`3t vmx excel z0q]1 equi`\Qz;! Q0`@ , =Sqrt(d )cCs {=s ( 0d)}338-2P- v5( c'QOc putH_IF outd-R2yTo0wzst_42avg, min@0)sci!nfica>a$X@l&problem wisB PowerAn@T(1y2X&5P 2X, Ge:tXv74_X]FreezesCT/gen_as well asA s<\hiK0ad Si ҷ5^4%1X#-= @gЮTkeptR2G2per@jcle'ng !:91\aɤ/1(`6 0.0S!SumPrP|cs!1 r/E063.1: Ar&metichhqUJ=follows:BinBaPop XXF $= " S0*p Dou@##B-q0 1spePcify 0s? g K#As?7-iV1.0.17.lookup:q`de_paScL a skip @Hr b53Q 624a- e@'a < tQ.Pb hopefulp'p up cr`/A?+"& DBcne&wc"00=racBrepres@I1  5s labelJsgh@og soayn XL 03S6p1samr E {6-2Ndhj_h2d!ognize piGkY/0 ԍ@!eXzar4d,YlU functions. ' - Changed DIST category to 4=statis0tics2008-?? dge- AddtqH_If$*H05-10NVers 1.0.7E$ yFixC#q@._@A9ag>eAE Va riancDs tsCovrrelMax @.Min N@pumb erOfT)lsHN C 4Perrc@il=GC ReAUogram fsomethn else}at won't @s up?A ƀPSum bedisplay@W@(DefinB"  andAn deletit ; @is fBit.)jF3]OEGoG"r]wor[itPh boEa3 07S[3 gh ; shAveCell.Hres sba so I@ refer.i,ml `s !c@!- #,mb7F u? by columns ,dB8get serie#3&u`@fos!a12 fdata labD'y-ax@#)Et09s2E+;est H Csp"BO@Ka"$嫓hopefully ZAon %@ be`e 9 M`ay 08 d!BPriv Fceck@X(BDLeng KAs Long, m ÌtW If Type() = vbC T@  = 1aODrr@2Res Next'!J`KB Err 0<> 0Go0To 0Ch"CV (xlValue eEx``* E/ v/ E0#}.0x  r q   Not Isp;c3#{ {p W, d[(P_or_nh, OpAalw2@2roP14/= "UnAhd---"!ABtRbuteT.VB_Descri%"Returns /Iős" _B_PE cDKInvoke_  \n 15`&Dim x;, yWzi?V %sMwA, BawVcjH*KLh t1utputFWS%k` %|0;or:Demoiinan. ,%%@!v(EQx)G6QA10AArrp[+T`t)K I6WO G Miss`K02My%0cQVy_[Y_O[4_ QjJ' ' 0& allRon`2!easiЎprocPp`4IsЯRPmus(qXo 1d511ux c2@ = y(ecnTse e0scalars Pz feme l",rAoA)s,'co"me or= t @iyou're do TchD`3OA=5tEANot w}A~a"st` .r-5 c Miss0"끼y2 yqf ?! >' `" in onAfeasier proce2P"8Is83.Va caxT3R29Zp= y5*RcateiPr cPr 岀B ltܡrangŴo;TthP's'm e o type ' 'pDistLength = 1POutpuLtTP""TFor iJ To UBound(`Args)>I`f Varr4(i)) < vbArray Th en,0IsError(ChecPkDstS(,v cH)?C3P@roductC"VM(xlVa8lue Exit Functio HEnd IfRk=kStringKxGN ,G Or  Binary" +"Sl ]3{+`nIianrtf Q `\)x``s(i)` )S?*fOl*+s&.- ._ 68 /0ߗ_1a|,* 3}/!o_4 OrsOr "Ar!!s<$Cr(V,qName,m/  Difference(_or_number stJ2pal As d= "Unnd---"' ComP| - 1m xQ, yWziLong, V|XXR)aBasecj(`KL, " =[x#vM#(@XXu>=ApgaNotx) _Q@VxOE??x@%d(wS; :%%' (f but `in onᨑfeasier processO#ҡȴ@1) ' Args(1) = x'8 check that all ae either scalars or DISTfXe same length,8range:oseFingseand compute OutaType  firste XXument +DistLN1a "" I f Var;(XX) < vbArray ThenIsEr ror(CDs*t(4,G)) Diffe rence=CV#(xlValueȁExit Functio AEIfI]=]StrBO:BrDEl@d'@ xx muUb e a sle cell)0/# .NowDseverythA.e@%+E Fi01 To UBoun vb cAArray +@ V Not IsNu meric) F_AOr Fxx)AH:Di=CVE rr(xl@ValueAA$E'Jځ ' a@ll arg8nts but [in one"for easier proce4ssZ.$ ReSF1 To 1+EC)xL' check thats`e eith scalars DISTfe si lM,ran*ghoo@Tth s  firstfe lZ= 1  NJO I=8Is6or(C: $(' ,@5@cߑ@! A=d! %jEl-' xx mu`* b@F Cle cxell   W ' NowA8every> e %FGiORUBound(ORf A(i@0A u"!E(f/Not 綁`>qcY(exiN@ԫA' R!' check that both a@e either scalars xDIST"fe s0. ll6' firste @ 0tnt5t'= 1D?E?}!od"\0bor(C1s(,{_fCu *dl lvkNO-1{ 'can'e an`so issuerror4 p" -"NowX`!MS!QE/ st x__3u@ h_ !PNB>xA`Tb- Or "Binary"T@eo x5A%}/#rQ/#/#B' !#fooXX^X, in two steps.'k<=p.tRepV(,11%^$q xuLf%a+/+/+A0J!+)1AV V^XtH>3lw ^ x.U:̰9y q0 voo^ ͔p H!$HߵType = "Single"  ' DstP0ower(Create(V, DistName, Output )fEnd Function " Max( _or_num(berpRal2 l As0 StrUnnd---"yAtbutee.VB_Desc ri^0Returns DIST of maximum argu`ments{$ProcData*Invoke_j* \n15u Finds dÀW0 ele,Palsins.im xqVarianPt, yWziLong,$ V XX 3Args()BaseCjzLengthKLGxtOjqFG C If Not IsAve$Theg)*stYError:Demo is ina  .@^ ExitHIfCC>=K"](XX) <> vb ĚAArray +@ Ak 2Nric3DCV3(xl@Vpalue@1FLMiss‹2) KxN 2;A(6x< !  808/08):'C' iall x  @=in one5for easipye'oA D +SReD`vbi1 To 18)/xElse#H0A0Dcheck tPhat s`e eithscalarrb"I s l"w, rangeRo}thGsc'D a,com`)e first eA-e/*H= 1C`#"w/%Qoj#KYIs`for(Ca"K,( ,@)_P3o2_P ='`# +AF 3KLBoundo UcˀL, a~ka?'(K, L)4 <L  .d P6Yk!g^?$1P( Or"Bfry"|V)zxtAQ _`NeLwK#yFQNow:every>EHt$iKD'KL(i"<: P}O:gJ:u:S_&rr}roc5 1Z%rG% _$$a$e"$U $"%KGGe h hHHX"" d<"a7###)0 k Jixt "KKp&&&ݿ&?'LQLyiM3v!hato VV(NIsN0=.j@L4 V(j, `XX j18wWp0!GW?OX!zzy tion @End IfxFor j = 1 To DistLength܀V(j, 1)LWbOr IsEmpty(jCkNI!j>JIH%LKH'Y ' ' Now fi d of m Bv@sD7i@EÂuArgsHEPta(it@d5 h?reA4za t? go i MissP:4j 72( x`< ~-Vo t?VzUt3' 4all f< @ in one array for easier processing. 'If Not IsMit(Dst_or_number2) ThenTjReDim Args(1 To 1)6A*) = xEXlse:0:0:End If'' check that allgse eithscalars DIS Tf,e same length,rangeoses5 ai!GjAG# mg'A a *= eEe` DD^Dm˃A !:HA;8/ad/!%@ i)s@ a%a@D@_EDo@p#FFF%y/$_GQYGiVHs}}valuinto VËVCw#ZIsN@ricoʓ+jLG 1V(j,``XX j!5كDWpDWb-M߿ BG WSm +Љiant,n!EQ  9e:[V_h XXs`5 o# $i$d %j&_ m'9/(: t(xampty(_+YW_ r9P1fi`d` of mSQ _gs[w24m}t r8110si!K0\1t{8* ?0 /+//.//.--2If W(j, @i) < V1@) Then`=A1) N ext jLElseVarType(Args(i)) = vbArray +aA"^IsNumeric?(K, LbK?j?1 VDistLength72 *?2΅nhStringfW9DstLG$W'SAGoRstMinErrorEnd If1gëIKd,c?U>LKKKw i#;Output!~ CT""G SJldTA naUpZ_7V_ D (E x I > tg> FM@4!' check tha020oth p:p1re ei0r s2o232 5s5303q8com=@UeP% fir:e #EC 1= 1""$ 0 0-not@`,ТNXSCCon, so(>Q'6K_a5/(i(Irsb;(CP0(w,_4 :x!?@5?}AIan_uw,s]dimens x`__d+A <% 'X#?g Qq45ĔQ3&Or<>x1(@ do X's matyrXX G*   jDC86{cellgK0#4]XXX; 4t4Z5 J!H+XXяVpzd8P-(+Ba ry" "cϵ xto  R_ End If( '` Now check X is scalars or DIST f length D0istL If VarType(x) < vbArray ThenPJIsE@rror(CmD@stArg(S,p x)) 48(SumProduc@t = CVE(xlValue)c.Exit Functio~  Z=ZString@x:Bp 7#OutputN"" Or Binary %"S4le"5xt/ YEls*e FK6LBoundTo ^UtL, 2@Y K G^k(K, L)ln pt'>vbVvKxE{{E#iNe(L$K JI create a d of sump #is.' I have twol awB~(老s), eachC wiiden,ti mAon(s (`SeU it's 1x1 Du' theBhould al:la f `ual from 1 to ţ,tak` $ medTrial-`eleAb b;E%thath( o"-if !an*a, not6"9@* as90v!s equ"!#8 BReDim V(1 )14aPr() As Double ' ;o be  ( oIsNumeric(XXCc@XX a vX must re(ferA6s cells contain@`= ab;"&result O@Ej! Y!)% fj,V(j, d1)XX'BljbW``.WoZ/vq4Y}K@(>WS 3B2rangp,*liCq(6o qXX$0Q a v va6y;q3k;5;2{.#AIk( ?)i))_*}+ __ @(-U>-O % K%//h:R* x' RߵdE#x6""_!_!a?  * K1d??80 @IXqO1#=_ Qwhw+J&S/!'%qJV' ((w?)?)_)* =%Ѵ V(j, 1) = H+ PrPK, L) * W @Next j6E`nd If .VL;&K/ If OutputType"" Then Single"2DstSumProduct2Create(V, Dis@tName,A) ;Fun`ction GetTrial(Array_or_Scalar@ As Va nt, Num pLong)^IBs eric)d/T 0Else?(:`'`1If(^_1peratorEst2 \g&KalU?S trc+"IF-"D' 'E4DiI1A OA2OpKB|[AFGHDKDKDD:Leng v b;AzNot ([1)YoTo!If_error Op) G22 > ^ (  D&P= 1(IsE+(Check``!% 87M<53D d=cB!"lg! "A(9 [{(A!A|stda) Ag%A1#9S= Yu^' DeterminevL} z`0J1 f  <Z Sl  Or( "Bi`nary""$ߊ xtRq;O U4RetDR(1 Wk 01SeleАCa Op@(aForGH DЅʼnP'D(9 uэay/ ao« h=` s AKG =l`" /Uuf0_+tae tYoߢT T+>_+Aw  ASW/7_+_+_+A c?_+_+V >@_+ DR(TrialNum, 1) = Get(DThen, ax) 'Else,>l nd If ZNe xtCase ">=" /For.1 To DistLengLth YIf~1P >2 %/KsVEaSe0lect88Dst@I= Create(DR,BUName, OutputType Exit Function_error:CBKDCVErr(xl@Valu#SubMacroOp$s( Bim MODR As RangCSet= S@heet1. ("B_o_data")(@1?Workbooks.Count < @ AddDo Until IsEmpty(%Applica/J.2 := .BBYescri&:=IIf((2)), "",/6C@kgory3)7h"(@]Lo$op "Cub 70ShowPUser nmBHAlogramA2' T.@@ '@ L<< %p.BhDP`~xx@  C  8 |0` |+7+"`kp@@i$  stri&lgor+(0`k;;i$ t isi&st, +*(`pd+p##Ii, for i.assw`0t is `2phat `4lL4`6hs ar`8dctio+:`Hx+h li` le mi4iract+<h`x+ vi` (ven iHing ipass+>`xk i` AUTIi@nt a+Bh`xk( i` Hter i@is '+D` xk i`  cod+F( `xk i` de, +H `xkh i`  sel+J `xk i` ance+L `k(` SSiN own s suppliH`Ptrran`Rpny k TlO So commis`Vhsed `Xddl`Z`cons`\\ do `^Cact ``C! W` +~ ` k JJiN r-20 dp` Ini fXH ************0  @ @h `p8H`4`b0`h,****`j(****`P $****`l  C`n)`t****`****`p ****`r  0@ h@ <@H CC  ( (0h0hH 8H `  x  0  p pLJ*HF:D  0000 p @h 0000@   ! 000@/ 11110 ? @@ 0000X)111111@ @)000000@ 1@ ! 0@ 1111@ X <0000000011@;11111 E+@0 0111@H @x 0000@` 111@ ! 0@ 1111@t @d 1111@T (@D @ 4 @8$ @P @ @h @ @ @ @ @( @ @ @@t @Xd @pT @D @4 @$ @ @ @ @H @ @0 @` @x @ @ @t @d @T @D @ 4 @$ @8 @P @h @ hH0( pP Lx`  b"(@L @< @, @ @ p`"x@ h @8X @PH @h8 @( @ @ @ @ hxh`(xh@h @X @H @08 @H( @` @ @ @ 00hH`FxX0>  X8`>xH ("p(`*x8h`:x`Dx>H(`<x`Jx>BHx(x`Bxx(h hh `Hx h >B@  Xp J$*\Rffff*1f4ac28320*\R0*#13*\R0*#f*\R0*#f*\R0*#10*\R0*#197` V 88  J 4P666606h6666H6666(6`6888@8x888 8X888888p888  *P 0@P`p 0@P`p 0@P`p 0@P`p V    < NX   &   R Rh & VB@ JP P  ! *! 8!H!P!  NX! ,! ! ! !"  "" "  >("h"1""  H" L" J0# ##  N# N$ LX$ J$ $B*% `%  Lh% F% &2! & X&`& Vh& & & & <& N8' ' ' &' ' ' V' LH( T( ( V)B`)  Jp) P) *  * *(* X*h*p*  Px* * **  ++  ++ +  >(+h+1++  P+ N+ N8, ,,  P, R- N`- :- N- R@.. N. L. H/&X/// V/ / 0 0 &(0 &P0 x0 0 0 0 0 F0 V1Bp1 1 1 1 11 1111 "2  02@2 `2p2 22 22222 23 V3 `3 x3 3 3 V3B4$ 4H4 VP4 4 4 4 4 V4BP5.h55 V5 5 6 6 &06 VX6B6H<67 V7 h7 7 7 ,7 V7B(8 88X8 V`8 8 8 8 8 V9B `940h99 V9 : :  : 8: VP:B :40:: V: H; `; h; ; V;B ;40;0< V8< < < < < V<B 8=40@=x= V= $= > > 4 > X> `> 0x> > > V> 2 ? VX?B ? ? ? ? ? ? @ @ (@8@  H@  NX@ P@ F@ R@A <A V A0B  LHB PB LB 28C pC xC C CC C  LC P0D "D";D $DDE RE (hEEE JE &F,8F PhF PF PG VXG $GGG  H H V(H H H H 8H H H I 0I 8I PPI I RI TJ RXJ RJ PK RXK 0K VKB 8L@L PL`L pL L L L L L L L L M M M  0MPM`MpMMMMMM  JM N  0N@N`NpNNNNNNN N NO (Opn0O O  X`O &&P  (P 0P 8P @P XP `P hP pP P PPPPQ0QPQpQ Q  Q@xQ0S@SO*******************************************************************************9 MODULE: CSHA256$9 FILENAME: CSHA256.cls AUTHOR: Phil Fresle CREATED: 10-Apr-2001? COPYRIGHT: Copyright 2001 Phil Fresle. All Rights Reserved. DESCRIPTION:N This class is used to generate a SHA-256 'digest' or 'signature' of a string.M The SHA-256 algorithm is one of the industry standard methods for generatingL digital signatures. It is generically known as a digest, digital signature,9 :L one-way encryption, hash or checksum algorithm. A common use for SHA-256 is:9L for password encryption as it is one-way in nature, that does not mean that4L4K your passwords are not free from a dictionary attack. If you are using the44M routine for passwords, you can make it a little more secure by concatenating4O some known random characters to the password before you generate the signature4M and on subsequent tests, so even if a hacker knows you are using SHA-256 forP your passwords, the random characters will make it harder to dictionary attack. *** CAUTION ***lM See the comment attached to the SHA256 method below regarding use on systemshe with different character sets.m9 This is 'free' software with the following restrictions:R You may not redistribute this code as a 'sample' or 'demo'. However, you are freeP to use the source code in your own code, but you may not claim that you createddS the sample code. It is expressly forbidden to sell or profit from this source coded.dQ other than by the knowledge gained or the enhanced value added by your own code.O Use of this software is also done so at your own risk. The code is supplied asb. is without warranty or guarantee of any kind.exO Should you wish to commission some derivative work based on this code providedlE here, or any consultancy work, please do not hesitate to contact us.! Web Site: http://www.frez.co.uk E-mail: sales@frez.co.uk MODIFICATION HISTORY:. 10-Apr-2001 Phil Fresle Initial VersionO*******************************************************************************]@D ]@D ]@?D ]DH ]DH ]D  HO******************************************************************************* Class_Initialize (SUB)O*******************************************************************************D Could have done this with a loop calculating each value, but simply6 assigning the values is quicker - BITS SET FROM RIGHT+ ! 00000000000000000000000000000001+ ! 00000000000000000000000000000011+ ! 00000000000000000000000000000111+ ! 00000000000000000000000000001111+ ! 00000000000000000000000000011111?+ ! 00000000000000000000000000111111+ ! 00000000000000000000000001111111+ ! 00000000000000000000000011111111+ ! 00000000000000000000000111111111 + ! 00000000000000000000001111111111 + ! 00000000000000000000011111111111 + ! 00000000000000000000111111111111 + ! 00000000000000000001111111111111? + ! 00000000000000000011111111111111+ ! 00000000000000000111111111111111+ ! 00000000000000001111111111111111+ ! 00000000000000011111111111111111+ ! 00000000000000111111111111111111+ ! 00000000000001111111111111111111+ ! 00000000000011111111111111111111+ ! 00000000000111111111111111111111?+ ! 00000000001111111111111111111111+ ! 00000000011111111111111111111111+ ! 00000000111111111111111111111111+ ! 00000001111111111111111111111111+ ! 00000011111111111111111111111111+ ! 00000111111111111111111111111111+ ! 00001111111111111111111111111111+ ! 00011111111111111111111111111111?+ ! 00111111111111111111111111111111+ ! 01111111111111111111111111111111D Could have done this with a loop calculating each value, but simply. assigning the values is quicker - POWERS OF 2+ ! 00000000000000000000000000000001+ ! 00000000000000000000000000000010+ ! 00000000000000000000000000000100+ ! 00000000000000000000000000001000+ ! 00000000000000000000000000010000 + ! 00000000000000000000000000100000@+ ! 00000000000000000000000001000000+ ! 00000000000000000000000010000000+ ! 00000000000000000000000100000000 + ! 00000000000000000000001000000000 + ! 00000000000000000000010000000000 + ! 00000000000000000000100000000000 + ! 00000000000000000001000000000000 + ! 00000000000000000010000000000000@+ ! 00000000000000000100000000000000+ ! 00000000000000001000000000000000+ ! 00000000000000010000000000000000+ ! 00000000000000100000000000000000+ ! 00000000000001000000000000000000+ ! 00000000000010000000000000000000+ ! 00000000000100000000000000000000 + ! 00000000001000000000000000000000@+ ! 00000000010000000000000000000000+ ! 00000000100000000000000000000000+ ! 00000001000000000000000000000000+ ! 00000010000000000000000000000000+ ! 00000100000000000000000000000000+ ! 00001000000000000000000000000000+ ! 00010000000000000000000000000000 + ! 00100000000000000000000000000000@+ ! 01000000000000000000000000000000# Just put together the K array once/B+D7q++۵+[V9+Y+?+^+ج+[ +1$ +} U +t]r +ހ +ܛ+t+i+G+Ɲ+̡ $+o,-+tJ+ܩ\+ڈv+RQ>+m1+'+Y+ Ƭ+Gլ+Qc+g))+ ' +8!.!+m,M"+ 8S#+Ts e$+ jv%+.&+,r'+迢(+Kf)+pK¬*+QlǬ++Ѭ,+$֬-+5.+pj/+0+l71+LwH'2+43+ 94+JN5+Oʜ[6+o.h7+t8+ocx9+xȄ:+nj;+<+lP=+>+xqƬ?+oxO******************************************************************************* LShift (FUNCTION) PARAMETERS:6 (In) - lValue - Long - The value to be shiftedG (In) - iShiftBits - Integer - The number of bits to shift the value by RETURN VALUE: Long - The shifted long integer DESCRIPTION:K A left shift takes all the set binary bits and moves them left, in-fillingL with zeros in the vacated bits on the right. This function is equivalent to the << operator in Java and C++O******************************************************************************* 0C NOTE: If you can guarantee that the Shift parameter will be in theI range 1 to 30 you can safely strip of this first nested if structure for speed.$ A shift of zero is no shift at all. & $'"zG A shift of 31 will result in the right most bit becoming the left most% bit and all other bits being cleared &e $'"d'"kz7 A shift of less than zero or more than 31 is undefinedi & & e B@skhB If the left most bit that remains will end up in the negative bitF position (&H80000000) we would end up with an overflow if we took theC standard route. We need to strip the left most bit and add it back afterwards. $ & $G (Value And OnBits(31 - (Shift + 1))) chops off the left most bits thatG we are shifting into, but also the left most bit we still want as thisE is going to end up in the negative bit marker position (&H80000000).C After the multiplication/shift we Or the result with &H80000000 toOr turn the negative bit on. $ &  $ &$'"dF (Value And OnBits(31-Shift)) chops off the left most bits that we are@ shifting into so we do not get an overflow error when we do the multiplication/shift $ & $ &$'"kiO*******************************************************************************a RShift (FUNCTION) PARAMETERS:6 (In) - lValue - Long - The value to be shiftedG (In) - iShiftBits - Integer - The number of bits to shift the value by RETURN VALUE:de Long - The shifted long integer DESCRIPTION:O The right shift of an unsigned long integer involves shifting all the set bitsE to the right and in-filling on the left with zeros. This function isN equivalent to the >>> operator in Java or the >> operator in C++ when used on an unsigned long.O******************************************************************************* C NOTE: If you can guarantee that the Shift parameter will be in theI range 1 to 30 you can safely strip of this first nested if structure for speed.r# A shift of zero is no shift at all & $'(zJ A shift of 31 will clear all bits and move the left most bit to the right most bit position &e $a'(d'(kz7 A shift of less than zero or more than 31 is undefined & & e B@khI We do not care about the top most bit or the final bit, the top most bitH will be taken into account in the next stage, the final bit (whether itH is an odd number or not) is being shifted into, so we do not give a jot about it $ &$'(pJ If the top most bit (&H80000000) was set we need to do things differentlyK as in a normal VB signed long integer the top most bit is used to indicateH the sign of the number, when it is set it is a negative number, so just3 deviding by a factor of 2 as above would not work.H NOTE: (lValue And &H80000000) is equivalent to (lValue < 0), you couldK get a very marginal speed improvement by changing the test to (lValue < 0) $G We take the value computed so far, and then add the left most negativeE bit after it has been shifted to the right the appropriate number ofAs places' (@ & $'(kxipO******************************************************************************* AddUnsigned (FUNCTION) PARAMETERS:irt (In) - lX - Long - First value (In) - lY - Long - Second value RETURN VALUE: Long - Result DESCRIPTION:CG@ Adds two potentially large unsigned numbers without overflowingeO******************************************************************************* 0]D]D9]Dl$]D] ,'4 .'6 ,@'0 .@'2 ,? .? '8 0 2 8 4 6'8 0 2e 8@+@ 8 4 6'8dX 8@ 4 6'8 ck0 d( 8 4 6'8k 8'*i O*******************************************************************************O Ch (FUNCTION) DESCRIPTION:si SHA-256 functionO******************************************************************************* ( `  ` ':di O******************************************************************************* Maj (FUNCTION) DESCRIPTION: SHA-256 functionO*******************************************************************************i e o `  `   '<i` O*******************************************************************************M S (FUNCTION) DESCRIPTION:ne SHA-256 function (rotate right)O******************************************************************************* h ` @$$( ` @$ $"'>iO******************************************************************************* R (FUNCTION) DESCRIPTION:& SHA-256 function (just a right shift)O*******************************************************************************  ` @$X$('BiO******************************************************************************* Sigma0 (FUNCTION) DESCRIPTION: SHA-256 functionO*******************************************************************************jh `$> ` $> `$>'DbaiXO******************************************************************************* Sigma1 (FUNCTION) DESCRIPTION:C SHA-256 functionO******************************************************************************* `$> ` $> `$>'FiO******************************************************************************* Gamma0 (FUNCTION) DESCRIPTION: SHA-256 functionO*******************************************************************************( `$> `$> `$B'HmpiO******************************************************************************* Gamma1 (FUNCTION) DESCRIPTION: SHA-256 functionO******************************************************************************* `$> `$> ` $B'JiO******************************************************************************* ConvertToWordArray (FUNCTION) PARAMETERS:. (In/Out) - sMessage - String - String message RETURN VALUE:) Long() - Converted message as long array DESCRIPTION:ilO Takes the string message and puts it in a long array with padding according to, the SHA-256 rules (similar to MD5 routine).O*******************************************************************************]Dh]D]D]D]D?]D]D]H0]HH~| N'PG Get padded number of words. Message needs to be congruent to 448 bits,I modulo 512 bits. If it is exactly congruent to 448 bits, modulo 512 bits? it must still have another 512 bits added. 512 bits = 64 bytesL (or 16 * 4 byte words), 448 bits = 56 bytes. This means lNumberOfWords must5 be a multiple of 16 (i.e. 16 * 4 (bytes) * 8 (bits))  P ^ `    ^   ^ 'Ri R TxF Combine each block of 4 bytes (ascii code of character) into one longI value and store in the message. The high-order (most significant) bit ofE each byte is listed first. However, unlike MD5 we put the high-order, (most significant) byte first in each word.'V'X X Pa Each word is 4 bytesDx X 'Z X    'VE NOTE: This is where we are using just the first byte of each unicodeI character, you may want to make the change here, or to the SHA256 method so it accepts a byte array. N X $$b'\r Z$T \ V$" Z+T X 'X:K Terminate according to SHA-256 rules with a 1 bit, zeros and the length inX<" bits stored in the last two words X 'Zi X    'VD Add a terminating 1 bit, all the rest of the bits to the end of the word array will default to zero  Z$T V$" Z+TI We put the length of the message in bits into the last two words, to getI the length in bits we need to multiply by 8 (or left shift 3). This leftJ shifted value is put in the last word. Any bits shifted off the left edgeO need to be put in the penultimate word, we can work out which bits by shifting right the length by 29 bits. P$" R +T P$( R +T T'Li7O******************************************************************************* SHA256 (FUNCTION) PARAMETERS:1 (In/Out) - sMessage - String - Message to digest RETURN VALUE:Ho String - The digestgio DESCRIPTION:J Takes a string and uses the SHA-256 digest to produce a signature for it.L NOTE: Due to the way in which the string is processed the routine assumes a boM single byte character set. VB passes unicode (2-byte) character strings, theL ConvertToWordArray function uses on the first byte for each character. ThisL has been done this way for ease of use, to make the routine truely portableJ you could accept a byte array instead, it would then be up to the callingK routine to make sure that the byte array is generated from their string insta* a manner consistent with the string type.O*******************************************************************************]wj]D ]?DP ]D Ho]D ree]D ]D ]D ]D ]D ]D0 ]DH ]D` ]Dx Y]D #{* Initial hash valuesg j+dg+drn<+d:O+dRQ+dh+dك+d[+dC Preprocessing. Append padding bits and length and convert to words N$L'f Main loop t f$d'p$d'$d'b$d'h$d'j$d'$d'l$d'nN ?   t $f +sesd0  $$J  $$*  $$H$*  $$* +kX0 n j$F$* j l$:$* $$* $$*'p p$D p  b$<$*'r l'n 'l j' h p$*'j b'h 'b p' p r$*'pp/ p$d$*+d $d$*+d b$d$*+d h$d$*+d j$d$*+d $d$*+d l$d$*+dm n$d$*+dh. Output the 256 bit digest"1@O^m00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$00000000$d$$$'~i,,Attribute VB_Name = "ModuleSHA256" '*K MODULE: CkFIL0ENAM.clsAUTHOR5Phil F resleCR EATED10-Apr-2001OPYRIGHTCopyright  $. All R s Reserved. "DESCRIPTION:This c lass used to generaa k- 'digest' or 'signaturef a sng1 Thealgorithm-one of tinduyandard methods f.>ingPA;ital 9s0. It(ically kno`wn as"), ,@!-way encryption, hash5check0sum -R common FB'-CiBs+pOwo71A"i)in CL,@@at does not@> anA'your& 3refree fro@&5cA-ary attackCf  a@ usMB`routi@] )s , cmake @)a litt le mo@se"cu by>ncg-bsoCZrm#characptersAvCbeete%q ;@ Vsubsequent t(so eve(n iAh@9erxsG:Ec` 'A-e Owic d ^di-+@ @ Cv`f `AS2CB1hgfZ below reg@]3aIystemHwd@;ffer * setsewbu t'fA' so8ftwA!fol ! @rs|aYou m@_Nredi pætbodeh'sam plA{ }demo@'. How1rGaA &sWceF ]bYrc , b7%`im B`aWcre}`MdB Cb }e4xps}=biddCse9profYdա o@r na[!Yledge gaddAenhanc`9valu;`" da e2UsO22`al@XdO4uAr !rpisk."suppli aBA7:`w ;Wty!gu@mntNan@Should+wi"!Siss v\ivative ပk baaP?@(vide0hQ,A consult"y, Ches`5ntॅWe@b Sitehttp://www.Hz.co.uk3E-mailsales@!IFICA! HISTOR>Y"بxxpryIniticV0J?217?{1?/ 5H ~4 ?[516 /?7Q?6112_?6# 7125?5$>81|51?4%>91102?3&>1*204?2'?*409?1(?*819??0)?*638?? 87*276?0?&1*553?,ÿ *3107>-?*6214=.?*2428< "1 m_lOnBits(19) = 10 48575h '< 0  202097151+B1C1C4194303CBC2C838860.7 C!!3!1677721!!4!3355443!!!5!6710f!!!6!13421_@3AD726843545D853687091Dĩ737418^2@D3é14748364DC' Could have done this with a loop calculating each value, but simplyassign the s @quicker - POWERS` OF 2 @2Power(2BAC!dn2}10nf410nn8e@nn16zAnn3 "yBnn6 "xCnn|12("wDnn2>5"vEnn51/"uFn1U02F"tGoU ;sHoU09&"rIoU19&"qJoU38"pKoU|76EDoL?*5?0YD>-?*31|07=.?*6214</?*2428;/?HS#":/HPt*Q9/L>s*R8/!2s*R7/"?t*R6/#?s*S5/$?s*7R4/%?t*S3/&?t*S2/'?s*T1/(>7S0/)4&' Just BpЈtoger0e K array onceK3&H`5A2F 98eR.&H71I 49TK(+&HB5C0FBCF(&HE9B`5DBA5e%&H3956C25Be#&H59F PFB &H923F82A4r&HAB1C5ED&HD807AAw &Hu035B0j&HB285BE1t550C7DC3v72BE5D7180D0EB1Fw9BDC06A7vC19BF1xE49B69Cw EFBE4786vFDCg240CA1CCNDE92C6v24A4AA5CB00A9Dw76!8D83E8515!A831C66DB00327CV&2BF597F Cf2C6E0(0BFf2D58A793&H@6CA63531429296327B70A86%32E1PB213f 34RDDF35T33!1f 36p50A7f 7@66A0AB1381C2C92V%392722Cw 4012BFE8A: K(41) = &HA81A@664B 2C24B8B7 0\3\76C5(1A3.4.D1@92E819.5.6990624.6.F40E3(585710P6AA0w89@A4C116/9IE30850274877 4C34B0(BCB;5w391C0CBk5w4ED8AA4A#w5B9CCA 4F w682E6FF#wGF Ew78A56 36#w84C8(7815w8CPC702w6w9@0BEFFFS64506CE6w@ 9A3F7#6w67178F2 End Sub '*?I@ LShift (FUNCTION)PARAMETERS:(In) - lValueLong- The vBto be sediBitsInteger@numbpof b@ 2tby@RETURN VALAs -, _cU?@h==) ' NOTE: If you can guara6e%a!?EcSpmet`Dw;.Kib*% geD 1' 30 safely strip Kth!/irst nes 3ifuctu@re for s`peed.AZ! a= nodG$  = 0cn%n= ciExitF0#D' 31 "!r`esultN"L moi$com@TO]A !!J^Jo@NrUbe!c0learwElsem wDAf1L&H80ce $ߢy@ If&A`?lessJnt jmo`>thN``9undefin<9Oq> Err.Raise 䁷E'A^a|F2 t remainseupnegativepos ibD(7) we would Ip@Lrflow `/0tookPest ard route. We`20LX"4? #dd `+backaf:ws1(!m_l2Power(- 2))x#a' (Sg%On1d(A+ 1)chops9fQ ^0~t.;/bo , but`soSQstGw J 2ais0$go?SJ` markL00)[3AQm0>ipli0e0c/Sk (1D@bw d Nchy$ on(vI(*Mt* a SF ?31-|cr @ do not Fg@2err Bwhenq@pf%+P/&2y'Eq{o~*QR6oo`>-Rўoo!>Po3\k7w10Coo#?pMo m Cu37P"unsigb`Zvolaf&u tB'!CS8gG<"Jb>>>/@,C++ -uspoP|' z pA߯!o C%oo!$4os o2ϦϦe .ϦoϦϦϦ`fϦȦ ' spe0ed. 0 A shift of zero is noLat allIf iSRBits = 0 Then6 R80lValue0Exit Functio/ ' 31 will clear y bkand move the lemost torig htPposisElsea8 b_ A:&H80uw1< 10-If!&lessxanorreundefin,ed/z<nOr r> AErr.Raise 6,C' We dBot ca!aboutBctop%Dh(m$all.,~b@3ak en invac`countB next stageC (whe5C@Eodd number !@"not)beHingøed, so wF4giaa jo7iK(7FE) \ m_l2@Power()_:E<@FK() was set&n\th@/s differ`ently iHn aerm[V B sig lo@*eg!nFs! .indicatw'.ac), -`4 3 |- negata'#*jus(deHvida/byfact2 2 @C@,.woul`6oork NOTE: - )%equival"$%]), you @Ilb' g*a very margin%£ imprmchang"!teZ$ c/@9+)Lft@\ ue mput0%far, !-@9dd%,Ab'"aft@;0h )be hº:!7b ap pri<fcȑ' plac|es' ]$T4] - 1))D^Eg '*?' AddUn_(FUNCTION'PARAMETERS:(In))lXLd- Fir<"3)Y'pSecoERETURN VALUE Res ul_bDESCxRIPbwo potMi`y lQe ueisth@Srflowh_#?! Pr04tez(By} As , _G"(>Y )sDim4bՈY 8>YcclX:8X~= l F40=L3cF) +PVFlX4m llX;U ArY8#Da=_!M _ &HCB`rQ@A&H2 F{?O?P E ! ?QL7**1ECh >L}DSHA-256 fF?oUA Ch@xe5@0S@yeszuB3(8y),((Not x0zf?_ 1MajOOOOO _OZo7e _czd S (rotrт SQn1Sh((x, (pOn(4))) Or LShift(x, (32 - (n And m_lOnBits(4") ETFunction 0 '*KQ R (FUNCTION)DESPCRIP:SHA-256 f (just a right s;NPrivate R(ByVal x As Long, _  )R = RCIntcSigma0oa@f?\J \'M]S!D0= (S2) Xor 1322)?=BT1T[aT1*Xma1Tc*6i*1=i*5*=a*GamT ' `?(p*|*$T7i*8RX3_*=F*T_*<U*T+B*T1j*9h*10*=*ConvertToWor@dArrayPARAMETERS(In/Out)`sMessage@Stritngm#` RETURN VALUE(Ae d as l aMvTakes the ss a@puts it inPw with padd acc9to 8rul(similar to MD5 routine).% (| e(bq}Dim lDLeng|NumberOf1s l `BytePosi0Count!,R:c MODULUS_BITS`512CONG`RUENT448SL= ' Get b%0,n of "w%s. 2need+o be c-rue%p b`,mod0ulo r. If,s exactly  0mstil@l have@2o.r6 01ed.= 64 b0 sU(016 * s ), 6#. This mean<&%a mult0iple!(iP.e. ()q@8 (1AQ!lSK j(( +((J"- ) \ #_TO_A_BYTE\  + `*/u)!)WORD$Rew46 -`EComb@H each block (ascii"dchar #er)P&oneCUvalu dPTore@"UTq(e hP-,er (mo6significan `_PC `# list1first. Howef, unlikeUwe Z"W%  Q6XGB!!G6I= 0laF6Do Un0 >=S' E R%(@$Sc%Q'l (30t(XpMod 1)x)*+ ' NOTE:8whe@Pa`usooc7$unicode' %, you mЂvwp rmy0n, PCp'uQmethod9LsoMxep`{aS۷. lByte = AscB(Mid(sMessage, hCount + 1, 1))WordArray(lb)0Or LSh0ift(`gPositionb = }Loop  ' Terminaaccing to SHA-256 rules with a 1 bit, zeros and th@e lengin(s sto@red inast two w}0szzZ\ BYTES_TO_A_WORDw(3 -F Mod)) * BIT&+|Addit#{oallZreyZofiC&'B5 ar@J@defaul@pen&mA, w e canik o@Hwhich4/%ErighsJQ29 DitNumberOf;rs`R1)SEuL]bd,"c 2R3D}29}ConvertToFK#@g E@UFuncA!_'*?1' '!(FUNCTION 'PARAME TERS:(In/Out) $e@Str!o- qPdig o`RETURN VALUE&T\JDESCRIPa"Tak@a@b us Zśproduce@sigure 2f`Zit`>NO`TE: D Wgway!jI s[roc`n`Wr`NDin` ssu@q a!sleg@@charac` set. VB pasaunicode (2-bY ) ( s`vha' AfD? ocfir < tTD4tT4$tdT4     *<<lP=<><xq?<$ P  kl qx kWl RC qxO qxkk1'''8'X  D6X8l k R*l kk qx!l kk qx $ X8, kl qx kq`9i,`9i(`9( `9( `9(9 `9,a `yH0( `y0nld@Rldlllh³0* pHd VBAProject4@j = intst, if any.2''FuncDstImport(XmlDist) Dim Str As VariDan~'''xDoc New DOMnt30!xNode I, x ÊK@ing, Stat&VsIDoe,  !#'Orror GoTo {_e :N=<If?TypeJ)

vb@$senWFJ.validateOnParsAFalseN@ LoadKTh@+ ChildAZs.@Length-1!e+Set m= 9(0̉Ä' F3q$.{ s.get dI@tem("n"l). xuGFGLeft(& S`pace(9),!"$' AveragI1~avgRT= CDbl( c&gst@G`AvgText & R ight(um+F"( , "0.0rU~| a9!I9q1 QA q ?    ? ??       @             @         @         @ /B<D7q<<۵<[V9<Y<?<^<<[ <1$ <} U <t]r <ހ <ܛ<t<i<G<Ɲ<̡ $<o,-<tJ<ܩ\<ڈv<RQ><m1<'<Y< <G<Qc<g))< ' <8!.!<m,M"< 8S#<Ts e$< jv%<.&<,r'<迢(<Kf)<pK*<Ql+<,<$-<5.<pj/<0<l71<LwH'2<43< 94<JN5<Oʜ[6<o.h7<t8<ocx9<xȄ:<nj;<<<lP=<><xq?<$ P  kl qx kWl RC qxO qxkk1'''8'X  D6X8l k R*l kk qx!l kk qx $ X8, kl qx kWl RC qxO qxkk1'''8'X  D6X8l k qxl Rlx@k qx $ X8(l qllqhl @qtl@qpl ?l?ĪqdltlpR|ldlllhqdltlpRld@Rldlllhqdld@lllhqdldlllhqdldqx $ Ll ll lqxq$ T$l ll lllqx$$ tD$M idp , HeaderV + 13? .qWa$Sub (q92ߴ״eUPSeleb. (uee doc luccessfullBY ow so0methstR>playa, ExfailߑF' See the previopus l! H$B (ByRhef sXL1, _#By Inde@YIgerERs q=+ 2Q EachIn3  'Debug.Pr0drV~ϰedItem("name").NodeValue@ ''' If x\pType = NODE_TEXT Th enXbDebug.Print Space$(Indent) &Parnq6N|_ GJ":"3- End If6;HasChild:sisplayLy, Z+6MN8extSub d R` L * B8  $ > * 0 P X p "x  " $ . .@ *p *  * < P ` pdx  > xValuecMinValueAvgValueVDifaX DataStringBi`Period? TrialValueUseCols StringName MinString7V MaxString AvgString.DistTypeDistTypeStringVBinNumN CharValueŇ CurrentBit(IsActiveLCase:TypeNameColumnsp9Count0vRowsUVarTypepvbArray]9 xlErrValue ErrorHandlerORight Space Trim@BytesInBytesOut- ByteCountQ>ArrayErrorCount.Code1Code2IntermediateValue{:RecreateArraysErroRaiseNumber- Description vbCrLf(SetupCodeValueArrays(Dst=DISTe TrialNumberRowCountu NewAvgValue[ AverageDif1 NonZeroCountchAmtToAddResultAsColumn7TempNum6XmlStrxDoc DOMDocument30RgxNode IXMLDOMNode5xAttIXMLDOMAttributeQ|DistStrqQStatValAttStr{9 GDA_Error vbString`evalidateOnParseOLoadXMLD ChildNodes5LengthY NodeValue< Attributes getNamedItemUNextByte~ Code1Decode: Code2Decodes NumMinTrialu NumMaxTrialzZ CountMinTrial/ CountMaxTrial}MinInTrialValueMaxInTrialValue~RecreateArrays2Asc!u IsArrayFunc4 Application*Caller=HasArray (DstAverageXmlDistDstAverage_Error(DstNumberOfTrials !DstNumberOfTrials_ErrorO&(DstName DstName_Error7 (DstMinVal_DstMinVal_Error (\c3<xMEHHashʐvL8J߅   ( B0 6x  *  " * @H F  *  D( p (x B  D 8 *@ p x   F D @ H X p D " r h p   D " r     D " r@     F "@ ph   ,  D0 (x &     > H P p x   .   @ P 4X    L d( d d R` L * B8  $ > * 0 P X p "x  " $ . .@ *p *  * < P ` pdx  > ( H "P Jx 0v p  * 6   ( 8Hx]$#.###############E-#< This stuff is not needed since we went to XML format; but Ias0 retain it here for historical interest, if any.$''Public Function DstImport(XmlDist)e m'''' Dim XmlStr As Variant#'' Dim xDoc As New DOMDocument309'' Dim xNode As IXMLDOMNode, xAtt As IXMLDOMAttribute@'' Dim DistStr As String, StatVal As Double, AttStr As String''$'' 'On Error GoTo DstImport_error9'' XmlStr = XmlDist9>'' If VarType(XmlStr) <> vbString Then GoTo DstImport_errord9''"'' xDoc.validateOnParse = False;'' If Not xDoc.LoadXML(XmlStr) Then GoTo DstImport_error44''>'' If xDoc.ChildNodes.Length <> 1 Then GoTo DstImport_error4''$'' Set xNode = xDoc.ChildNodes(0)4l4'''' '4 '' ' Name44'' '4?'' DistStr = xNode.Attributes.getNamedItem("name").NodeValue4='' DistStr = Left(DistStr & Space(NameLength), NameLength)H'''' ''' ' Average'' '='' AttStr = xNode.Attributes.getNamedItem("avg").NodeValueAUTI'' StatVal = CDbl(AttStr)Bhk'' DistStr = DistStr & AvgText & Right(Space(NumLength) & Format(StatVal, "0.00000000E+000"), NumLength)is ''''' ' '' ' Min'' '='' AttStr = xNode.Attributes.getNamedItem("min").NodeValue'' StatVal = CDbl(AttStr)k'' DistStr = DistStr & MinText & Right(Space(NumLength) & Format(StatVal, "0.00000000E+000"), NumLength)J'''' ' '' ' Max'' '='' AttStr = xNode.Attributes.getNamedItem("max").NodeValue`'' StatVal = CDbl(AttStr)k'' DistStr = DistStr & MaxText & Right(Space(NumLength) & Format(StatVal, "0.00000000E+000"), NumLength)'''' ' '' ' Countsed '' '?'' AttStr = xNode.Attributes.getNamedItem("count").NodeValue'' StatVal = CLng(AttStr)j'' DistStr = DistStr & CountText & Right(Space(CountLength) & Format(StatVal, "#######0"), CountLength)'''' '%'' ' Type (binary, single, double)'' '>'' AttStr = xNode.Attributes.getNamedItem("type").NodeValue!'' AttStr = " " & AttStr & " " '' DistStr = DistStr & AttStr'''' ' '' ' Data'' '7'' DistStr = DistStr & xNode.ChildNodes(0).NodeValue'''' DstImport = DistStr''''Exit Function''''DstImport_error:''' DstImport = CVErr(xlErrValue)''''End Function ' DstImport''9''Function DstExport(StrDist, Optional Origin As Variant)''.'' Dim StrStr As Variant, XmlDist As String'''' StrStr = StrDist'' XmlDist = ""7'' XmlDist = XmlDist & Mid(StrStr, HeaderLength + 1)#'' XmlDist = XmlDist & ""'' DstExport = XmlDist''''End Function''''Public Sub LoadDocument()''Dim xDoc As DOMDocument''Set xDoc = New DOMDocument''xDoc.validateOnParse = False'''If xDoc.LoadXML(Selection.Value) Then1('' ' The document loaded successfully.11#'' ' Now do something intersting.111111#'' DisplayNode xDoc.ChildNodes, 0000111''Else1111#'' ' The document failed to load.1111116'' ' See the previous listing for error information.1111''End If ''End Sub''V''Public Sub DisplayNode(ByRef Nodes As IXMLDOMNodeList,''' ByVal Indent As Integer)! 0''7'' Dim xNode As IXMLDOMNode, xAtt As IXMLDOMAttributep '' Indent = Indent + 2mp'''' For Each xNode In Nodescker -D'' 'Debug.Print xNode.Attributes.getNamedItem("name").NodeValue*'' If xNode.NodeType = NODE_TEXT Theng'' Debug.Print Space$(Indent) & xNode.ParentNode.nodeName &''' ":" & xNode.NodeValue'' End If0000''#'' If xNode.HasChildNodes Then000000/'' DisplayNode xNode.ChildNodes, Indent00'' End If0'' Next xNode00 ''End Sub'' |Attribute VB_Name = "ModuleXML" Option Explicit Pub, Const J_numeric_format#.# E-#' ' This stuff not needed since wnt tJo[ S; I>retain it here% Ptoal DstMaxVal[DstMaxVal_Error(DstTypel DstType_Error (DstOrigin"DstOrigin_ErrorD(DstVar DataArrayGDVariance_Error3WorksheetFunction&Var(DstStDevV GDStDev_ErrorfStDev(DstCovarDist2\ DataString2K DataArray2?GDCovariance_ErrorCovary (DstCorrelyGDCorrel_ErrorGCorrel (DstPercentile  PercentileaxocZGDPercentile_Errorp IsNumeric$*EvaluateT    ! "#%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSNamesο(is_active_stringRefersTo ModuleHashFormulas (HMAC_SHA256Fkeydata; inner_key outer_keyh3(SHA256_Class_Initialize}(SHA256_Hex(GetWorkbookFormulas(fmlasnwksV Worksheetfc6]Range ActiveWorkbook WorksheetsProtectContentsCells SpecialCellsxlCellTypeFormulas#FormulaqYClearxlCellTypeCommentsqVCommentHs vbTextCompare QAddr ModuleXL2Dist (ExcelToDist8 CurrFormulastdole h%^*\G{00020430-C 0046}#2.0#0#C:\WINDOWS\syst em32\e2.tlb#OLE Automation`EOffDicEOficEE2DF8D04C-5BFA-101B-BDE5EAAC42Egram Files\CommonMicrosoft Shared\o@11\mso.dll#M 11.0 Ob Libr8aryK`MSXML2MSXML25lb`F5078F18-C551-11D3 -89B9BSF81FE221}#3VSmsxml3 (, v "B BxThisWorkbookG  TyisW}rkbo 2 (HB1B XB,! T"B+BBS@heet1GS@#e@|t1MH2N%22229MakeDistXGetEa!YeD/tG2"]!/0oduleHashFormulasG$AdubHa EhF`rmӢ!32? !+0@GE XL2c+LXo*N>1o 7K/@-~X +&XmlFunc*,LX *l`+unjtCo sR 2  K !_M"DSHA256cMhCS`A 56 codV/k;c@GCPCM2/9/< )%rU~~{  DstSumProductGetTrial aDistMacroOptionsDeleteDistToolBar hThe model has been modified and cannot be activated.pN6K\( F,isD;}4TODF WorksheetFӼKHTot3H6\jlzLVﯶ .Error:Demo is inactive.2Q!3)6{O>`3)6{O>`3)6{O>`3)6{O>` avg3)6{O>`  3 XF  1 x type double binary min max count 0.00000000E+000HasArray( An unidentified error has occurred. Lookup table arrays have been recreated.   Z Try Dst again.          A B C D E F G H I J K L M N O P Q R S T U V W X Y c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 + /  Y   Single   Double   Binary   Custom  RangeColumns CountRows <dist  name=" " avg=" min=" max="  count=" #######0  type="  origin=" > </dist>  ZError in data passed to EncodeString routine. Trial   (  based.) @Click 'End' to abort processing. (Try DstCreate again.  O (   H hrihkybgpvnd cannot be saved.    SaveAsUICancelkeydatalValue iShiftBitslXlYxyznsMessageSipSName DistTypeParamOrigin %Returns a DIST created from the array 15DIST TrialNumber %Returns array of elements of the DISTXmlDistReturns average of the DIST $Returns number K*yrU~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ ~~ ~S $UMflF6l   e )Ye e a )Iy !Aaa  ) Y 9ia 1Qi 9a X!Yq !9i   ThisWorkbookSheet1Sheet2MakeDistGetDistModuleHashFormulas ModuleXL2DistModuleDistXmlFunctions ModuleSHA256 ModuleXML VBAProjectF@C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6.DLLVBA 1 Y`F4C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXEExcel Qyp0FC:\Windows\system32\stdole2.tlbstdole aL-[DR?C:\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLLOffice AiQ!C:\Windows\System32\msxml3.dllMSXML2 aF 5)Jә7FZ:#@P`1}SDFWorkbookWorkbook_BeforeSave Workbook_Open @ is_active HMAC_SHA256GetWorkbookFormulasWorkbookIsAuthenticActivateWorksheet  `The model has been modified and cannot be saved.VBE6.DLL  S  JWaltz, nymph, for quick jigs vex Bud. hash_codeSigma1F  x  FF FFFfĤIx8<'DF XLSim: Dst:      i 8SHA256_Class_InitializeLShiftRShift AddUnsignedChMajSRSigma0Gamma0Gamma1ConvertToWordArraySHA256$ X <@ &h  =  00000000  k 0   P   p Avg= b Min= Max=  Count= single Unnamed--- DstCreateDst DstAverageDstNumberOfTrialsDstName DstMinVal DstMaxValDstType DstOriginDstVarDstStDevDstCovar DstCorrel DstPercentileSetupCodeValueArraysIsActive $ CheckDstArgDstSumDstMaxDstMinof trials in the DISTReturns name of the DIST !Returns minimum value in the DIST !Returns maximum value in the DIST  Returns origin data for the DISTReturns variance of a DIST $Returns standard deviation of a DISTDist2Returns covariance of two DISTs  Returns correlation of two DISTS Percentile #Returns k-th percentile of the Dist DistLengthArg Dst_or_numberDst_or_number2DistName  Returns DIST of sum of arguments $Returns DIST of maximum of arguments $Returns DIST of minimum of arguments 'Returns DIST of sumproduct of argumentsArray_or_ScalarTrialNum 18 YThisWorkbookThisWorkbookSheet1Sheet1Sheet2Sheet2MakeDistGetDistMakeDistGetDistModuleHashFormulasModuleHashFormulasModuleXL2DistModuleXL2DistModuleDistXmlFunctionsModuleDistXmlFunctionsModuleSHA256ModuleSHA256ModuleXMLModuleXMLID="{00000000-0000-0000-0000-000000000000}" Document=ThisWorkbook/&H00000000 Document=Sheet1/&H00000000 Document=Sheet2/&H00000000 Module=MakeDistGetDist Module=ModuleHashFormulas Module=ModuleXL2Dist Module=ModuleDistXmlFunctions Module=ModuleSHA256 Module=ModuleXML HelpFile="" Name="VBAProject" HelpContextID="0" VersionCompatible32="393222000" CMG="9F9D33C533DDBBE1BPROJECT"oSummaryInformation("$`_DocumentSummaryInformation80LCompObj6mBE1BEE6BEE6" DPB="2B2987590E760E76F18A0F7686253C888262A6CB55D15491F7F3FCE71CF6B0F423134D0995" GC="B7B51BED2BF5B6F6B6F6B6" [Host Extender Info] &H00000001={3832D640-CF90-11CF-8E43-00A0C911005A};VBE;&H00000000 [Workspace] ThisWorkbook=0, 0, 0, 0, C Sheet1=0, 0, 0, 0, C Sheet2=0, 0, 0, 0, C MakeDistGetDist=0, 0, 0, 0, C ModuleHashFormulas=110, 110, 699, 396, Z ModuleXL2Dist=0, 0, 0, 0, C ModuleDistXmlFunctions=0, 0, 0, 0, C ModuleSHA256=0, 0, 0, 0, C ModuleXML=0, 0, 0, 0, C ՜.+,0HP X`hp x '  The Problem DIST Model Amt_StockedDemand Exp_CostF_CostTrial  Worksheets Named Ranges F!Microsoft Office Excel WorksheetBiff8Excel.Sheet.89qOh+'00_ hp| Sam L. Savage Sam SavageMicrosoft Excel@T@ ZG"^#  /&" WMFCfw "BlL EMFBO J $F, EMF+@``F\PEMF+"@ @ $@ 0@?!@ @     !" !" !  " !  ['~}h%  ~}h  &~}h% 6% Ld!??% 161% Ld111!??% Q6Q% LdQQQ!??% q6q% Ldqqq!??% 6% Ld!??% 6% Ld!??% 6% Ld!??% 6[% LdZZ!??% Z6Z% LdZZZ!??% 6% Ld!??% 6% Ld!??% 6% Ld!??% Z6Z% LdZZZ!??'%  Ld!??%  ~}h% 6% Ld!??% 6% Ld!??% RpArial D p@v0Bp@F V ~ Q0Bp@D Bg0BD 0BD F0BB~B~@=Z8KZBًA~@0h$C V ~ UD dv%    TT !0AUUA !LP1b TT APAUUA ALP2b TT apAUUA aLP3TT AUUA LP4TT AUUA LP5hTT AUUA LP6b TT6>AUUA6LPA TTv~AUUAvLPBh TTAUUALPCH@ TTAUUALPD TT6>AUUA6LPEb % " !%   ['%     LdZ!??% % " !% %   ['% (    ( &% % Ld!??% % LdZ!??% % Ld!??% % Ld!??% % Ld!??% % LdZ!??% % " !%   [[ 0  F(GDIC, FEMF+*@$??@BBʤgBB4Bʤ7B4BVUwB4B*1C4BACʤgBNCBNCVEDNCBDNCDACD*1CDVUwBDʤ7BBDBVEDB@!b K$$==%  ;X(6 X(   6m X(n n n 6nX(nnm=<>,  % $$AAFdXEMF+@D8?A@$$==_888% % ;X(6 X(   6m X(n n n 6nX(nnm=<@+% % $$AA( " FEMF+@ FGDIC% %   % %   % % :+Rp Arial p gv0Bi gpV ~Q0Bi gp hg0Bip 0@ip k0H 0H Arial0H 0V ~H 0Upkedv% % Rp Arial p gv0Bi gpV ~Q0Bi gp hg0Bip 0@ip k0H 0H Arial0H 1V ~H 1Upkedv% % Rp Arial&" WMFC B p gv0Bi gpV ~Q0Bi gp hg0Bip 0@ip k0H 0H Arial0H 2V ~H 2Upkedv% % % % % % % % % % % % % % % % % % % % % % % % %     T:-VDAUUA:-LA Classic Inventory Problemb        % TTW3ZBAUUAW3LP b % TAUUA[1Llby Sam L. Savage     % T:GZ\AUUA:GLSuppose you maintain a perishable inventory item subject to uncertain demand. The average demand is 5, so that s the quantity you stock. But actual demand has ranged historically from a minimum of 1 to                                                         TL:_ZtAUUA:_La maximum of 10 units per period. If demand in the period is less than 5, you will incur an expiration cost of $50 per unit left over. If demand is greater than 5, you must air freight the extra items at $150 per b                                                       T :wZAUUA:wLunit. Try different possible demands in cell E11, and observe the costs incurred in cells M8 and M9 . If you plug in the  average demand of 5 you will get a cost of zero, so this is your average operating                                                         T:AUUA: Ldcost, right?   % TLAUUA:LLTp :ZAUUA:LX Copyright 2008, Sam Savage     % " !  [% % K@0 [[  % % " !  [' %   ( &% 6[% &&WMFCBLdZ[!??% 6% Ld!??% " F4(EMF+*@$??!b Ld, , )??" FEMF+@   [  '' ' ,[~}h- ~}h ~}h-- @ !-11- @ !1-QQ- @ !Q-qq- @ !q-- @ !-- @ !-- @ !-[- @ !Z-ZZ- @ !Z-- @ !-- @ !-- @ !-ZZ- @ !Z-  @ !- ~}h-- @ !-- @ !-Arial-  2 ! 1 2 A 2 2 a 3 2 4 2 5 2 6 2 6A 2 vB 2 C 2 D 2 6E "System-'- ,[-   @ !--'-- ,[-  -- @ !-- @ !Z-- @ !-- @ !-- @ !-- @ !Z--'- ,[,[ ,--?8I!D!>#5)/2-8-=--/5>DI=82)#!!I!--- - >%I!D!>#5)/2-8-=--/5>DI=82)#!!I!-- '--  -- --,[+: Arial- - Arial- - Arial- -- ---- -- -- -- -- ----------   02 -:A Classic Inventory Problem       - 2 3W - 2 1[by Sam L. Savage     - 62 G:Suppose you maintain a perishable inventory item subject to uncertain demand. The average demand is 5, so thats the quantity you stock. But actual demand has ranged historically from a minimum of 1 to                                                         G2 _:a maximum of 10 units per period. If demand in the period is less than 5, you will incur an expiration cost of $50 per unit left over. If demand is greater than 5, you must air freight the extra items at $150 per                                                       <2 w:unit. Try different possible demands in cell E11, and observe the costs incurred in cells M8 and M9 . If you plug in the average demand of 5 you will get a cost of zero, so this is your average operating                                                         2 : cost, right?   -2 :P2 : Copyright 2008, Sam Savage     -' ,[--,[ --' ,[- -[- @ ![-- @ !-' @ ) ,'