From 5945b63b82de2e82eff348e9f11ece204ea0e5a7 Mon Sep 17 00:00:00 2001 From: Justin Timperio Date: Tue, 4 Nov 2025 09:45:08 -0800 Subject: [PATCH] Replace ftime, patch various bugs, update docs and benchmarks --- README.md | 10 +- disk/disk.go | 33 +- docs/Queue-Speed-With-Prioritize.png | Bin 63474 -> 62676 bytes docs/Queue-Speed-Without-Prioritize.png | Bin 62880 -> 63281 bytes docs/Real-Time-vs-Linear-Time.png | Bin 0 -> 31438 bytes ...me-to-Send-and-Receive-VS-Bucket-Count.png | Bin 21655 -> 22490 bytes docs/bench-report-no-repro.csv | 400 +++++++++--------- docs/bench-report-repro.csv | 400 +++++++++--------- ftime/ftime.go | 151 ------- ftime/helpers.go | 247 ----------- gpq.go | 40 +- gpq_e2e_test.go | 4 +- gpq_parallel_test.go | 1 + helpers.go | 11 +- queues/cpq.go | 111 +++-- timekeeper/timekeeper.go | 116 +++++ 16 files changed, 654 insertions(+), 870 deletions(-) create mode 100644 docs/Real-Time-vs-Linear-Time.png delete mode 100644 ftime/ftime.go delete mode 100644 ftime/helpers.go create mode 100644 timekeeper/timekeeper.go diff --git a/README.md b/README.md index 9b94b84..bc6c6e8 100644 --- a/README.md +++ b/README.md @@ -59,10 +59,10 @@ GPQ is a concurrency safe, embeddable priority queue that can be used in a varie ## Benchmarks Due to the fact that most operations are done in constant time `O(1)` or logarithmic time `O(log n)`, with the exception of the prioritize function which happens in linear time `O(n)`, all GPQ operations are extremely fast. A single GPQ can handle a few million transactions a second and can be tuned depending on your work load. I have included some basic benchmarks using C++, Rust, Zig, Python, and Go to measure GPQ's performance against the standard implementations of other languages that can be found here at: [pq-bench](https://github.com/JustinTimperio/pq-bench) -| | | -|-------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| -| ![Time-Spent](https://github.com/JustinTimperio/pq-bench/blob/master/docs/Time-Spent-vs-Implementation.png) | ![Queue-Speed-WITHOUT-Reprioritize](./docs/Queue-Speed-Without-Prioritize.png) | -| ![Queue-Speed-WITH-Reprioritize](./docs/Queue-Speed-With-Prioritize.png) | ![Average Time to Send and Receive VS Bucket Count](./docs/Time-to-Send-and-Receive-VS-Bucket-Count.png) | +| | | +|--------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------| +| ![Time-Spent](./docs/Real-Time-vs-Linear-Time.png) | ![Queue-Speed-WITHOUT-Reprioritize](./docs/Queue-Speed-Without-Prioritize.png) | +| ![Queue-Speed-WITH-Reprioritize](./docs/Queue-Speed-With-Prioritize.png) | ![Average Time to Send and Receive VS Bucket Count](./docs/Time-to-Send-and-Receive-VS-Bucket-Count.png) | ## Usage GPQ at the core is a embeddable priority queue meant to be used at the core of critical workloads that require complex queueing and delivery order guarantees. The best way to use it is just to import it. @@ -77,7 +77,7 @@ For this you will need Go >= `1.22` and gpq itself uses [hashmap](https://github ### API Reference - `NewGPQ[d any](options schema.GPQOptions) (uint, *GPQ[d], error)` - Creates a new GPQ with the specified options and returns the number of restored items, the GPQ, and an error if one occurred. - `ItemsInQueue() uint` - Returns the number of items in the queue. - - `ItemsInDB() uint` - Returns the number of items in the database. + - `ItemsInDB() (uint, error)` - Returns the number of items in the database. - `ActiveBuckets() uint` - Returns the number of active buckets. - `Enqueue(item schema.Item[d]) error` - Enqueues an item into the queue. - `EnqueueBatch(items []schema.Item[d]) error` - Enqueues a batch of items into the queue. diff --git a/disk/disk.go b/disk/disk.go index 105006c..43f33bf 100644 --- a/disk/disk.go +++ b/disk/disk.go @@ -2,6 +2,7 @@ package disk import ( "errors" + "fmt" "github.com/JustinTimperio/gpq/schema" @@ -16,7 +17,7 @@ type Disk[T any] struct { func NewDiskCache[T any](bLogger badger.Logger, options schema.GPQOptions) (*Disk[T], error) { if options.DiskCachePath == "" { - return nil, errors.New("Error creating disk cache: path is empty") + return nil, errors.New("disk cache path cannot be empty") } opts := badger.DefaultOptions(options.DiskCachePath) @@ -29,7 +30,7 @@ func NewDiskCache[T any](bLogger badger.Logger, options schema.GPQOptions) (*Dis } db, err := badger.Open(opts) if err != nil { - return nil, errors.New("Error opening disk cache: " + err.Error()) + return nil, fmt.Errorf("failed to open disk cache at %s: %w", options.DiskCachePath, err) } return &Disk[T]{diskCache: db}, nil @@ -40,10 +41,11 @@ func (d *Disk[T]) Close() error { return d.diskCache.Close() } -func (d *Disk[T]) ItemsInDB() uint { +func (d *Disk[T]) ItemsInDB() (uint, error) { var count uint - _ = d.diskCache.View(func(txn *badger.Txn) error { + err := d.diskCache.View(func(txn *badger.Txn) error { opts := badger.DefaultIteratorOptions + opts.PrefetchValues = false it := txn.NewIterator(opts) defer it.Close() @@ -53,7 +55,10 @@ func (d *Disk[T]) ItemsInDB() uint { return nil }) - return count + if err != nil { + return 0, fmt.Errorf("failed to count items in disk cache: %w", err) + } + return count, nil } func (d *Disk[T]) ProcessBatch(batch []*schema.Item[T]) error { @@ -72,7 +77,9 @@ func (d *Disk[T]) ProcessBatch(batch []*schema.Item[T]) error { return err } txn = d.diskCache.NewTransaction(true) - txn.Set(entry.DiskUUID, b) + if err := txn.Set(entry.DiskUUID, b); err != nil { + return fmt.Errorf("failed to write item after transaction split: %w", err) + } } else if err != nil { return err @@ -98,7 +105,9 @@ func (d *Disk[T]) DeleteBatch(batch []*schema.DeleteMessage) error { return err } txn = d.diskCache.NewTransaction(true) - txn.Delete(entry.DiskUUID) + if err := txn.Delete(entry.DiskUUID); err != nil { + return fmt.Errorf("failed to delete item after transaction split: %w", err) + } } else if err != nil { return err } @@ -156,11 +165,13 @@ func (d *Disk[T]) RestoreFromDisk() ([]*schema.Item[T], error) { }) if len(value) == 0 { - return errors.New("Error reading from disk cache: value is empty") + return fmt.Errorf("empty value found in disk cache for key=%x", key) } obj := new(schema.Item[T]) - obj.FromBytes(value) + if err := obj.FromBytes(value); err != nil { + return fmt.Errorf("corrupted data found in disk cache (key=%x): %w", key, err) + } obj.WasRestored = true items = append(items, obj) @@ -169,8 +180,8 @@ func (d *Disk[T]) RestoreFromDisk() ([]*schema.Item[T], error) { return nil }) if err != nil { - return nil, errors.New("Error reading from disk cache: " + err.Error()) + return nil, fmt.Errorf("failed to restore items from disk cache: %w", err) } - return items, err + return items, nil } diff --git a/docs/Queue-Speed-With-Prioritize.png b/docs/Queue-Speed-With-Prioritize.png index 45bacac8733ed00dcd11878bcfa295a5f3e0e784..65be0e498cbf6c8787343350d9dffc18c3512be4 100644 GIT binary patch literal 62676 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
!^;Qn6;%Mx_iKJVXIk+XkZ;dTx8>?JaCTNwyK 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 L;$;4bi@*GT-|O`P literal 63474 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%0Dyj9?`#a_eZIwWzl+H)}DqLj#;||Ey_WpEU z0|;TM)G;X=nV^vIKc3Y)5J*2J%+#0~{d7*^nj*mMHFEu#!x9n_gUxdpi>?iAK zeGXcjwzc$6v4I5Vs7 z5*7b|oqt^Umg#p!U=XH{~S++vp%L90#7tq|>cd&th$ z#PTYK6nOB@H$fsy8h-Q15zQQuu*-pEKAz1@8;J36nli>Ufm*7&zx*>D`_HVlu}2i7 zxWv(~TXn?0+2xfhj7=%M2ojFF$z9#4dn)tVEL!{JsKo3g4uTH&CL>7nyb#A1|b>$tz6#=4{}LQI4_p!V4Sr-MqaVOyP* z28AGu`Fk;~Lf~=@5d(?(qUQ%Drq@(|WSDo~tw$s$4kEMh41oBB0aE(Iu&u*wIg;st z2!2_3`y>e0gnRyOoHrylorT5^NQ#$LZ{h^l_ZF$8qkpcBzRWGrn%Xcm1v85wAVI{^^i-^|6e z7)UqVqC&Ung%m})j~$DN@qqOs;z-H&pOC68OPp&&M)$=GHT%q-7(tk-{Z(R?j{7UD z#jP-JdEBAtAbi46a^s=opy4*+&$XDI2Y=VaRi?OH)dMxt%@>mEPNy`p6@SzvM=BKu zSLUW^)mg0#tgCTk57{qe?ePQrcN}EYXt7>^duyrXWA$Y=Sou5-iX2KJ2De?lUhb*m zYA~+fSQAQp&)1NL*Ko=T>)Lt=!udX=vPI@vyEvLt+20K|65{4KCSNfdiZw-9s(Bv2 znp2${pJUd<-)7H4h;mkCoQ#3g5vqyg!T~wkCDX?jo&_ozJ0wYsJ4L~(d(tbP<_r3K zdX-Z_Ok9$w`tzPgdPx%_5M?(#av&_rU`UV8C@HF-w`ak@P84e8&!11=PQ3i9sue## zlWKPLq&x5%IuEGSW)GCd>CX)by@V#a(p>9^coV|7iX2x|2r!Dq@~*0FXE`>sLZH9|6n37f}KAn4PAky{mG$ z{s0oGrMZ2!HE(CNwj!l)UEZ>hzwGYv&*}-h>Z~qEQ&BH55j`|=QGX;z!BHJ5-)OJc z=HliS6_{|@<@x);Ti0w4KdmEpFTcT73W`pDoCOnsH$1Mx3@|aUaYgPx2KSi<+9Tk> z=*!h2b57kulzd`|D)$Zjc+s^lA+!G2l6=;euw_bYyTQ9wbZCJ)|6FPi(iiS=(*AbnK6PX1x00BEV9uhQEWN08O1+#pETQ z`z84Jvxg^rDGQ9BK%EEfXWa?Ll|fCM4@$$&9dxo5bLL|F%4(v$@kNY>B-Dda;P}EO z@!suSfP~*`oT9Hw>L-^@(U)2S=}AbMQqZi3@oAC17$Q$}b{!t1a`loBH6>bo7Y9qDD^#}jU< z?|>gXbg0d6>7!u^*gx>LMZ|%NdJfxHb#--jr@}DWsi5}1-aZbnIKLvsUI%w_KCDlC zxMX`WcIjddA-=J81AJ%O05$KPuJ2DL%QMSCG~#ns6XhI*cpjrW^Tn5jZ8h|209l$5 zEB8Aw&a5ia!(q3smjxM`f})bnvnRv3ZZ$@8{9WNLPQM{r#I2d=O&17aK<#GYd_M`8 zXxV*9>#(z5>X|T*U#3Zoyl#7((ccfg*qJ}1K)}0G2+eb8(oM}9htwm7VRdhWMB*Ya zeHq-wW|!~`<`eU_XO-CDd240|gtglDwX69|-ln*Jx8RaIe{awA%%mtlbh@6F`tn#X34##*9~WrjdMs}EL}$*!oopav$Hz6HBGB! z(619Fj2`Lg?Zprlq6yQE4>to*jbu({^B?Xk*}r&O$(C>#@S&PjBOfXasAn-QHUmK* zw^{GA06yzTy;4V1^rT+2IaZMXsLa@LnGBIgA!FDR-lMRp;Gz;pRE~v5f|AO<;wvT2 z)*Lh~60)9ar?BbBC|ym4{&-f3UH>(6(&)FC+7>ZfO=<$K3I^$h!+h0;&PSdE0jnEt zom8ym@}covtiLwacM!vw%?SN^p#2>6Qg@Lw$AD4&DmxW|#PF_iR?haXDI91q2tppe z3ZPxS3VF~!2Hihw=ZOmv;q^Ig)0rn6`>&QDiHpY*-B~~ce$0XHhYE&dw2v%wkyZ#w z%LUsMe;!`fg_|pwU88Di(ai=7YdosfvOM4_5W_K$>DS{Lfa@ljwK5IAuaSCFGH)dZ z>Uwro(ia;~?|%aBF);XAJ6w=mJZqJ43h2{ATjr9_EBKSlS0ey#XIG!mExJq`r90+$ znr$D30V)$zq(}OcrT3xwpv~CMvZ4*szk&nm7!0QW|+lZUl*p1)esD>Iq zP8?b0cjOu(AtpJ$j(o$YH!Z_9c~iH%6wXI ztK7?Wo&N1y32%VJSYN1nI)g-Iyp#b+hQ5(D+!{94axks?u%mM`pWtlla7pL~p#8H$ zs#@{fZIT9OKyGI9*1zi}RfpUfjEEWP7vK=emRiVkF^!fx^j7=Los72Kf46{-ciJWW zUm*bb`ltajmN>uYw5z8v(IB``oI1>vHT-buNlrj*4B&7+oWzCi{HtVgrd9ykfQW<0wbi|A@Il> zGN_{f!NBo#f0ICNh>RgIL;HGoJ(pJjD&G|tWCM9!QV6onf?1Wx_}nCm=bEE76R`p| zNnPB(znT0Ea9{dhY`!?F2^*K@rgrw07jdr*Oi9+Clwd1C5}E=PXHBx+(^@#m{bfk{ ztXo!`E$Z*uqn^e=(d4dB|4-?p*?4h=#!==9C}nv$wD>evR==xe(}nK2)!3RbzomJZ z-T`al8P*ro8lD;gMX@Ye1zt?5|@ORoOWIjiX7@5obWk+hGv$$ z9{UuhHk@Q2lvLh6AM(M1_AGRXO>4z_!){7)k2xqA!eA%_6H=V<=TiLb+ z6_Yq89;Ig(MyK4%GNTUeb;A!f0}ML6pInFoG1gj+S%oQ0XGQSGxnd9Y?ghhL=l`U$iG ziu}A8xo~>UKRKmwVw7Vbd!?wqpc+DE$Y^!eP^_6~cY|@=F4^sx&BOxe>mLEd0_>j> ziA}4`H^=qYcv}A#@uiK#Fj87#(`qGxZa!qlW`?reQ8wL)MIa6{-(4@W1FAmJx{i6> zxVbTL5Ru@1%zD!CSt76vecYtvH~xm@xO0!WBlQMC0U>$_FyQgfx!QzqZUVFmAHl=X zqd8;gaa+At=XoIR2abRg#a~;F9IXaSRl7lv?#-Ff0|E3m*WVrD6i1ymT7pQ4VL9v6 zlfy?rr~&~wlv1wgk9InH4kZt84}~sqV-x}e2Q4{N0d}m}l!*i+(6w_4mAzegmu0I# zN>#B$6cb4+p*v_sWQO&~GX1T0Q5)k8P}sw(^1Lj8l>VDRupDF8XB5*#H>Q&Bru*%E z2x&{PVk>#m^0fJqacWsOPF04{P*zdaRBephiskB<^#5kTHo(&lOm6ucm~geG>T{4* zHVk#>$K{$Ikir6-{K}h|Y3H3F+6g_QG{C#mpSLGn9hfU9{lRVI{TCeWIz%r1zEUqH(ac!Mz zXAE!^=1s18X#hVUF5Y*W$R=2AW4zQ@vGq)Ar$)vtgbU@|tT1zM>9-@)K+6mLSCtC# zwZJag)*+{K!nr2%7wDK`t$VU?Y9R%FxKOLGEhYt^T&aVS^syiCW>4#7csEDS#)U`k z>Bu7NlsPO8Otyw5VwkYq4Vam5g-)lIs? zCPJoTwx{^si~I@3#xOj&K+P+gl-7c3nZkiFevVw`2HhMd-J_{$6#A~WjeIp!ROfKXHz2t$_WI=!*mGhnNLv%NR=fr^cD~#Nam%b1 zB&Uvd8K{+^?%IShgEzAjfEYewA~g(RYy+UhW!y%K6_aTob1B}p04?ICAQt>{##Ar% zho`-vrP~xi0zge381C6!35B-nGte4~5+JLCfa>0ia#`QvFWysn!KhQD;rJ^$|m)R;hGmUb@?95XNPbhRPHqdzCSkFWL3_ z6TgGv^w8knm)0)!Dv>N7u+PMLCS`jL%p)_EwEU6zHpPc3JSc;Kme6a@OPqw$Ls(ZK zNgU!JX!j3gw8%4E&t<)BPahwwudx?iY40Nfd9$1of*qJzOl+a9sIa9oV9De0>jSlcC9`Yjah6=_^x#RMyEiUA$F#}( z^61OmMH%m-uB~90YPF2A&JITAId%tP9@WcmALR6Iqp|iYi-5{iy8K#X&o{ff0_3ph z?`HD-hu~=Z{x`Axpk`0JO-9s|f}aG^ z_k{vyMjgL7qeY*o{Ukil6{twJjxW@;7FY5C$rbGUvP8(7RFuMj2VEP!4rXm1Fm!Lg zbQq2JukzU1uGQVC+!vqiv!wfQ%SXqGDdi~zC0_$5uL^+_zw9NOhFwE{YojrF=N&Pu z3dF&}5L^hxo*NBSo2vs9ym*noGky7-UaAF=a=2&#zxEhD4k=v{jBs*-VRYt+YV6f{+hXPOaw`-K_AQL8k%du@^)tVc@5zKso(S|BC#;<|5yUW+-RuwV!S zPUA7)ybU7)R}8Q7{cXA8;?Ip#%N6=YxZUKR0v0*}`kwvYccrT8E`1IoE@wr=g{be# zTI)B!#apb>zme#FQt8WN^#pZ_)aRm-b zyjkimL?(Xr+Cxau)coCzLKjmLMY62ywCfzg;ksd=ZkC}SufNoAo|_aXZP()Y52N~@ zvkizWw$ej!ZQx$zyQS4#i3UDd2c|k(PW9wXt6sZ(1{dFN==mFT=AD4nCkJWBJTuRh zN%#>Ye1>7S)rrh$RmY|6gm} zn_3LN3a%ZYTUw-R!#bO%wl0Pg2I>NGF4kd4I-tU6)*)V=vSu79Rd8ZJEQpi0iWjO=3B z$>A0!`pg{wj^-3UGbgBBEWxG#N)C2DqJ{BVs{3#t9+ZXr)Nvvf*mtcLN$WVOUuG+M zQwy?RG3#B&F5o5S?rnzG?0*FTg`KJ6GVQ7Uq1jSnDC;zr>UrT#+x_e_=0|p+?!VZ<%4O5f!#HY^%#lK9p^qq@4mV-!oDlf)<|4O-=Ap z!N1YqdCXqarBjTnhqj1?2JG)ZKE{mqI~h9{$u~Q1Odt1;%)Fv(Y>m`vVeIy&M#L^IXFQU_hct|eZ3 zMpJI8%Jf*mZJJ}8o%!xs%nId6C&wIJ`}-F$-BA__2NDBkIWz<(H=JD7tM}mocEd2t z9$#c(#3|r!!5?b7t5pT?!2^hK)I=NX<46T0L()2xyG3;T@nLeK6-?HpIatt<4rn@% zFt+=$XcilKU}8*g6p0kNv^>~XJz++wiJ3IOk@oX>HGyNhtM62z2CmP#L^uw#lzZ~k zy<>p3xr?(b<(~RmF8@E2eFa#Q+xGr3F+fyMgi%02Iz(bb2@y#NX=w%N7y$u?6j4gL zVd!q8YXFt*ZWt71=m8l@V&K0AJm+4|jo;g~`AIkD1OE<|!j(@z>my!?(6CL?OT= zY#R}@ubw@SL0<;_WVHzCJOLT8f*Y#(2~LS~k2jM)LIx4F0|M+z$8?`*`L!_C7!urBk{%a3SL6jf5wSIFVP!G6fvU z)>xj!3my~-LOt7qb}Jhiyp@KEc^w(L&gV=w5PHif4`vp>ql!w8AlUr4x1$FxPbSA8 zA5V87S3k^iFDMng+8O+O!5O#`efK#1ZIhy6rqh~!aJGNq+U;l@fgCprUp%CKXs1E8 zdp)&s>x+hczuZAWZ>49n3}wIx2(}n1oG=ea17hc# z9}HCF@(;{g&tmx^B5ypgKRI}J0tmm-_RXW5cV*Ibi7XdmMM5r&mAL9JHMzz91lwPl zRprao`fm0k?dRR)$5Pc3-Qx*+W~U?yz%74=!piH|TELz|pMW(Oi?{7YAll$n%Asp5wjAB0qK zP_4AYtlqeX1Jt*zUP#9yIUV3(2Wk9b0O(ctLTP|BhmoOFckAtUx7ar2wHC7z*j?v+ z^Zd_;>fv_4Xaj-f51=oYK9aKjsVQ&(?NIi;hF*H6GuB8x>G%^QshjE@(f`a>NV*oPNQII_zhu*^<9H zK;?FfX@=jcI{jyE#NweH1X$f-h#VTwlXzSNMTM%+y|7%GAH4o9#0D2ox=Y+IXt3N>sAl(5@Is6xa1_&un zN(iLg0WkaT#`JKA32}d|5GN2z0FkF}Ai=fq@F)X<-|(j<5_~4$_;QBrJM|EdIrbSu z`hEYVXa!y$nR-S4VJgjQEKF9^Htb;Lmw)js8eR8a2ArT=*4AD!FuGsHb$e?ZFz+=W zj4!b4I+Sw@MIWCuwJE=tIyi?^2J|`^QE) zH<=r9A ez|j$A=p&O(-0A68c3(n-<1H3%h;-*T^-_0W+0~o0sL! z)ycJ&>pnn&7Q7{No?i&A5dwSq@@2~YivV9))cQLR4}a7tih9++0OO129(;Zd=RpK| z)-(SR_?am#?KSo;{~6Z3Z-OjwykXMEk#XgNe$*Ury0=J^>qE_mfKa!TKl6nyHOa&$ICLsD0@xTXMoE$3?>xzQOIrRvbfqxyNPh z?98F#*e!?I+xoGv>p@V`%X*pSPd*`Kvl4VEKod2qWGImWB=#+cEK{tLK3TZn3}n$s z-vF+pp-wkRKF)LSethV|vE-u$^Z4a-pOL;tCAHGU+T98Lq9DyaA=aA0T-fP->07G+CTJ@ z-R%aVe9OC;x-Of>7llOlJ&G>oC-b4edqW0Msym%6qZ^k-KbI;=q>9IA#dB+xvg*GP zPR;YP+8Mt>RjpNJcTr{!oiVPab+9%6>f4N=mDQA*wQi5Tu!8A4lO`i)#O{4Ar{G@K zqC(dO>IKYh`R2PCA^W+9-&9k>m#13G)d?{| z7xDsyNu4Jv3P#%z?|P{gmh$n`_UD;GiZs(;`6)_g8y^fo4Q4v(a%8qwd-P-xNha|o zWm2b3JvA7X!rYi^e6`VzAhQ}>v0~-KI&r@i<3B~sh1zcP;f5Is?Fd?~s4>9mNMmfZ zmRX&LpBr3#n@qpW5xOglU$RLJ_tygru-#1pb=Nd~(*F8o;(wrv7dYKryDE>BzV5_YZU3SMN6&)NZ_guxq zPJy#J@gbJy7aJKazQ5jcpul}uH3X`+gPfC(s4#eaUj&;U^eGxyaQ5WQwsmJ-D)7sA z;mc=O<)~nPs8D3LAaJ|9{e^aajCGdz$~98TQ}qMuH1iU!+2XH)-mE-66o^BfzTtjvJ|Q|yu( zKE#aqnE86bEYC?xcPQ;SFPzNkA=w$x6V}AHNd!btCv&QAo6&p{keaXU`DI4$n)K4+ zaJVFJiq$9*&b=|;CsFHd(6`dl5PiwWiBLC&+Y*}BDkpF0PdFaX=P!i;M580KxS_^r;x8^s1_LIFTKVrJKCL4m5o#V22DC|;x_l*^~ zS{r1{ylCS^ql--|u*rp+YHIz}xv#Ynjv(!V!cDRhePPj7Q)h98jjhC3*idw~^nu^$UmFfMm6Qq`QCz*=`vez~zC2!$ zJXv1|cG|yhd_2TxKMxg*EJeORW#u$aL+*quW!>pEXYZ)HJ8tNr%e8mk=Q$ER#YN~U z+3nW0;3eW}68pDI9-_*Lnj!kfz=qunNg4T11z*8*BrtP@4i~sP)%fMuk3C&#bZ>pw zOPS)g_mu2d$?nk5|3^`>&$e#jD(rVQQi^+M6mZ2+J|54TjR&Du<2D(zE81qQx}s=nW%F=Sv=%Q-jY#wsn`eg;j_8~PAM+i~F^AgCD<2QbMg zT-uAn-9MTXJpBSA%U%E>?dgygPWBaXX4Y^1Lqpi`Qc0XGDbC~AVT=BA8NMtqmJ3V4 z*w&SiaB4%Ng|@Nh06g3&MD}o7>!g{pqWyM{U|8=Gc=1uk5P;dybfIdT!_D9lnJTZ6 z%dBRX^)+}AV|F{gX5hr1-pR=~N2Cm7E8nyJL(uEvU__Pp@4GXnpY~8pXS@s&R?)6i%@>ZNg(ca4XtOi0fAdjM z81LIFZc1YkGq8Qbr(8ABd{WDo4Ypv#7kaLVINah&nKCbVGeqdH@*>ff|Lv@fltMWz z+>ocVKoxd<3M{q|A?465+-f32%j$hr9LWonQd)A4ZP$s#=m#ZAwQhDa@Zi$I9gEUh zOT%+@Gyj*Cgdq8OUiw^bHuR;IGWfzeheBILXJoFKh=R5R?_D*)87{oueLib9xr{4l zYtjqDBF>{_*W8c<1NNVLT#o@xHc(W1y;+A8#Y{wZrHQmPf6cMDV2cQM8vN5({@=Sd z1X(ej9M1q7TnTo+RPZb}6uMGc_`f~thBUd>3?XSo%z#w}tOdZs|7EgEAII~+$-b$i z>vaN9yJq5pWR|aBE|Xds7NO*+JVz*qFhc)nEgObI!_xgh)9xQkpyGY>NAKSgBNJzF zr;uQt{G_p*{rtIoC5^3HmLW>%gX%w1#CX0GJ;l#At=gNilt0H@Yu2~A0ivT-@C@1XXcJ*jm zlaF(n(nuvn`A&JnUS<6O#Nfx&o$ra(pEx&-=nkqctba2N1>VN&7ty3+Pk7YXT;eyJ zovDD~TBC=r(cTQV)~r=snJusFI=Qf7t9jH>ekusd=Ak{`1m#q5@j60{%&+-rMY8S| zIctaZsu6|)7{U7QT5?>I5eNBm5z~6>^hg5LO{q zM}by^9XwLs3NKlD26J+IZU+y!K_!C9?lb;|Jif4CFTa^u1-q$z?yS;|De%95YwCWF z-0B6L;iwmxFZQIcscl8*xgB9+@wz44Ot*@~9pmI!dF%&SY{KRe8F-|f1NJ^AM|0PH zHmoPQuaN?JoVyKCWx(6-jGA8adv1()E7OFD#w+*{{?~amTepXO}?x<2b0;5T3N z)FY$SA5!ghn`1dwowk3Io5e5!`Y70YvrG83?jVY|x6vaCBkST_I_Mc`z%Z!JZ+cuo zor1d!!exBff~KZWD=*WQ<%>WGvQ5*k zxfCNj(0&gpc31C=c(nF4ZD5>D>vJckY`Kl4D6v(0Z{->V9kDk7<>0i%hrODqny>g> z!X3@V*0WhIr`=*EbvbtQx=4hm9ILySnvL1`y%GPP7)02P5O@=!wa6$VS)QvTTKm!1 zpmtiHW+$^P*Ii&nX165TO1IX!lJyatO7*JKU8R{|^Ezz#-L1EF3dkQ`{HRkoA4f2L z78hOGUs9|QhWF>#=+|!d2+D)O&x|h&;YE8Xp#3X4)00`?5E7i>4@KFl!fiPxEZf;& z^%n1vuq*65v)hgBIKwCJ?fmXIORRN41EKQiFMF=HnjLtUgEN>TI@iBYs2OkVJZYuv z(bn41rX35OSX~L-*?w8M>PMqJ0!i%G2moE(Id6mGoopzR%=DzZQ-mBT5)>(QUPwYn z*S7!htKvtvC$8SWxGVs`H(@(?QU10&vpv{OJwXXnXxSn+q=K2=w0DS}yR-Y3s ztUvnNjpSyC$X@Hk%4P0&#o9;~7`An}S31)ka2f>S0$5n^pqJ>;lYbIGhuDXQCb<;> zP!2}Fr>cu(3<`|ZP~gNiO<^9zEt|0Dv7@JfeFogkf2aX~Jc?;fw`tmzN27bi{SqMD z&P)ryq>=V?(o_8JX6W70s&MkCu zZ(0&D=asRcQpyc{ftP5waNo5bs0gScF zCm#w8@Y1dDyG)UngqRi%8auO{EbIa3nDWyAa)aSIB9$(B{u&^?4dlQPn%FZ>Vlb_Vc`-R-f@>6CY816bOzWGt>!StSbdT8f< z2Ui_Uz~gc{9yEL~5U6B*G31_W>fU{9vcjfCG(C*(M)=rE`yEefVhP|Fk_18#8OU237RPkLQ+71QKG0w#WrN>Hv3zeU1*0m?1oi$;1kKQ*;H+JOm> z?9lrDGiX1;rm|~RWk~N4yK$lB+BF^MuEe|9QWFuY>{3>DYDge7fGZ2xaxIPhjo*o$v-EYoD+V-nv2xKZG<#M=XN~8s2=*qksXfbdz zX!+jI+?J0Q%ZzswiK;Gc$O@_5EFGf$zpME@6zcy6eC--t8={h)t>>|9W8fCH#Pe{< z{ny2Dv^@Ko5mz(~Vlh+w0l&z~|62Wrs0?1N`$q)s3tMqSe@-23ClWWs^= zNwe{;ar?N4+HR2ZzbHUv!uB7RcQd4fK^(XSz>5^h;ec%}Pdw4CeBC3=#%H&0}(TV|hZe_AHLzApLto<5ROEQ=0fPk!C=kJfG9b{b;@YDi+*gAgAk!FWG-V z$+gJ9$tk~o04}9l-<>?rDLaKLCKPHgll*b&cGFGRc$DYBj7*c-)>iYU#DYRd~^h!rP&LwHDJW(#7=y*1P&>KI)! z0(S$!T-LEzc;g+i6Q;Bp6Q!)An#O5gopWxW6Ix_1jCUfSPocw!U1-c1K%Igvo~j-}cjO{XHLP$oInFB*?!%27bACP}XxTTtqWnejUQ>KR zsr`kUPIQmGYIMb$KoNzT_oeq-I!AP+;>|MxEmpWDV`d>mErwKreXK?{qP z9~rqbN@?x4H#nZu^{)8X8>9GJmDjB`GDCtsy+c;mEC}R|ymm*brS~LkZx?RH6Qwab z^PVsafhu@%^nLxN99?oZ_Wmv^#DY}EMrA&N(pUyXxM}kB&mS+CO>W(~l>x3y*<5i3 zBv$D`ZCaWKfwTq3by1O`NpSr?g)3!SJuX7mE<~**^~&JHy%5JlqCXY%uqXJI>fV{8 zRecV8Dd)w+(9^bN!hnH`tx4N#BLXP_nxy^hv?5nZ z3!$xbksJlC5TsOVR_T)ykP{K1JuUZa;uigG!4?z?V2qej7eCznJ->{~Q60zCojm)R zOoN@xMgk(}NS@NV=BJ%A!C;W=z9l$Xxa^}ym;3@CR)@Xgws3k9^L0SwePTBXBg~r? zg!UL2nm^4F%g9-oy57RZ!vI@ItK3BH_CDbpsokHKcaK!NmYq`TUTaOnVE8f3dOy+xpqapu5)+(C<2cc9rz3m3b|p(-=KwZFF4a0X)Wx& zyxL9=OEVuZtDu4Yx$e-0>c{s%;mmn(v=T2jOJGbCLNsL%4QljD&Zi@QZ{b z&)2(~7TX8w>#uhRH_7~3O{Z;kqU}V4?X*8wCq5SkuSaefy9Xrb&uD7SNrAxzUeC)W zX0kl?b^7*Ou)Oi!!K;^xV%DAS&>03pr%EsNs20#x*U%W&%iz)`Z(+CA61>F>w85VS z+Z037>n%)ogm^rP(0;U4)57Q)J@>61z_Iv9zA0Uc2R&YHAknWwthcdo=RUyMG#u@~ zik#Nf%*c!sLyhxi=Cb$Kl|7wzS2vMC5pF38DtmI)ij10Cj&LiZD-2v0vJSE}pPHC3 zgIq$t)1=f|vr&@zz^|q9y@vD&>1g^A2wnCs2iLc%AR!qmo|IsonjFks_2@fmD%|d+ zj+RxfZX|3)+x8#!{JE|HFpbS_iMM>O_-Lq4$5n6;PFJmlBzQeRb3R0 z!Jrjz`h3=-#R+ETRau(MiNVYagYd$+iExcrV(kQWV&`Ubk&roPLP~r&?U>2nhs5~D z`h*onNGM$gH;+CA7ldYh`qaH&4KB;*$#=z@?JV2ZvI@glI5_e;xq}+@jNxQdR4lIL zx2A~j;J6&E{RDgLXzJKyE3qRe17PD3kv20Af3~A^VJBdk^j7JYaP# ze*rYst7(XCrC_@Fp7tAEK_E2Rjs12-Is4yloAf3Q|jc`SK%h zYwh~fN6y~XFjkW${~LZ;@7HngL33i&smKa;s)`PuG`=Lc3iPa`0}MZJ{+(fO4S* z9-mQTH(=hQ6B1|_P}L8rHwHCv1>m%sK5&!K!CdKMtxHGf?5}vH$-Ud>@#xPvFXPJa zkB|v4qwQw{9WU`S7r^indX-424WXeZ6whX+9WgAY&1{U}P0c58E@0=LZuEUpd`$y2 zY#9VRV_wY6OlyOVClr9fUr@C_pj;&j_wyzT>4@a^gl5|p^^uv9 z&GW18_O$^IZ!LPD>~fOceRa)%7#=Sd5G$o^__FVvEi~-Uruss- zIeNfYyZ-=S7WgOsph2nAr@EkuXGYeRF( zO?4S_+47mMF}E;}kWRCzt!7)|&R@7U-HkL({MmtrRM?xhNG{9v^2Z-}^oiMFgyeg0NwZFMQ~eNU z?VfdY)5W3RDQf|Bl$V>+wtt6mrGpgqj{|Ls(|#*Mtqog!83NW1g*a=~9^jXcs-b;X zx3oa0o^=Q6n0GhQ>U1D<=9e#$a|;&t8Y-`<8m@&L z&QQ=aPe879KEMeTSJ|($HoV8Jt+jM@1>Ao!#B-u1biyh1@U}2F-y$#x2*U&%K|njuEzfLEthl7JwdjeCiw}T1Ht~JL;GAFt z5-9*53ym~ci(PT@bXonV+a1ZJA3Ac+%k1}%h-xTwcgIP?we)fJP=?c1sRN#4?^Eqw z+_RYSVKb_*T%AW-b)sSCR~iXb4Z_H3Tb|4d#S*VTrRPPp-#-q*ug0Yl>u7-x%Jwfe z9e~+NcyBu-xygxLeEjNfrUC@<)XTmVUvEY&4+k$hbARxuiJ`^F>g+-@(vUKX>vf)? zV>`U97Hjt>gdH_1hV4!^BbvabL7zLuJO-~Yas~Y&1>x4Pw71wl2bj}yzfW7Pe_d=K z>UcsaqRnlo;%pI?qU)5qLvvGBUPFt}(0DCpZKv7Tql#`ja`2XiD4u|N{*RbdOSzxQ zCT(D72(CO~GJ zcImE9$6GC4^P=gsz1meqQ-Ry`j}BGkW0we?>{U2fEoY3iMvZus1u9|Kj|kKB_WUi;{Gmnp#!p`gh0lH* z1oXLD5T8S+K$>4nDXjTJ$VSPZ`WnJ~y8@>Z8mUZr1fdv3`~BSU6yAF=!ALr=^2Z^6t+Va7}7t7dE zo%r1?{UEHhoy$M2Hkk8gfe9$y%v>qd7H{cCDLYR?oDu`5K{>?L*YjG@iZBR(Wo>-) zZ9{wG22!SzvR+Z>jzHi}9s$*R z#cufE?3bPq-KvDi8`}@(0m`Z*cmv_?>0%NklxM21YKYRF0U;@tY#tLjQ(+h959YJ$ z*ui^~*R)aSi2m+*GnHb-1vflz;dTsfClr*)%s=p&r_@I^uD269<&?kTuFh46WEOEtW}k3pVsb8zu8&B!Uc3Lyh4?47X0%e$w#DQiP0LeU_>~po)O3rOCcvA_ z8>KH^!$Tkr{&HCFMBqZq2_8J!uAD69)0odDRJFot>DCPtrGy!DG9g?iwSO=>GU-t# z6aEezKs4ayUMAc(19(kT>0YV%Y}0veAXmAP-HZTUJQdXPIv#KWDHJ+yL|h6tz(w^L z2?-C6dM{ab_OuzQoDW)RUVH<&RnNcU z%%o}BeH1XVsCk?9?_b9qY*)T%n@5ceoKy{h8WOXe(d)_>7?nYMX=_dW_G404DxK|? zC81&JCGMs-E#LE8tIB)F0Lv_H$13uH8ouWVp;+BFz}en3boLS{tHB#KX5ePlWTSZ? z7gGjM_PVJ^6{Sg+B0XieO+HdQZ;{@TExX4SlbjWVZ zhW4aGSmv?=rAMh=#10`pXB=t=)OYvy;p+`anmqRK%O5QGvxy~ry#OUF_2!=KMl~al z_3q!;v0jzcC}oMudmp2^V?yY?TNfU;*_CW@qp=${+a-Y$@{+}@sekImXFH)(a>K-r zKPy2A!yI!>>Mvi+F}_fSuXS+bYCrK;e-b_bS^{(?kH~U(-;{vg*v$8Q?XFXMW|Zbf zo!km3NDIuskGl_+^Zt+mWvt_BSu_0bNvHgj(B06&Rgl*jMQ3a8%`^?2&yQsbhO5_M^%(T7Ynoqw=mOD6zq=RZR) z^>DCGFr+qtCfK$0FFaiw2VcB!;>C}PrJ5nmj=Ar^w0RTE0ISb|I3oz({35j(Olya~ z77l}F_;%^^G$VgCMX!TYVe9)^VVH~hDZrD1*o{V&>a$rsWb{b@=%s(S=O3p&OS5cn}^KN}$3xkSQgQPw&#S9X8Iz?fpIK z-}YxWBybu)+`SXv&f&v2ah+!v+Ry6;34UjzPuRQ}0QJ2&3E`yR;9!RU?|i?#kwrt2 z-+ZArIY>(0r$VZfcG821_o130Q0@Ihtv3(Op*!?xVKG45@QWoUEoy_{iEav>O>Qh_ z&z4Oe6@GO7DqCQgyo#FI6Dz`f+}-!E)r2iKngwe=cH6%U}6Jy@kVxGC(YJ^s;fy-Npb_B&Wp!gSz^ z(lh7!6mV9M526lA4Xf_0AIbm=F8~7O+hALO9Dz~*3O*)cNTvYi4IHpPBOxD~S`iY; z)F=rIL`?|_%y&KfRmI`2`*I5R^-ne0IWBtxfOx8MfuwhtiFa% z16V^%;0%Ei13LE?DBoL87fz*<@b7nA>d#bKhk_ z{o?5fIA$MQYl+yyDBkz4)wR<~K&)|X4vAJZjLJubL4+Uh$HB!P@aTjgRE3jxL(thT%`&;NLc!L@Yiak5TfR z(41_Tk?7(8Y63T-_p;RdiQE`;j^GYPSG`|eU!te^IPvD`2nx6y|2#}!_HY#=MaF-5 zRe!m-RwTf^QR-2PSJWv}4Y)0b7|LXskFMTa4u)PDVwux>?12=ME~dk~yKSCd?r+g; zZMu9SoTbYKxD)@pm{ib*o*S*WpOvOZIWKtI5n4O)?Wd^;czEn-rMX-6CW!4^vN8x2 zuwcLxZ!hY*(LeU-a@sv*--^!Xflt$<2u%L1>R^WLc%^Cx?fnqdD17O?ujxU+rr_Rp z<9TSABXk_RSy+nQN@Y=A`GjkZ2PfK}UZOFuMDL=hj>0nk zpbpB3F2F-3zFWZCBReEQ&s%_~(M$-GS=WW#EShhJ&WE^~V~894SES&JBbMGJ%QKcwSC?K?YwQkB%*gO+^n*y$?qN9R zKTzl-5RO&m0rwWOFfnz*Ouf9+q2NfRNm+K-{asO1`2(Wlo3L^MO;Uwi1(I-kTG%)U zNpfL2wsS!%-<1zkq1zGdI@)Ll@#Cw^dM3#dQd7daK08kE*qwHE<)dD91MHyIFuJ3q z0|ax{^o813Qk^=MJWq)o33n0(mGM< zO|1F#pk)=*NhVse(?p)M8DOCv57e&eA|u6ms=hLn4P=M*ty*AiRdK{Iz%1kM%YWa^ zZ&i1>;k>M{PG+ii>X8|d_f&}iIb7*7wH(lE51;y)@|owTG7Jan>e7NPZbCp0Ggjha zQG8UJ5ID=bTclcPr8*7$4t8h7JYp087yvpB4(-av;OguZ^ksGz7Z>u27as!B;Vz!A z=kZyLK9!dC*=P3fhO@bU(MQE5Y&Zsem#YF~&oKE4rcU#5fI zK~EpE&>PsvKu~Yd&8j{DIdB`$(5|+ZHS69<%Vcggn%#4buZ}-I!h- zRx3-q2)=tzdAm(_{}Bp>QhxSKvZkiSddX$3`{uTk($u0Ic62^oFOtWS@|vQe;w@o) zJmFwM^iTw+?%}q!UcKTRFj{KC+ThuvcQjgcH^yWjRw9%7I+P^p8q0;5O)Lvs0IRa~<&)-KuKcw>Z8|3kwPqo3;I$sUzL9>UwzS}uk0{z;KP&zxh zEl%4BCB%02M7QRb$VSbs_}*O;Z=WN>8ZTxKxS+GF0r18SAuk!C$T@Uq$37Juki#F~ z9NjSM+iBw_)#e2r&SvNkN6OV#(!(ulXq9Wnlefe+2JGxQ=zqLs_=Dr6n z4gKIb0vnh|+XU>ix1@KS=$l&)xB2zEdTQ?^)uIw;TIEn2?DWss-WY?S`N9uf(Bnm2 z$V(qDpI4x}B}Cj(TAC+mU~n7%vq?Cwsv=QOvh9xf@Es~{LtnPIW^nGarb*NCM3n@% zwEC3oe6QFR@&24z7GLG(ON-fFWF3WMgID=%x!xf!l}Vp{F$h%O{+e1q^nC_5^Eiet z@~XQU>ys0L;(<_ZdlO;To964-A{Ov%phOsV!6iC{;(YSrn6Zj4Eldv|(ZY9q|M|IC zS;etoElU~1?XCE`ww2Zjc%J%EW`2vwz^;xZl$#~#lIW20)u)fOysdqWzMR1^JkQ;< z+#AP8Ngw3;D4=D#_(#pt385g1V#1pq(R%T%$A-Y*CQm6qAQuA(F@P9yNGXgO830qT zKE2*p!>33*Qb@>k2}K}S4`^s;<7xAY382xr>aLZMo|dnd}oh?(kJ#EI{$ zQ|PLK7BbAnmEKveTFa>#Yznypx}fQ*#YKyrvaZ%^A}Fs({+`pT4>Dl!DumuCd{!*d ztmnL&<9i9+Ar^n7kR)9wCabuMay;fo=D2IpfgUEQlI!v;M`BK1?h?2CNvQDtGycY+ z=O^LZ&J7mZm50I4Ditmtq{(z{$HVgLQ~bw4>t~i~j7L1U)_}n%x(k}SZ&o~F_(Zjl z6?`S&oR@7bKip}WHPau5bLz^0tE>-<4&urU7Se_BnRqk0#%AGHnuiJ>fJH6A2Y`O- z2&I0tC?qMU-c@*vToWF7(tMQ}Hp8L7k%f@f`k_;KwOEJ4nr+jT>y{|LKS0nw{`hnA zbb2O&;_*<>Zw~jiwW!bPdi2egidWi2pj^_*ic2<5U}T>cw*)W(*zJLK5_}+Rm|$3v z$2gRnnm9J2*wtevgNh8I=_Hf<8ImtrnF4pUZ5CrN$(UD%?H29%O+mJV>&Z z0WQI>9hbl+->E`!*$^{>qu4{{ONMkp&Xe0O4*CHG7c)I&$5IezWnz-KOzD;UZ(d*b zVA}X||4E+(!ANV3vQJN99ynJiJ&u_c4xq0U+jJh5jO7ulNN~A&_w*xFV(vgB0;Zo!P-W>)_A}IZf&rgsL zF|P?)Fm#4hUy??|i=#8?TP-$NFvWP*iR%YvQ)RY&^4PUs1;Oe(?q~Q9X!U40B#v>4;&YVIBLVQCk57;ek-u zW4OjWFqe)*#RM$qhFt9iKL9#^z$gAW%lz~~`~dh|gb_b_7YON41J?+|1%bu`IC0d6 zzp?TyzEp?VCkwY!_Q!(G5cpq;rtef|+k#DRzD0qE#T7C7`}@1+;B_bdgr0s2TmOz?g9Q@^;%l;4sqI$7Dp(5Qo zk5D`y_#nFgGTyW^$rwQpdR^o0++Nu6RJ;R_Zs|ReYncYAHL@m8K)3$WG6r8j%uDpQ zc}<5)TiD^Pgsz=uxz_J~ZpS_m=?`l;_DUO9S(enAO!TV}${=6IkP%btssz6NYJX*(RXRfMX;^!#Y#3ue zf7SE%K!gtXA(6e_j!+?|Ga$&D7tR;jw_{6KKes!z9}$xKv?i=HTwa&`gz7i%Mx(b! zHNmXEGI9eIjIDgVU#d8n4hHkTk1VLj?ek8U=Vfz63d#lcL?BO95c!N)E5mEDB_XLLtX0!vuhYA#UfX<4C$~jsDVl*9{@*8Hw=!I5 zz2Tnh*OU2AInKp5>cfkqYo9m*c7PKGQds0#xT`S^_xS2Z`6y59NcMVONb2WIQ(Q`` zTd>iV1R}stF7sD{ZlQfM`Q)~D6%G}d1Y7zo8ay# zqi*F}*IiO~X9gy?p=r5|uYL3s9GtA6LPnxB1urab!5Q`rOW+JstrdRq05LyiZP}kj zjDi(Op63Mu_0g^~(kdJd9gml0>VR00h+u36dA7}9KxXB#xKi047I(H>0*$o0ZCVgs5K@!gnR5$e8NL8SxAJ+# zf2eU*^$RPS7(jATH0jyRM(|5$AP1$rX}jK%VN@8XuTjL|G*{x z1BN^3ch}aRY_4>`B}cISV*Hl2=bEIH?*yp3e4~^P$V;LK4Os_$%=*D z|7kJ{kw;iG-URIKa3yb$IMK}0$%<3f7g;~~Jd}(n(;8eKEH99*Ui^9!W-Z#)GhPCn zci)EhJ9lbtN3YB{MsR$1&y4@XqJ^7T_|6nvxx}}T?c8CHW8Rc>`+OT_XHhGzPhmET z09cMvK91qyJ+$oisG{OK_rg3lnv>%KI-#*n%RLpj-=%kRh!1%>0a`I2OrP%gqq8v~ z)u8yGaCZDF?Kgmh#`|*}S@RW{t-oF#*i@&y0H1b!_#n;C-=>vmZrC~1LbYiEWKC!F z!L0CWeizSHalpfQ$Z&>)tr5GbBlsnFtn?IE1+t_`beTAFCXB7Kgb)XHpDsP0c*Ba4!*S-A&l#0G+}~27~G850vBu9X2UZZ$(k& z!@Cd-BNN3|wsfvBn^5hF&)AjuJ1?3H4F@{n_T^KkRANw40pkM*eL?g5!q z9Isd57cf*Amzv1S7Os2cC2!u_4o%Ee|GT% z85pLuK~!*4400~qsY7?zPTVAd5s)YjyA-YZdFnUT=A5Sa&4>pYCU6X!k|_c@q?3>C zfBJsw1AJ~<9N;j5Ic+W^8`Yqx*%dHbKvG|T(^)E!HH|O60Qx1+q7;mYne+NtHnq_y z6Y$miemXv`WBB{XECMgli=pMK(0{PYD52s(ot)&YpYi;euGIGoH$t95B@K0!7QN8< z2uD*IW@lr~;$CX`ub>u;%8+~ZYZcjA-!us1wf0zv+gij&7>mUw{XKL?%58fzS6NO~ zQgKrV$gF360AUCi0uHRn$Mo-(a2q{&UjY;&2rres0rD8amj8Ab?KkPtMJ;313>kZr z3jj_Sw2T(E^r{7sFQ|pOK5~PTsGw(Jmx zN9Y4s)MI}pY7uy{U%2C+*w`b80>B#4$v@MNKuJe-xp7;|ksj9D=&QP*4aV%~;a~Rp zKUG0~JX*UjZREy*92bJL4*4Lbkhd&k`Yj@etlZvL-tq_%Xq zuQ15}V)Z^D59D8Vv47X+0E9Ij4JYVd!m#~^J{L@piRD;~*()i_aeS;rdE4Hck><&$ zi*jZN>)T%`cYj9W|7CQ2>0ul+H8OxVWVV|Y0Tg0l@qj5noSq>4ggJd2GvhVlvY96bfb*!_A_lo2H8X#sX;+T z5mb4=B5IAPs%~s^NcCmFR_02?5YROPBY#Ad{)tD=pb2ThzkUX6g+ECgeE{X!JWple z!7Z_sDoK8eeQEw&&1U)2(va;$=Y$(&hUtJL`va($rUsXjB1wo$-n!=HfSguG;Gz5m z8h-C?u%O%3DdyxBp`lTHWkefAy01WVHNT@KYA?0d(C8AJAxg0(Qo3w+E2$l&O+R1f zsW_T(DL9n5Zw|M54+HN!en^o1AG7@eocsPA&(pHrsly8KPaEF~1#9YyD~(qQZl2G3 ze9%y+4P|u7DjuQK@@-C7@^@7`8BATE+KQo53!8m#;&5^P>#T`#l?(wYVEE?qRX)|Pw%u*4H@`K5C6n115asj^fWlsR>RJ8ieI?B^os3Wk`!<9oV`p3C);jCc1?-`n z9SLR%*aBhIRQ9-&p2+PtR;8Qvg7>6N0vLfE3~}Ab5zrx8ag^2sXIr!(@DHXis|=^o zm@QV1lGXHkw4|LS2_fJm!La_$vQUk|ICDF#b#u3GpoZUW_SCegkiYsA%wU-n*hJ=T zQfqnhgty$=eP3BUq_O%FTI4gsM8W~KBNyzbVyr~VdnF59XV9oS>lhm8e- z+cCqwL3*4{thgwJaj*F;j=70jFue;BJ;58yg`3*WD=pKf@+-268$w=rA~OXXJua;H zB*Paid)3-tZHujTI$LvlgLhH|hJMiydb9Qca1`RhDXauD0A)t{z_ci5&dp`s@0Wc zAQtXtmK^pmr?OlNC9^FZ0!5LuA+j|C+QdQ|a+OwDOPd?QICa_;H#c%XIbKnG+IXLZ zftr;Vr~5^im{B!SFkcK;{NI?)s~kA3!Jku!2`91>+St)=P(~n$)wptXZX|<7yedJq zobyYF3rKMz;c8o{PdfwViAOf31Ds2O+bpgup(*=jhuu#54wV!*bqH*pu@Sh-tj(`! ze)gG86izJ#yTy!`aSy+l!fn1uhmE_ge83cc`{Ar%wIFok;|GC@poTIdSsm6?MWr!U zhiYcr>!_bT3m&~7Umr$L|2K^crYm1aGsI?vmQ327&4;^XWBkf9$c2ZfYd(+{-__|9 zI5TFgTJgDeS{hCk^i+B}Wg`3Hy zL>E}qntH=+)tEq5YOe(0ZQ^I1jL9HIo&+0Uw_wPW;xA-YB}i|9SL(~P*(=)2tb+q_ zutzspZ-cQo@2-T|_dNBo4>w>{Y+?c4QnxJ*n%DaEIU1gGsz2{wczpVIUWR9f;lVO_zX4oNk?>MtXzhuRy z!boqr#gdgIkSYZVrre+7%XEi;2oLVH7BlRwoT=IQjnAWx&VeS3m1>9V#w$GV8lV~L z1An_sFNt_j;T&s}55(o*kC#0@v^m@V;868HPYb&T;7Ea2iDi9@VLc0oBN3(}$o{HL z=Oo6{gBk3=-hHwm2&7;WTJY>ztz{xJ@%9ZVII0-nW4P?Kr za)ni-`R$kc1>uYtmgu9!jX4)44vn!Qjsmf$?U`vXU~fYAL)XhfkYs1&cd&dnZO&6$59AQ6jw9M=OC|g zskLU4kc`{(8y~XGuK@1@5!S!((LW&0zn0-mf@0kY1KKp}>wwxT036ldo#ujP;4mrx z=8nRWZ+@I4kPQ*zL%CeZVbk}{q5XLO0(SpE0u3O4@y;PlL)b9gRWKbN=Bj}DE`=Og zMzk5UD;+2FD^s3XN)xv)JnIn5TO|fT;3+s4_@L|1kGx8@Y4=HncpO zQaCwt9Ij9DCzSjLWYI4G631Wg;0(OaOoIiJqbypUwH5n?PLpT1f+%{C5e=Pgc?G*6X3j_bH2CTb-%Ulch`OM2c$gDGc$Yk%>L~? zyWlNd9a3kznPfCZE^2FRy!=q`!6sSpPD_LheHA&rOJXl)!%su+u7${KHy;3n)@K%> zEW@^Bcd3}7us#B-M~sgONDxK^NDq8ioa|QbP;9vA1ZJ0E>t8qp2Cix}PDHNEIF(h# z%Bh4yP`Lh3rW(GKk(pk_*>YKB^7QV3?5=t3@6t3hd0zb$)xd0+!g~v+eWydt^3+tX zqUpVvSZOAqpMk^BVE{!k4~L~l1xCt!1w0QVckIx1g5133QjQ1(8l}=Q3$UxiZk*;6 zGQ7#FRsGt;dSx!NFjr`oS^mjjU(9zwX)Iv#{ldbx_*U$rO&E_)r3xnle|#GdyT|;o zsJ2J**$|6-qVwQZq_aVlGRPmHEN>6C;JT;r@1!?9crRPLOj5-x#G+*Pgiz+9qAvD?{*d+hv)brq`FU-!! zHa6A>d<97BL5XkuCy$%}ZfVfVkvT`-J^m=0@y3_&wxa57AE@uV@GU~v`WA342*V7qNUI^LrFR{J{@IR^s67%fKl~P* z)2XpU(j(WSgAs#`YDrV_ic&f0=3EH4d4v5x@6y{RJRYn1WqNsQ4;(i;wm@zUdeqp$ zx;V?OlhDr{BD7%=4GKAb@9^Cc_Xg+m>6CE3Q*?BM(bl%M6nvs*4%@BnC${>3*epYu zka6Q?WDf~Dz8Z4DgpT7;5U>n1=P zW(Ml=_${y_MICF7t7JNYNCqO5?zcO1^w-C~hZ3d$UoOSuHY1Z?L5@O!7r^Dav*Jcf zm3Y^O;e4Ss9iFF-*nwnAJ;!!L1iIivGx0KeUL}dbQ=Po7;}=`b5UULZBsZV@5+P}w zU%(0(NZ2|*Q$4BcZs0~KH=cB5tLS5L2O7p zE+Cw;Hvw@~u%2Dd*K52p{0qn*kW9w*kz_Hav~^qWjnvS;ZH{yEEy}glk}RZ+bhwvg z_$4CYMDq8~(NneU5AS_vD z#foPEhH8eV=fxco;*I7$!)%0$8e0kD{ssV1-8Jf(Mpwq5d%;ZV>YoOP4cm{3<(bDn zS&f}+d+2e>1HsWW->o6XbpSnlgd^jAZ3S@#q{`uA6nCW{+qcIG4HOT2=Dyj2Po-gd z&(hcJR9tyv)Hf1@c4n=XvopMcc4A~z&eb{gs{{4%bx{$>B?O~Ka19uH0;<%1jAaq~G)wFCd(V*k+nMf%hdgC30CAA=bqCp;))4x<+CuJF0JY%A0) zjD%72<5EY0wRuA~ol{yRFU_%Z^~VL%Jyk`zM;vwS_9=mUF9Rr>?XAs~ToWIXRHh#}0 z05);Ugz$89Vc!Vo$p$6M+xZh*2dusn)A{2J~s zHU{)hu}$t_N6no%*n_LZ*_)3~_whJ0*P+9~Dcwm_+fyEfu5aP~OiS7X64yhtHa6xe z*!-=qiVm!0j@9lqn)l-jN2d<=UbcG$qI_av&cunBKHf6*1VIZ^snNz=@1N;?u9%jUt3NIAd4_9q5`keN=M!8xQfdM?i}G-->ppIe|v)k0}7H{LOc6mSbNVV|Rcs z$f|>tyjs8eVZ~LW#p#i<7KqX`vi<($?OlESjO{2{vlVoQ&x-iw=O!(Hy~gkMy^`rH zT;kI{L_@ieOF$zW0ure3H2y+qP0q8(`ylIQ2TkbP^N2-(en(7Mo?zP+^~MUhihyzl zCb*j=a%Zn;G>%6Cl@r_$MlIA@?kh>VIx@+CKoLZUwmYMB+pRf<=YyW0k z6{tN|4f>|&tuU8ff-x4EM^9Ft3q*oBM#n)1XKC4+#<_q7Aa3^7ZEmn;;k7f%o35D3 zlkBHQs=YnS^z!A#!{65tG_Mameg3@r$Jpm(?F0o?&mB}ZH8oAJ zz5w>-hC1M+dVJSt3bcxh)kd#Yjk2v^N#l)|g23Q$1O%&r(_?`@;n|%CO$w#K;p(1o zt5gd>x-_-uMirt#3NR&rNJm<;F*6N3Fg5X9*y=oMk(}1lsOD3qmyrs*5-7L*l#jbP zHdI-fm>U6-*)?$iNj_A6yJa@DssUAAsSrC~9KBsLjDrpqEM;q|P*PxkUjG#LKf1V!{u;^^tV73VhwNDPx;oT?AquWz?J79Yn!_IX6 zZiodRfMK5wxY+~!kkTk{tl?^QH?6`%9w=!DPCeG?uk4v{y^BhjS;|n#YVds+&`Bez zjKJFOVPhwq=WI7ICRc$BC;0e9-oKf5|EiSyVQo=dkPKIkzQItDHG3-@cq%qWEs&aN zs#=3H$KQq6j9<*Mv!fu$ah-XJ$v0A>K6gkFoQUUeKb%`4s4)s#@{%b$3s~gu%|y8K z+>q2dh{{$S-QHTATJAGRudBPU$)yGm&>j_^1OF={U{UUxRK`bv!TGI4@Jm%#x19l& z6Tsh^#6lPkcCpzd-CY;T=Pji$kPg=Ao^tosr5YbG3S!?2L0BlCurRl8nTR} zWSIVa`6)&~#(O!Xx>I|yls%LD*G?PoID9>Pdp+-C1P8;doMDPv)pEc3dDD6wQYB{7 zlXoXc&OaF5F-;vEMd9kTcUz|ElsN;UqWz*yvo~;PqGYK9+I!t%eVl~Zd9!PdS$)&P z>%igQvNEuH$vSe>eHh?PN*buh0zOFqUX;1~c$qCd3Ec}Y++(}n{41sM#@>NFc{ewaYF)L=#4jniU#0BGP_t#i&K1N?Cce5JDO))kDQTYmT({#*bvF_m6 zG7+UYyU%f1KpMUjpM*Momn!$-c?rO(*31AW{b^@KDVq18AjN^?=mA)-k8gue=?50- z_mT=D^uXV+%hqoD_MNDqKBBhM?gPMeb*uq}HBzpQcBMawV6iegQ0Tkuv-x@XHOM~$ z+-zyYVM=_iOWkTB5?ncD3c$zq8V4n-@(d-bvSweyVR_$JuI%;{i4o3~@)9E7+k?`Y z5fl3&MfnSg0+9*4$_~ut^BIz7&%~I_UmoT7CiFq}RSM{t;mp_D%1>X^V(Hl{2hZyq z@YmE$S})o*YuCQQQd))(7)m)3b8m^@5Cm#(S@`CJuqknSN8b+VFiK^cV3M4wxH~8P z!IK(W8dBgmaHK4kf4(~XYmw-?zJuLgNuoth`rchB5`G)G7|H|4XhO0pi6v1R-?7D< z;nscrMP%CmWMiB6z;})KV_z@E8kiFqtr zU@Yqmk0_T=Y%4Fi1RpzXJ8!h=rKKE*Pq-UGb=RsxR(OWf_I)m48wN7Mr)18_#Ea5# zi^f{KHn&oZ7l$|8=Avs9ZEbs?I&|U9<42|Eb4t(echqn)x$~*|$!tOH@L`_E{1-e? z&0UvVP~EeFZ_b@VdZcfcynk12?CQRdJ6)ceGwR;%{@r8QCpVLAICpw;x_UJezLF=? z{SKq3l{MVl5p`m4{&Kh{^tcSop{fck3j`;E(&@KuZb9(KN;zYZm?f_o<(#8qY`}vPVisZJ&H z=htrzFZEAYT^qya_i^Yxc^z-a%jXn3#iyHk^m7w4>5y)3h1Z*!{6%9pY}LqW+|{(!|G-8TC~ zr@3x+Ga)#9xx)zPYZX;x6&NA$$6;2yS*!?n$`DzdB@^yS-gFz5@3PB6_|87w8;}Il zBEeE=T!{JXaO#VcSbCJl`@3WvbvoqE+X!rhvCd8c7RWLu7>W<3Tj7yuJFJiu`4* zG?DoywdQ6w91z_O4^ytb`oy&Wm8Q$_ee3Y;OL~id_ctHUgYUa^1PKJA6FDOObaF=p z#2psXkOfy5V+*pjETXD5^93Urgh&_j)U-qsh`0u!qyg9M_89+<_!m8yg0Q2boBg=S zCo-viY7PkT-hj)}=g%4V|B4{Nq;+sZ5@pyk}>z8=waHKVwa zDY~QqCrPg_j189Nfr&jezzg%ygOp6IVfnWcUAqb;kB@N=H-Ec$K?-gOu zWPXlhG#k4&sKUpu1U)f36qseg%J$IkYcxcdX3(l{^Zi&W6>KopnP5^8^TAz0R64h! zi!XZGc-7fcdcUF}=B?7V4T*|rBiomrG&BPIS}oXmI^U9FiK-rfjfbH0wvOc$EY#(| zCt{ztc*_(rt++CFvG*v_Gmjf|2aLD;creSB$Zt)Vdqd2bXOS|rWy7!E0ey|CqT>ym zCm1v6aixJfr+mj{oMjJ19*7FaxQ&>gX+a)$YL~*tz`SP+PPbi(fJ}jJ)p%jHo6C=4 zrEJrrE_u8lnT<;>Vv7X>vaURefan$vTd%vXeaU8#sxQZGk!RHwo^dDTbH6uQbyli) zQj@ingxAxdXjnB6U^O&^_oLgbPKUy;1F7;(c5wAw74 zzxA-A!(zMXblnf832%RDtEslRf3Ys7JUS+lWAtTJz^wh9RyC8-Qh^`+qb~5ON+$=W z+&;dIxyYWXetVzyk@_+)_u+H%W zzs9XJ6-0P7l5I0k&|zF9o=`G$|EP}lNxe~xzl{=A$(3#GXR>?nX7UaR?Y zZc4@9${h0{9kRfyy}Np-`f_njjli(QO3hNrfTt%1YPI;8Rb#-(%do=fQx7LzL=)4T z!3mMwSm|n82=c;=%RnKg-!g0D-=6#{B?Kk+gI7AEZi;dHT}{nxU$t^J3`?E zb8mg`@`yA?v|ot3MzR4EIj8OWCcQGlum#!1Ts5uTnRgpJdpTJHH7j$>u^Lov&kEn2 zEHHnHVE%rN>`i6!c^+67Wt`0|Nbk^+yzZ4EM@yQT#Wd0d-@>XYa`_n#i@-qFrE-FvquDh50e0vLc3aer;anQdLCqw(9GN?nfxfTsrsf zHqFfYVC7P!j7XQ2FEZV1u~N2-CzWVLMhDxwktWM_=Sz#OT_lw|$3rI);a+JGw>re6 zSJHEPcTWBbi~fOv7TDm2lTS*}emM?=BSEXO%Xv~?N-CtTz^rDs?zSSAJF4h0ra~3O z3#jEBOk0Zv>|kOeL<9I%!=Jo~h0szmfhgGK@d zmd(!O4aY#!3U9(uV^jFHF865aMC80}3z7p{{9Ox(pSm!1>Rv&e+~UfC1r5Ip?Zm7; zQ{VfsF>ydjk3Vfv>km)YW0<&IgoVy*g(c*LebxcOp(jfaw$hepoiq2NETenwk-nIz z+x;@VszD-d6QVOX^rVU>un2Tb*BE09r{W3h*=3zNFOMH~-HQpyX#?Mc+m>Z%ZytS0 z^u^~KnFAw9R7RkjXQFZSeY8mFbzjq*sZ;u^9az>Q0(4q{V-=O3^tHOb+3JF&m!)Dx z`VT)n!V!IFL^2cJ^T^2x@2ZPw48G@vWkZz6b%Oj^2yS_Q#+SxpzPt?c`Ij%{9ewJpopcjk1DcT?aQ+jp<*Rld& z(&3{AiZY@gWL(>2Dy3Wq+SAv}ar*4Q$Su?6@3aZ&nj_iU_rq++gACn;cs4j8fB?-( z#89=?eU*tM;+{Zs;?k+@OEAc+L0>h$S83o$)VTJdd1^s&L~H}rm*aKV^0o$P6gn;@ zdUyYd~ybfNy{;MmNok96n>@^=hGg zGOrs|Q?_!}kmX_bt)5RCwCL$y%vEpCpHC}9h?7~A%U6!c$R|Nl0ak>C*!0@D`@8xo z;Hz-K8i7Do}4OQs9nh76q4@pk%E4!SL(x&G+f8b5j zz>nELtKmT3%lt}Jmblyn@-_r`m)svDHc@X2dA1oOGa~gT@YKERiE*F_*=I`a%jfZ~ z>-T5(YrTSS=LyJM2F&x0L+;QC-U19W4fE~MyDiAbdBOZeU~kr1#C_+q;=&*cp}^%r z#v>tNzS9`fMmA@-bIQ6F4A4`}>spuR9VZLV&+mH+0oi#I^1rlqznPE|clz2GRNVXu z?9Fc~kMNq~ZoYgL&F%bNElstk(&n;&*f_7R->CHRz@c~MR@%Lh!j#J9(ziS?wbJtK2dH8rUDOlPw;)wPhv;NAW`3APKw`y!q?!x(+yl@yJ|hAm2>$c!K(FgZ zu}~ZkP}VUm$cH6E@aNvf{9I@n8GNSU-Mso)TRmx!m)5Pa?s1RD!+lY$+#RB+f(HFr zMmLSR-#+K%X&H%Z<$(>|`iIc&Z_j_wiX_jyjDTR}x#jQ=quUG_nN2wyAFdokVn$NJ zcpZ8^m7`1rr9Y(fee3sf_DQIF+}Pf2e*c@Ot#S+VPt4{B5W$`>23tJ9)vvB2!VzG( zGxZX!7N2|ooPYT_+*(BYpKPkA86bPu`Ck0l&WiFTihPQ z{_nRd1bfGD!nd3LM1uXxX9+C4;U_E$Ls$p8^W0`r8j$R^mQgjL!g*|2ixW)sZcp!w zHzg*n(n=Uu3mnc~e81QET}<^?X#A8O;9Q_2v>Wok4E1BS-&QGWn~hy~4in_rkjWF8 zFp_Z(*O!|9&`&~0$P!6~?@<0{(wZx(G;*!KIDh{(#^T zNSToHTJMSFS;WISLWv=)*JX~C-&W_uS?iXZN*=xSuhnlhsw?}QVc#qJa&%jev&#RH z(Ydkc4E-T^9&eVX)0>#vY4oz(9Ua|WiBF|`^dlgDVBeo>27pD%_TUeow_+=@*PJF6 zr~JX(-vUlDO%1zEPQO|r;v8)B*r{KI(ynUfxNWwR`*onr?4@)KSD zTq_g>59l|y-c~k)gvghCo!{z@=K0uv{WP~89s7A+Ju7eSC$s(R&R?~&oh8gFJ@bmU zIxSJ~7HaxrZsEaC(=(2jlR z=4I~>1_L%GstDQQf4?i<))sz(zcN6|go`ysw~5_ugKwQao6jTy^8FRF|D?(u=1u_y z7UREZNTcTv2m&!(QgI!oo{-+)$3h+fHD;DTjpw1 zjH!8FERBK+G+Br|E5q?@!B0+0M|-60A?nK#Q(0%_rH9B2ZMhC@U|>5oXQ3EkU{?ZxxNf$!i{Ed`yvpWEd16BO zr^+kNPgq^G(l>w6N+143+-_*2cDIvwI4-U^mk~Ml8G=+ID=M#7R1l5=0)jrKO&vqW zEZ6}+8Z{Tzadr4m&XGxtT`Sb}Pbu|{v(Fz6)ZXy69U7}u6PbqI8v!t_eA6{87QQKK z<(VL_&EphRUGhnQum3FSP3bt#`y-_mDfhOZ}zGVO6E2ggU(1H6N{An`OI0>6KtCFP01q`Sm;38emJ~O zoj;pABkgTF!d`I>&;jW0`d|v*KUs4XP8}#X5_GjG0?o_<>%Ls%m#<>wL8?iRSAUqU-ip|KqC+-QxO)ZqG?YX+ol7h3a;nPOQe~ zXrw>M9wz2cK;&9SucC4t3ouBawrJ8@_XD~$lLHBb9$4vuVd}_!S9SeZ1egi2OzpJh zQ3Y^666jhnBm|sFU$p~Vy-1f_n)Dr2ztxTp*3+r3ddt&ZxJME@cOOg0rIJ-?`u?f< zw%F`SgoEnjiQ?AUqWlwGEn%?OF6udmbZ)Mlo3VT9ayY;6(Fm#W5a#LF5AK&lF>|F- z5*>}*x(C_FNJp@esuL>+<-XQ!pK6i&t=j8$;Qh)Re02%K>_fCZb(lIE}Khr zOZ#oeGan%#zwyGz$7#NAf9NI@qK|;!vut^pOOr#}S5h?(4>xhHFS|6b55TbCAgr2m2%_5rc1*A2Ye7pCz0@t=U)&FAI0^6Nvnp0eLa)>haT5Oe$hFUxjy zYz-GAS59$9g8vgawbLDx#>kC$)0fZGiXCf~pB=p!Qi>WoZRNVHaXQB$a?OxYh*URQ zn(uS2Vr+nM|DsNM#MSyu#RlbbPRm)J!{r>IK;->%X}H^p?nr#$TF;o3^^<#kr?@&< zgL6OJNsEY=JYeS;J~K;lm5?C?$)0!CPdJADgiUI|@z05WjVOL#oQi=t(m$;HZl1#; zg-tOZ6+L(}mdq-^BV}vSJzj=vYvFS5Z;bCm9LGYV0B8K9*-wkl9-jOq0y5Bf6A|79 zRhO}GlPKqNfe)&A~bWcsM>RCAPu31~SF4d8rPx;V(sZ-~x(&~(F7pSac$|_04S(|N9dacw;VNnVTJ@NO> z3I5s@Ni+9N6@J46>-Oc<7%T6U14pUb;&;`GKbczpO0!^&6?yWDfxhxo?VJ&g)KC37 zRaE{|R+RDmE9}^CQi-uW&|xx=IygV|(*_rM|G$0X0zgM^=^QfhQk=T4jy;MMzc(WA zk{`AnI(Q$lL^&mrP>qo?nPb=QKp;5tT}KO*QYuN0h-r#d3pWrb>}P+sDww3k$fcoM8pf`xLl7#2>`6cXAMVBd~<|Lt@32xMFk=Po1uDYIs@BI8! z877DPQQ_tOMRObgQ~pLB?o0i4R%*P3()qgXYePQF2EYy_B5&2+>rKHX;t#WiM_kye zr3wi1`TUfJVzIs9qYEq4gu^vbun!`F9fc# z2K0v+6R&y!y?kN4>u*}HFu}r^hYi7K^BLpHbW9GBR*wGg<*D%_@Y!3Tz|`l)+B9Z+ z`9sj9SMLOTs#I)NdcW8EAw*GbGEQr1l_gQW?+q!2V&k@WmDUoxyKCTVX#+pUJ~|*% z*GFRfahWvS@}n;_&8p?bCu%EW^ixxAZzM#AMIT$_6|mFfZQnU$SyhLZ-V5e`eyn%? z3~$Rj<=gTvg)Qt1cb2;3_(x-DRTP^vG>}cYjUUU-!??l*b2Ij|^yj}bAcpTnnpvt% zJ^28RRkWy552RTYR_c3W64HS2*KP7z$4AcDTb9i?NhreDaiDrw$$t%EE50B?+Z!|= zHGiiW@%-M(kfZy3sg64<5gO-!Mst}qdV9p3xiHO3=_LUw5fP^DESYVOx4hK!<*mOT zBF`$`xLRRZx#onMCkG}W!<^?ODwQRT17C{B!%G;jG2R)nxXBwtK5p#5COFzI-)o)4 zbg8f@>Po<(DK6o%W3_B(ygkf#wjy9L&hqx|2(SB0QTZMwvB&jLHN?CgQD_@sq;dRz@xfdBL_lt%k&Xc8%0`PuES&+uJ`o?lHLBa zf!h=nfbqlpL?7>M@I3CAalI=*;%t#^cqX34ipr`u7?xhI~+KHYUJQqZ# z3T#b&jS=p&!2kN%(5d6&$K_oDzR=!5f6Pi2*_9gQW2ERO^@_E}(8ZXun9n8eq@=u5 zj=uUs!gj2bDG#(l%chB@<2au84lJcQ?l3PzohmNE2m%FWISfPA+ zz=Slg_7!#7usc<~zVpUsF6u;u&L&>JlS<8oqGQQd_vof>w97jej$==NVnyI(mbqhh zZ#W4uNA0{~RQ^YO!KFZd`gAPCs~5M_tq!T#-ke9jyBT=OI%D7OL%_Z6iG-w=n;g$j zK!l%9@D(trA`xd`g~UrPj<&wX5k7fTyu;H(*Us@wqbOiA93&< zsYIZpR)^qpxc7(u{$nYL%VH)PLorFAEK+9ek`qBsrTDJ@-G{yadFn9vNi|#RcJM)) z^!j0Di|>oFZJ%A|uin^swH>jPFXmHotvRFloXDjRkHE#^`t!|KtZmMuIvv=z^IA)* z^>IRj^V;+6((^JX2aE)HF-p*&&36m$%hmSF?nU2(XBqogA|Oofw6k>595BVWZy%rF z>KRQgxevSQjtlHwwQuCp-lG_VjqNF=8Di$W@X{;CG0xteyO%tI9o>D>-W~hSKO-L6 zdw;I(&dBdyKRp8wXu)q|*8x?{7iUbi2jiU@m~fcUt>P+|xOhJUwaG%;p3J&i#~pfC zt0wS2Mq^KF!8OXxc9HTPeC`*WYN(AV66Y4L({ z1HqfT!l_owBKccwywCbnK)Cte>nD=`_wN0xG4$ZhRRHcfS$6kcx>`aT$XJM8m}n#v znm2~Tf?0|Mi9P#OGPR%WlI73+EPMS&lKuI&Key{ZQ*aCmWeBqyf;bF*-EwLYed;VQ z7HgeoLt&ZjOl^MD!-etxp1EM&R#MLf~yUiwG}P5sWaZ7 zamoPQWwq9i3hO#Q`0~b&G)C+Dz-PTXDb5NV7uz967I2&kw~z+FuIx2Z3Z6#73j5ml zj+8njXPDGflR86vEVjnjw>}Ozw+dQ;f`>-}!gl}|liBtxsv`~*n&ckQ=A=+q2We2_ zQ&k2kuA*0~S7qS~^^C}yfef*fq7o~`l}for6%wLm&2Bqra}^-r{%wUa%}_6iD}=)C zSuzO($HTi*ZqqGJr6+MIn(eegu>9~ld`O*ENA6>TkNGpk0sR33p)EUZ3 ztg1LJ^M^m#L3O0pu|ahR@Mmp`=;!8kHfw#$)c`=66rviIP9O9`i@SRKl&{wRFZdo@M{#YSHD!YiHgirwd-Ax-hv6qD{L_%|(>E~1PnGCz25@h49DH@Htc;N&p$m+$Y z=nHO&#(^XZ9b`1T|BQz9Yz3QWjq0v3ShZ3@99D5ap7ca zUShO~&p=3;$9&bQ*(y3oe$?^v>oCF&1I_tSv*nEn3F#Nq`Bac6!_^0AvpYKNQ5wwuP){nS7%l zVQ1Agdp?bD(A2!8v$eeiwtY3jR2KkQ0AN}==1tKj4RS8 z@y_nFbDk1pKIMK$bBFQXpwr^Q;dHn2NtCj|i!U~2t>puUxqZcnf*xYOck?i-6upL9 z10^RwV>{}c!l%^I7e2_u9p1Y$JbKk~ZKs!N?U7v1OPjZcL8!MaEpNo)mu3=wPU-kd z<&KWmyQEZe^MX|_C@zL4ZPbNWg*!yXt1G`+RH+aBrg~#Xf-(k`J zje+d@tB&`7>EVZufO_xMQ+>H6{x;4AY2=pmMgNd;ZV11jh)_k!Xw-368^i?vj=7u%yGE?3d;8~BVb4Oh4$)02D# z4P82Ko=$rnS%;?uPjvjo%Cv9axrH6jM^yy^3E?0u2$CIC z^GMT3R>UoK$cGL?Y`QK|iexr=tyYW{r8a?74_f6gAO(t5Uum3|Cl7SAfg*NhtCU^Y z(1(P@C2dV5se-LtoM<>6MxIa_WRY^N3#kpz>@jbGPmNSnkV<^X5VBr4w|dAhH)r!{ zT|-kJP?;vK&)D-r*Qs}zeTe~BZlqA|s^=)#c-Boj*NHG#gsa(_scBR9UDpzKo&Fjj z*4emGFYIHgByogU!d|3iy(c#lowi;M#(1vcN67Jg`+hxTp;YF(y@gw7WG^Yfjsp32 zx8KiaGE7O;)by>C*IFKvv|F~#aJlQO9PgP)ku0!}cd5pRe4MLHcOIqGS6*D7$;DXG zFp1SsOkVlqxteXC?qUZ66l_!u-e=@)IayZ6fxQOG1+{@zj&PRphw}9Hoew zR?7``EnEQGGwvGQPDEzQe;wKT_e~p=oxQ{tOiQd~Ym|1s-xj5u6ntaNiM*(5;%!Nb zda0SN##(`r_g;5_gKP}_OVe|Kcwo9a%{C8!ibRqZF<=uh(Gbjp5L#$zV&i==S(NBD zXj81JU+!WvyOqhNkQm5fd)im}WzahkxMQ{>prbQW(Gk~;pN`86l+F!#ZiK{;WpUQ#!B zwiYZ3Z@Va&C-$jBb5kUFNtbH~%oxgAl-k zCMI`dw?*aUN8{Z`5G$??T0M3_zVQz;DWp#9qaZC$ok_wq6v-K|oe<$5?f?48{ z`>1zG+4^)Azbd1}#h{>HGmc8JSpE3+k+KmgSMpDJGn#ni+jOS|Bgljj!q}ySP;PG3 zkdTf3N(5XnDe&Au?F}i|1hc%+$@lD@ffPydD zF+!k@-H?Du^-xIK8Ik)}{j(SnJm<=|goQgoA_5XY=4q_QaINeH1Q_Bep92_BK*LP{BY$myB=U{jv`BrOJpayO90s=LA+ zrUhVkT?P1J-xc9SaCsDe2`=;8Boa^@=|1TlX-pT*~ diff --git a/docs/Queue-Speed-Without-Prioritize.png b/docs/Queue-Speed-Without-Prioritize.png index 19d2d8bdd920866ed75f222fdf411459ff770724..9b6e8c4eece159458b657e6d467ee890a265dcc5 100644 GIT binary patch literal 63281 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 literal 62880 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 CNjWS4 diff --git a/docs/Real-Time-vs-Linear-Time.png b/docs/Real-Time-vs-Linear-Time.png new file mode 100644 index 0000000000000000000000000000000000000000..579a81f29b28d371e5fa799db9e2a5e7b6e2b384 GIT binary patch literal 31438 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 B)^7j+ literal 0 HcmV?d00001 diff --git a/docs/Time-to-Send-and-Receive-VS-Bucket-Count.png b/docs/Time-to-Send-and-Receive-VS-Bucket-Count.png index 5e6ec37fa52a77cd60bf07cd7eca66dbdbf825d9..9d067fea602fa40dacdd5e8278b64f9c9ec9d520 100644 GIT binary patch literal 22490 zcmeIa2~<LOt8E=a0+IkxhC~w~CI}%RArKOB_W@gN-}nFBweI@vd%yd=e^*yQ&p!L? z{mjqrdG@~Xv#Zm}FV=sdrlz*idGGFnYHFXL)zm(&|7rBH>vNgXtdGq3v9gkeQ8-#4foIw_G)FZ+@ynBtb-l99SYizp@_(Q4l zPsbqKrRzTjAHR6E^Z@K5=$9BRup~9L9sX44uTRoN(AvK7YtaTjE+(w|Z};%cuDZ96 zIttDx(lfUq8|;U%vf;iI&%&Be9?`|PW`pkeC*SgyInMkbf2EE~PqOA*59@RH%>Q(` z#-Z-{%k84*ulI!37f~u7&DiRP_a5L=Xv!ezE=;g_D`o5c4D-U7n7MHZGK7HU{k}wf zTNisK+RuGBshCYVO|GBb=Q#JGo4!jOb_h1Nm6=FZwkvGJla1=69F>B{zqn-8-sp*% zfQ;?Oe+(h`RGmE{ErC_;X#H#_4De9?v$V^zZoT8iP1kfU9QGtL64sf~8|EekCDP6D zc5USW-DR=Qmv3wpI%{=Gi(=u|#x5<>D~LUeNF1H<_*LuU=@$VxoX~l&tAd8;Pw@`& z(;*F7hf=p4Iha|s72Vp04|+StR>jJ>`l`dqo9;!5qs8>Y^EyXr!%!L4AtxBj-_8zI zhwvY^>J`Tx?oJrd`lvvYyYlxl_q8M9YD)*1vk7Khn~haZ4Dj0~)|hxzZ0^i)q*X8R zVXd>}Wrh~%PhaLwi|~D?%b0t4SvH~mwn_;jUe=sz>k*-ej0tg~P^P-<$kyyxUXEkf zKoM2flZG_i)|p{psN`tUB7bP`?CYj&O&Hn1J+NP7YI@5Dr<9`P52Pe2VFeY%CEiEuhHe1}4r@oL(;Ju@;79!0=%Zfv^hio8SNCO05O6(!cNrSZY* z`BUVC9$)_z=AzBHk@6#4W=#)@l;v^M-#&lqvRv36H9>3Sk_Q>5WodJQxef{!$ug;Z zbH75yiq?!!BR9we9Hq#1eLz;YhiG8E$V*rBb+@LR((IW!}v}F#tysB`HdvKeN0ES0|(Zs5%CF5 zlB>TKNvclRBiegoW_>Hubb{K-v~bm)sCE+9v6W?!hjzy}axmjG)ja=?1Bu8Z-rYgy#oZ8jxFn3nOj*NSHj&r`9 zeCmxv>~vnzKqg^2G-llOf=ijec@dztwd%=fZ8%7F>g(hshiEw?+ucq82PpQO^Og;aG%U#8E-jvlFmVH_=BML&M zSISKfY?-Lgi5Loj3-O#)?j)0q>mxqvz(=cAU)Enk_lkRgtYg)66d>~4`Jf!}QbG$^dn|)AGjJ)mhO_|Rm^RBe65Yi0LV6-hV z;jkzy=iyQRD9m-zcg^G+jG*wI>{?sOCQVZ7OJFr-4Qj@#2IHn$nUU6_6E&iF0=gmU zSB6uxU2wkW`L3fvtrzXxJu}hvhq@i<{H)lVB7IFtqxizt+>^5fd9E~8pUlE{dhZFH z_^HHcDR$4)-)O_QR(DiQ(EU#8
P>O^v= z`E?Vu#nwg>iWc4BYQ|c`51aLU&H>Y`b;s*pF|R|K8Cx-sy|m?RIZP z1;l0gF%PO;Wy2BdXSrLh+RYb3LZ_p9?0+m$thc~?OZME{ZFf-gS%P3WEopQt zrg5d!8WNb8Gp&XHa?3Je%d0cyX)hvUtcJtfL}QVX-MM1fk5S&*og?@S4K1Q4aXt~l zm0J7PH_Nu@wS9#oN5Tkua_e;|2Yp-4HII!Sy4KS|b}wewDIF|gk0yLe%Ep`#O#^FD z_ebuNJyX&$-?R&yWTTLI0kbBnM^R%=4=>90Z5W=A1xmSUZyZ~+FZS)OqYZhokqx>L zKkgG%B#0#~`r1bw^1qunn#w_Da4Q7MF)d@~oA@G=-tj|Zw=EM-n)#;N&ExEx0L`}+ zxP=6m>p8DMIA6DG8Q~=)bGqz=M_*BMZHVIY9H*6OoUfJ|V6!Hwxk>jJKMu|6@MrA4 z!iQbQCo(5aOMXO>#ne7dXfsnGYSkylJ}GGE8Zpp4QLwqWwHal)=JuY@yNRuyNgERp zS#eI`w-L%M!k73_vG)xUv3V9v6}7B i)@qy(V{eqOXCltt>qWV>wQ^TQaRezG^ z4v;tY`Jo%fi{uhoPfUF=Ge2u4wsp36m%Cl=Y$z&k>=3Lzrfyis6tsTy43}V~R(#_E zu7=z|i?O?U_uvr92!Y4B>rF@w&XPL~+_Af#oGVH@vQ=OC6`~%s#&L&@E1q;B;U~oy zR`FaAxnZaM$KM%`Wk*k}!>EAp*c<6RJQQblrO$7x>JAOFZA7=CWvXg5{`7Ubq!1-H z`9LF90jyLJFLBUq#kZn2rP0EA%B#$7?M`NmJ-Ut=y{_|AD(Ox;$?y&!0*TQyC<@D_ zpEjo5sZP=3ISLALJ*;7@B*vg}v*_8xg`s`Y=Umx^6^BiCHl1qT-a8X^Uoh)rTh9=> z&4!42Nn&QBkL(>0^i?yh&9mHUCqHwXabj3j5h)E#nNxaUwJ*;5K`y3Zt^+GojturO z1qIpYJO;N=e+1RIR){8H?&gah6`OqQ#;cIp zFycmPCw<<+Xxo=tqwwI!yzRgK-hmi%$eC+!sEDRNxNdQm+Re{3gz{dtPV4Uc7{Y<#MZn-=pcNXJGcCj0ABYV}4!dILW?Iq28#mR@%U?_b3#Fz&*I*(C| zUh+4N%coBRW}ix;3@Tls4f{H_-BJCatGYkDd17xfKTC1=b@Kcj>Y9iy;O9g$dxMm5C~D4ztx$#IB9hs2G}dlp`Oj&72NYJUc_|s^W5atM z+**1FUw^<}o{Kp$GOL|)Vhz5%*w>ZBCW*Q8Le)H3tF@iNwFq4gKHyVtJl+()qji=m zqwnSP>%Enh)Dp8z)Rkae1#=e&yqCs>wRmx?M60X=W@;fZ@J zMY#+vEzRe`i!X%wogwSi!nBfp2g&r4!U(aeP&G;B;;u?Tvz0XHfLxRa+vNSx!pBA%;}K3rWJR9mpMp6 zQUrqrS-$@ecR-zJ%fxfS>E&qt@v zIrin-TCdpTVB7_QMU(26mn9MgLes!0>d1(j=X&89{AhX+5}yq0gKyJd2+!Qu%mHUF z_$}sj$GNlv?hOu|=-4R&M@uj2HL#nQSy5^1nyI}ca@^Qj5VVLsMQH;@#&lXRfzJq3 z*iSt*YaY9udA@y1Gm4jkn@=|mtsWb)zWP(2X1i|ZNW^`e?sj40UVX>Z!4Shn-DrE; z4Zesiv77@`li0J7Tdw9?8|jsPjemNB^!QHW9_~n(99tB7^yujPoRA&X0LbMe56!!C z-aM`Y&z!sAG}9D*gQ>IiT0ylhi0Cac9Mf!-weD;^zT|xjdPwyM>5j!o$9uB%B4*l2 zEr;TN_-5i{l^Y8czg|`8nBB629!PECy_JxfZX@tog)?cA7N^pL(e!pkaS^H24b9o~ ziMxsLZFzUFt#B`=^+!*~hKJQlj;!bJD1Ju>s|H_F+om~f9OlJo5bly-*|i5@$Q53R z_%m9NY4p64v&naLK5(S$8)B5r$adz8TSn0yDEyE=?Bg8fd}Ws3VM3$w?MF7RzGJI& zaCbDmjo*9Y(*2kXPfs_n43swXefGm8I?t{e?kN!Dp8r5L98�`OSC1BM6Yw#YIAL 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 literal 21655 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 diff --git a/docs/bench-report-no-repro.csv b/docs/bench-report-no-repro.csv index 6d12e52..e766c06 100644 --- a/docs/bench-report-no-repro.csv +++ b/docs/bench-report-no-repro.csv @@ -1,201 +1,201 @@ Total Items,Buckets,Removed,Escalated,Time Elapsed,Time to Send,Time to Receive -1000000,5,0,0,0.480352,0.124661,0.355690 -1000000,10,0,0,0.456221,0.123449,0.332772 -1000000,15,0,0,0.450382,0.123358,0.327024 -1000000,20,0,0,0.401607,0.121166,0.280440 -1000000,25,0,0,0.391769,0.120379,0.271390 -1000000,30,0,0,0.378708,0.127517,0.251192 -1000000,35,0,0,0.414640,0.124497,0.290143 -1000000,40,0,0,0.361109,0.122513,0.238597 -1000000,45,0,0,0.370787,0.130278,0.240508 -1000000,50,0,0,0.386700,0.120075,0.266625 -1000000,55,0,0,0.377624,0.123339,0.254285 -1000000,60,0,0,0.363803,0.124509,0.239294 -1000000,65,0,0,0.373651,0.130343,0.243308 -1000000,70,0,0,0.358304,0.129457,0.228846 -1000000,75,0,0,0.356953,0.129481,0.227471 -1000000,80,0,0,0.372278,0.136249,0.236029 -1000000,85,0,0,0.354502,0.131480,0.223022 -1000000,90,0,0,0.355176,0.128582,0.226594 -1000000,95,0,0,0.368184,0.134018,0.234166 -1000000,100,0,0,0.367679,0.127886,0.239793 -2000000,5,0,0,1.080151,0.270605,0.809546 -2000000,10,0,0,0.992683,0.242134,0.750549 -2000000,15,0,0,0.954768,0.247791,0.706977 -2000000,20,0,0,0.977516,0.244314,0.733203 -2000000,25,0,0,0.913640,0.241858,0.671782 -2000000,30,0,0,0.895809,0.249782,0.646027 -2000000,35,0,0,0.811538,0.245463,0.566074 -2000000,40,0,0,0.820050,0.250800,0.569249 -2000000,45,0,0,0.771446,0.248302,0.523144 -2000000,50,0,0,0.815834,0.242626,0.573208 -2000000,55,0,0,0.775734,0.252302,0.523432 -2000000,60,0,0,0.759699,0.251128,0.508572 -2000000,65,0,0,0.789265,0.260698,0.528567 -2000000,70,0,0,0.755390,0.262109,0.493281 -2000000,75,0,0,0.759171,0.256032,0.503139 -2000000,80,0,0,0.798577,0.261225,0.537352 -2000000,85,0,0,0.741509,0.261255,0.480254 -2000000,90,0,0,0.734015,0.263220,0.470795 -2000000,95,0,0,0.734381,0.259012,0.475370 -2000000,100,0,0,0.785392,0.252216,0.533176 -3000000,5,0,0,1.554099,0.356306,1.197792 -3000000,10,0,0,1.542341,0.358731,1.183610 -3000000,15,0,0,1.526235,0.363726,1.162509 -3000000,20,0,0,1.493434,0.362188,1.131246 -3000000,25,0,0,1.501360,0.363820,1.137541 -3000000,30,0,0,1.438228,0.374326,1.063902 -3000000,35,0,0,1.359310,0.373921,0.985390 -3000000,40,0,0,1.279624,0.371083,0.908540 -3000000,45,0,0,1.280505,0.375016,0.905489 -3000000,50,0,0,1.308245,0.366860,0.941384 -3000000,55,0,0,1.222253,0.384495,0.837757 -3000000,60,0,0,1.265391,0.379666,0.885725 -3000000,65,0,0,1.258930,0.391462,0.867469 -3000000,70,0,0,1.239573,0.389759,0.849813 -3000000,75,0,0,1.211239,0.381575,0.829664 -3000000,80,0,0,1.215992,0.395794,0.820198 -3000000,85,0,0,1.164770,0.384545,0.780225 -3000000,90,0,0,1.182612,0.390766,0.791847 -3000000,95,0,0,1.175426,0.404903,0.770524 -3000000,100,0,0,1.228954,0.381821,0.847133 -4000000,5,0,0,2.132397,0.480412,1.651985 -4000000,10,0,0,2.128339,0.476332,1.652007 -4000000,15,0,0,2.126882,0.498357,1.628524 -4000000,20,0,0,2.127416,0.488123,1.639293 -4000000,25,0,0,2.074483,0.493737,1.580746 -4000000,30,0,0,2.022730,0.489689,1.533041 -4000000,35,0,0,1.863314,0.501425,1.361889 -4000000,40,0,0,1.860621,0.501323,1.359299 -4000000,45,0,0,1.748524,0.495773,1.252750 -4000000,50,0,0,1.861381,0.489861,1.371520 -4000000,55,0,0,1.715253,0.497953,1.217300 -4000000,60,0,0,1.764435,0.498660,1.265775 -4000000,65,0,0,1.767213,0.516821,1.250392 -4000000,70,0,0,1.738856,0.513258,1.225598 -4000000,75,0,0,1.798200,0.523680,1.274520 -4000000,80,0,0,1.734383,0.517710,1.216673 -4000000,85,0,0,1.624824,0.529243,1.095581 -4000000,90,0,0,1.628978,0.516347,1.112631 -4000000,95,0,0,1.610213,0.536970,1.073243 -4000000,100,0,0,1.679644,0.501370,1.178274 -5000000,5,0,0,2.738972,0.602219,2.136753 -5000000,10,0,0,2.716369,0.602615,2.113755 -5000000,15,0,0,2.720195,0.603787,2.116407 -5000000,20,0,0,2.698476,0.609594,2.088882 -5000000,25,0,0,2.743277,0.608929,2.134348 -5000000,30,0,0,2.641273,0.617008,2.024265 -5000000,35,0,0,2.470825,0.629333,1.841492 -5000000,40,0,0,2.417312,0.628503,1.788810 -5000000,45,0,0,2.285351,0.620693,1.664658 -5000000,50,0,0,2.405780,0.607240,1.798540 -5000000,55,0,0,2.228662,0.621444,1.607218 -5000000,60,0,0,2.303424,0.623592,1.679832 -5000000,65,0,0,2.334081,0.651338,1.682743 -5000000,70,0,0,2.319969,0.646172,1.673797 -5000000,75,0,0,2.314917,0.646436,1.668481 -5000000,80,0,0,2.225577,0.644466,1.581111 -5000000,85,0,0,2.191136,0.653857,1.537280 -5000000,90,0,0,2.155392,0.655350,1.500042 -5000000,95,0,0,2.038051,0.660276,1.377775 -5000000,100,0,0,2.196845,0.630068,1.566777 -6000000,5,0,0,3.327895,0.762550,2.565346 -6000000,10,0,0,3.298723,0.734865,2.563858 -6000000,15,0,0,3.354630,0.732273,2.622357 -6000000,20,0,0,3.286660,0.739868,2.546792 -6000000,25,0,0,3.372318,0.732436,2.639882 -6000000,30,0,0,3.259724,0.740645,2.519079 -6000000,35,0,0,3.054829,0.743409,2.311419 -6000000,40,0,0,2.973856,0.738804,2.235052 -6000000,45,0,0,2.823585,0.742369,2.081216 -6000000,50,0,0,2.859516,0.734220,2.125296 -6000000,55,0,0,2.755520,0.761987,1.993533 -6000000,60,0,0,2.983694,0.767813,2.215880 -6000000,65,0,0,2.925565,0.789701,2.135864 -6000000,70,0,0,2.909070,0.782410,2.126660 -6000000,75,0,0,2.914689,0.771284,2.143406 -6000000,80,0,0,2.796472,0.772394,2.024078 -6000000,85,0,0,2.689242,0.793284,1.895957 -6000000,90,0,0,2.664311,0.795375,1.868936 -6000000,95,0,0,2.529320,0.790332,1.738988 -6000000,100,0,0,2.675950,0.757688,1.918262 -7000000,5,0,0,3.996704,0.924851,3.071853 -7000000,10,0,0,3.898082,0.844846,3.053236 -7000000,15,0,0,3.967545,0.881168,3.086377 -7000000,20,0,0,3.932736,0.866162,3.066574 -7000000,25,0,0,4.035503,0.855663,3.179841 -7000000,30,0,0,3.853679,0.858375,2.995304 -7000000,35,0,0,3.700756,0.892373,2.808384 -7000000,40,0,0,3.593856,0.857586,2.736270 -7000000,45,0,0,3.363648,0.878067,2.485581 -7000000,50,0,0,3.437134,0.850130,2.587004 -7000000,55,0,0,3.334999,0.877300,2.457699 -7000000,60,0,0,3.505047,0.907076,2.597971 -7000000,65,0,0,3.484218,0.915663,2.568555 -7000000,70,0,0,3.564678,0.910495,2.654184 -7000000,75,0,0,3.470754,0.900429,2.570326 -7000000,80,0,0,3.385602,0.902801,2.482802 -7000000,85,0,0,3.108434,0.925589,2.182845 -7000000,90,0,0,3.219396,0.924434,2.294962 -7000000,95,0,0,3.124498,0.910731,2.213767 -7000000,100,0,0,3.177028,0.885023,2.292005 -8000000,5,0,0,4.766666,1.096688,3.669978 -8000000,10,0,0,4.513911,0.982807,3.531104 -8000000,15,0,0,4.560598,0.971304,3.589294 -8000000,20,0,0,4.612083,0.984183,3.627900 -8000000,25,0,0,4.660397,0.970289,3.690108 -8000000,30,0,0,4.621589,0.995142,3.626447 -8000000,35,0,0,4.320914,0.986778,3.334136 -8000000,40,0,0,4.246617,0.985245,3.261372 -8000000,45,0,0,4.091949,0.993188,3.098761 -8000000,50,0,0,4.125746,0.973301,3.152445 -8000000,55,0,0,3.946131,1.012447,2.933684 -8000000,60,0,0,4.003785,0.998628,3.005157 -8000000,65,0,0,4.093362,1.044400,3.048962 -8000000,70,0,0,4.121861,1.032051,3.089810 -8000000,75,0,0,4.069124,1.030064,3.039060 -8000000,80,0,0,4.064636,1.064685,2.999951 -8000000,85,0,0,3.734827,1.033935,2.700892 -8000000,90,0,0,3.785738,1.036601,2.749137 -8000000,95,0,0,3.677863,1.073646,2.604217 -8000000,100,0,0,3.874679,1.020020,2.854659 -9000000,5,0,0,5.235279,1.212156,4.023123 -9000000,10,0,0,5.083309,1.092832,3.990477 -9000000,15,0,0,5.104618,1.091969,4.012649 -9000000,20,0,0,5.237394,1.097292,4.140102 -9000000,25,0,0,5.403803,1.096931,4.306872 -9000000,30,0,0,5.105784,1.122448,3.983336 -9000000,35,0,0,4.815739,1.119876,3.695863 -9000000,40,0,0,4.855958,1.126481,3.729477 -9000000,45,0,0,4.629845,1.125421,3.504425 -9000000,50,0,0,4.619241,1.078884,3.540357 -9000000,55,0,0,4.460644,1.125915,3.334729 -9000000,60,0,0,4.554042,1.105754,3.448288 -9000000,65,0,0,4.710019,1.191131,3.518888 -9000000,70,0,0,4.715202,1.163294,3.551908 -9000000,75,0,0,4.704559,1.150023,3.554536 -9000000,80,0,0,4.710057,1.219878,3.490179 -9000000,85,0,0,4.513430,1.195610,3.317819 -9000000,90,0,0,4.398654,1.203555,3.195100 -9000000,95,0,0,4.153370,1.206831,2.946539 -9000000,100,0,0,4.138215,1.138724,2.999492 -10000000,5,0,0,5.791414,1.291686,4.499728 -10000000,10,0,0,5.724184,1.220067,4.504117 -10000000,15,0,0,5.765862,1.215561,4.550301 -10000000,20,0,0,5.850229,1.234341,4.615889 -10000000,25,0,0,5.904642,1.235793,4.668849 -10000000,30,0,0,5.771626,1.240559,4.531067 -10000000,35,0,0,5.592988,1.265301,4.327687 -10000000,40,0,0,5.453986,1.259612,4.194374 -10000000,45,0,0,5.226291,1.245989,3.980302 -10000000,50,0,0,5.254268,1.228019,4.026249 -10000000,55,0,0,5.031442,1.276297,3.755144 -10000000,60,0,0,5.079279,1.243382,3.835896 -10000000,65,0,0,5.308688,1.297778,4.010910 -10000000,70,0,0,5.352717,1.295163,4.057554 -10000000,75,0,0,5.394536,1.307947,4.086589 -10000000,80,0,0,5.174465,1.290116,3.884350 -10000000,85,0,0,5.036778,1.329402,3.707376 -10000000,90,0,0,4.893278,1.301761,3.591517 -10000000,95,0,0,4.616589,1.314193,3.302397 -10000000,100,0,0,5.059062,1.274316,3.784747 +1000000,5,0,0,0.299611,0.102242,0.197369 +1000000,10,0,0,0.272608,0.087199,0.185408 +1000000,15,0,0,0.259758,0.095315,0.164443 +1000000,20,0,0,0.260309,0.092148,0.168160 +1000000,25,0,0,0.280387,0.094975,0.185412 +1000000,30,0,0,0.257914,0.095800,0.162114 +1000000,35,0,0,0.255534,0.100729,0.154805 +1000000,40,0,0,0.256493,0.097555,0.158938 +1000000,45,0,0,0.254273,0.102262,0.152011 +1000000,50,0,0,0.277551,0.096780,0.180772 +1000000,55,0,0,0.253127,0.104084,0.149044 +1000000,60,0,0,0.260744,0.101133,0.159611 +1000000,65,0,0,0.261073,0.117157,0.143916 +1000000,70,0,0,0.259572,0.104614,0.154957 +1000000,75,0,0,0.282809,0.105830,0.176978 +1000000,80,0,0,0.262717,0.104822,0.157895 +1000000,85,0,0,0.250385,0.109471,0.140913 +1000000,90,0,0,0.260973,0.107594,0.153379 +1000000,95,0,0,0.254907,0.109761,0.145146 +1000000,100,0,0,0.289890,0.104555,0.185335 +2000000,5,0,0,0.609668,0.177877,0.431791 +2000000,10,0,0,0.594733,0.177587,0.417146 +2000000,15,0,0,0.546340,0.186682,0.359658 +2000000,20,0,0,0.551118,0.187527,0.363591 +2000000,25,0,0,0.581696,0.189962,0.391734 +2000000,30,0,0,0.533315,0.192504,0.340811 +2000000,35,0,0,0.523529,0.201488,0.322041 +2000000,40,0,0,0.542160,0.196062,0.346098 +2000000,45,0,0,0.533204,0.208643,0.324562 +2000000,50,0,0,0.585641,0.194380,0.391261 +2000000,55,0,0,0.524163,0.209812,0.314350 +2000000,60,0,0,0.549808,0.208447,0.341361 +2000000,65,0,0,0.537853,0.222556,0.315297 +2000000,70,0,0,0.541593,0.215260,0.326333 +2000000,75,0,0,0.568471,0.213114,0.355356 +2000000,80,0,0,0.541440,0.209655,0.331786 +2000000,85,0,0,0.550112,0.233570,0.316543 +2000000,90,0,0,0.558724,0.226444,0.332280 +2000000,95,0,0,0.539893,0.221556,0.318337 +2000000,100,0,0,0.598759,0.209752,0.389007 +3000000,5,0,0,0.948781,0.265301,0.683480 +3000000,10,0,0,0.929375,0.263156,0.666219 +3000000,15,0,0,0.860883,0.280835,0.580048 +3000000,20,0,0,0.892551,0.282804,0.609747 +3000000,25,0,0,0.919328,0.288656,0.630673 +3000000,30,0,0,0.838356,0.289914,0.548442 +3000000,35,0,0,0.814004,0.303397,0.510607 +3000000,40,0,0,0.844759,0.299385,0.545374 +3000000,45,0,0,0.814474,0.310257,0.504216 +3000000,50,0,0,0.899913,0.290924,0.608989 +3000000,55,0,0,0.815715,0.315817,0.499898 +3000000,60,0,0,0.827638,0.305507,0.522131 +3000000,65,0,0,0.822629,0.330428,0.492201 +3000000,70,0,0,0.823191,0.317380,0.505811 +3000000,75,0,0,0.878452,0.320445,0.558007 +3000000,80,0,0,0.847718,0.334119,0.513600 +3000000,85,0,0,0.818522,0.332896,0.485626 +3000000,90,0,0,0.827470,0.322782,0.504689 +3000000,95,0,0,0.828608,0.335430,0.493178 +3000000,100,0,0,0.896185,0.316362,0.579823 +4000000,5,0,0,1.275384,0.353573,0.921811 +4000000,10,0,0,1.259566,0.349613,0.909953 +4000000,15,0,0,1.185705,0.373355,0.812350 +4000000,20,0,0,1.229322,0.371926,0.857396 +4000000,25,0,0,1.248511,0.391796,0.856715 +4000000,30,0,0,1.155563,0.387860,0.767703 +4000000,35,0,0,1.116387,0.405818,0.710569 +4000000,40,0,0,1.132215,0.391490,0.740726 +4000000,45,0,0,1.100944,0.415700,0.685244 +4000000,50,0,0,1.224761,0.389984,0.834778 +4000000,55,0,0,1.099957,0.418699,0.681258 +4000000,60,0,0,1.127526,0.406180,0.721346 +4000000,65,0,0,1.117332,0.449128,0.668204 +4000000,70,0,0,1.124202,0.422037,0.702166 +4000000,75,0,0,1.205904,0.430433,0.775471 +4000000,80,0,0,1.129890,0.420716,0.709175 +4000000,85,0,0,1.112421,0.439064,0.673357 +4000000,90,0,0,1.141982,0.453779,0.688203 +4000000,95,0,0,1.112918,0.442525,0.670394 +4000000,100,0,0,1.243148,0.430701,0.812447 +5000000,5,0,0,1.665526,0.456298,1.209229 +5000000,10,0,0,1.641645,0.435357,1.206288 +5000000,15,0,0,1.545291,0.468748,1.076544 +5000000,20,0,0,1.602258,0.464675,1.137583 +5000000,25,0,0,1.633946,0.476872,1.157074 +5000000,30,0,0,1.469274,0.482805,0.986469 +5000000,35,0,0,1.465147,0.515793,0.949354 +5000000,40,0,0,1.513597,0.491676,1.021921 +5000000,45,0,0,1.433914,0.525108,0.908805 +5000000,50,0,0,1.563045,0.486934,1.076110 +5000000,55,0,0,1.401496,0.525712,0.875784 +5000000,60,0,0,1.439167,0.507205,0.931962 +5000000,65,0,0,1.433756,0.551929,0.881827 +5000000,70,0,0,1.418836,0.529648,0.889187 +5000000,75,0,0,1.538966,0.535782,1.003183 +5000000,80,0,0,1.490979,0.527986,0.962993 +5000000,85,0,0,1.396409,0.556990,0.839419 +5000000,90,0,0,1.431437,0.536418,0.895019 +5000000,95,0,0,1.408862,0.557475,0.851387 +5000000,100,0,0,1.551802,0.524031,1.027771 +6000000,5,0,0,1.994865,0.531572,1.463293 +6000000,10,0,0,1.981524,0.518084,1.463440 +6000000,15,0,0,1.913569,0.576628,1.336941 +6000000,20,0,0,1.981721,0.575521,1.406201 +6000000,25,0,0,2.007833,0.574681,1.433152 +6000000,30,0,0,1.862922,0.593602,1.269320 +6000000,35,0,0,1.825437,0.607342,1.218095 +6000000,40,0,0,1.847371,0.587649,1.259721 +6000000,45,0,0,1.777238,0.625635,1.151603 +6000000,50,0,0,1.902538,0.596186,1.306351 +6000000,55,0,0,1.747671,0.630350,1.117321 +6000000,60,0,0,1.777941,0.609656,1.168285 +6000000,65,0,0,1.761853,0.669869,1.091983 +6000000,70,0,0,1.747498,0.649966,1.097532 +6000000,75,0,0,1.823992,0.653060,1.170932 +6000000,80,0,0,1.719642,0.633770,1.085871 +6000000,85,0,0,1.720246,0.657722,1.062524 +6000000,90,0,0,1.747043,0.663781,1.083262 +6000000,95,0,0,1.723295,0.666883,1.056412 +6000000,100,0,0,1.853117,0.626701,1.226417 +7000000,5,0,0,2.359387,0.637331,1.722056 +7000000,10,0,0,2.343500,0.614716,1.728783 +7000000,15,0,0,2.299718,0.656829,1.642890 +7000000,20,0,0,2.268033,0.666258,1.601775 +7000000,25,0,0,2.398852,0.673614,1.725239 +7000000,30,0,0,2.209104,0.674182,1.534922 +7000000,35,0,0,2.185483,0.726943,1.458540 +7000000,40,0,0,2.121128,0.686498,1.434630 +7000000,45,0,0,2.101207,0.734819,1.366388 +7000000,50,0,0,2.258733,0.693813,1.564920 +7000000,55,0,0,2.051698,0.734172,1.317526 +7000000,60,0,0,2.088576,0.716862,1.371713 +7000000,65,0,0,2.044326,0.776927,1.267399 +7000000,70,0,0,2.050183,0.737032,1.313151 +7000000,75,0,0,2.194141,0.745370,1.448771 +7000000,80,0,0,2.059469,0.734786,1.324683 +7000000,85,0,0,2.004764,0.767040,1.237724 +7000000,90,0,0,2.038187,0.767716,1.270472 +7000000,95,0,0,2.023765,0.775980,1.247785 +7000000,100,0,0,2.192352,0.737693,1.454659 +8000000,5,0,0,2.726530,0.710556,2.015974 +8000000,10,0,0,2.698604,0.693520,2.005084 +8000000,15,0,0,2.607604,0.744898,1.862705 +8000000,20,0,0,2.638865,0.756051,1.882814 +8000000,25,0,0,2.708467,0.765876,1.942591 +8000000,30,0,0,2.567731,0.781442,1.786289 +8000000,35,0,0,2.525473,0.806957,1.718515 +8000000,40,0,0,2.584270,0.799242,1.785028 +8000000,45,0,0,2.403296,0.828001,1.575295 +8000000,50,0,0,2.626148,0.790325,1.835822 +8000000,55,0,0,2.334984,0.843020,1.491964 +8000000,60,0,0,2.444903,0.809100,1.635804 +8000000,65,0,0,2.368305,0.876018,1.492287 +8000000,70,0,0,2.337441,0.854867,1.482574 +8000000,75,0,0,2.528316,0.860259,1.668057 +8000000,80,0,0,2.418564,0.859025,1.559539 +8000000,85,0,0,2.317383,0.888274,1.429109 +8000000,90,0,0,2.305787,0.854597,1.451190 +8000000,95,0,0,2.323595,0.892250,1.431345 +8000000,100,0,0,2.512742,0.837625,1.675117 +9000000,5,0,0,3.088118,0.801795,2.286323 +9000000,10,0,0,3.016664,0.773738,2.242926 +9000000,15,0,0,2.962284,0.848278,2.114006 +9000000,20,0,0,3.038835,0.840462,2.198373 +9000000,25,0,0,3.132462,0.860516,2.271946 +9000000,30,0,0,2.935913,0.869216,2.066697 +9000000,35,0,0,2.850381,0.909132,1.941249 +9000000,40,0,0,2.821658,0.882031,1.939627 +9000000,45,0,0,2.740740,0.926575,1.814165 +9000000,50,0,0,2.992404,0.889602,2.102802 +9000000,55,0,0,2.657494,0.947951,1.709543 +9000000,60,0,0,2.755548,0.920515,1.835033 +9000000,65,0,0,2.697776,0.994813,1.702962 +9000000,70,0,0,2.735703,0.958497,1.777206 +9000000,75,0,0,2.878154,0.964515,1.913638 +9000000,80,0,0,2.701406,0.948898,1.752508 +9000000,85,0,0,2.627427,0.986885,1.640542 +9000000,90,0,0,2.692035,0.968686,1.723349 +9000000,95,0,0,2.628978,1.001966,1.627012 +9000000,100,0,0,2.911288,0.946697,1.964591 +10000000,5,0,0,3.373120,0.894031,2.479089 +10000000,10,0,0,3.343354,0.859347,2.484007 +10000000,15,0,0,3.254257,0.935829,2.318427 +10000000,20,0,0,3.367681,0.930169,2.437512 +10000000,25,0,0,3.329759,0.957379,2.372380 +10000000,30,0,0,3.183146,0.961188,2.221958 +10000000,35,0,0,3.089384,1.005245,2.084139 +10000000,40,0,0,3.269105,0.993396,2.275709 +10000000,45,0,0,3.125804,1.032544,2.093261 +10000000,50,0,0,3.288299,0.983132,2.305166 +10000000,55,0,0,3.055545,1.045616,2.009929 +10000000,60,0,0,3.114188,1.018425,2.095763 +10000000,65,0,0,3.031843,1.111115,1.920729 +10000000,70,0,0,2.989296,1.050623,1.938673 +10000000,75,0,0,3.142924,1.071917,2.071007 +10000000,80,0,0,3.025720,1.066684,1.959036 +10000000,85,0,0,2.929269,1.091306,1.837963 +10000000,90,0,0,2.949445,1.080172,1.869273 +10000000,95,0,0,2.931059,1.101077,1.829982 +10000000,100,0,0,3.207558,1.056457,2.151101 diff --git a/docs/bench-report-repro.csv b/docs/bench-report-repro.csv index e85302b..a3cdf88 100644 --- a/docs/bench-report-repro.csv +++ b/docs/bench-report-repro.csv @@ -1,201 +1,201 @@ Total Items,Buckets,Removed,Escalated,Time Elapsed,Time to Send,Time to Receive -1000000,5,0,0,0.614072,0.252223,0.361849 -1000000,10,0,0,0.487301,0.166346,0.320954 -1000000,15,0,0,0.465424,0.161509,0.303915 -1000000,20,0,0,0.429060,0.160433,0.268626 -1000000,25,0,0,0.422653,0.151694,0.270959 -1000000,30,0,0,0.412588,0.153395,0.259193 -1000000,35,0,0,0.411344,0.146609,0.264735 -1000000,40,0,0,0.372737,0.144614,0.228123 -1000000,45,0,0,0.381298,0.149845,0.231453 -1000000,50,0,0,0.421840,0.157114,0.264726 -1000000,55,0,0,0.367223,0.134796,0.232427 -1000000,60,0,0,0.373999,0.136299,0.237700 -1000000,65,0,0,0.390020,0.145616,0.244404 -1000000,70,0,0,0.364162,0.136035,0.228127 -1000000,75,0,0,0.368686,0.143142,0.225544 -1000000,80,0,0,0.377908,0.146060,0.231848 -1000000,85,0,0,0.383652,0.148589,0.235063 -1000000,90,0,0,0.376831,0.145537,0.231294 -1000000,95,0,0,0.379045,0.150784,0.228262 -1000000,100,0,0,0.381100,0.154579,0.226521 -2000000,5,0,8780,1.172073,0.389456,0.782617 -2000000,10,0,0,1.010092,0.260968,0.749124 -2000000,15,0,0,0.968993,0.257443,0.711549 -2000000,20,0,0,0.954110,0.265092,0.689018 -2000000,25,0,0,0.971114,0.265140,0.705974 -2000000,30,0,0,0.895227,0.261474,0.633753 -2000000,35,0,0,0.851089,0.282734,0.568355 -2000000,40,0,0,0.833119,0.276862,0.556257 -2000000,45,0,0,0.789324,0.271361,0.517963 -2000000,50,0,0,0.863200,0.296498,0.566703 -2000000,55,0,0,0.808548,0.285560,0.522989 -2000000,60,0,0,0.823831,0.283021,0.540809 -2000000,65,0,0,0.825488,0.302481,0.523006 -2000000,70,0,0,0.840942,0.318196,0.522745 -2000000,75,0,0,0.816378,0.308826,0.507552 -2000000,80,0,0,0.799257,0.281457,0.517800 -2000000,85,0,0,0.755920,0.262167,0.493753 -2000000,90,0,0,0.742541,0.272914,0.469628 -2000000,95,0,0,0.753119,0.275580,0.477539 -2000000,100,0,0,0.809352,0.269598,0.539754 -3000000,5,0,525147,1.897074,0.512351,1.384723 -3000000,10,0,432326,1.782897,0.448884,1.334013 -3000000,15,0,585831,1.836801,0.471124,1.365677 -3000000,20,0,700310,1.894317,0.472125,1.422191 -3000000,25,0,761735,1.947429,0.510474,1.436955 -3000000,30,0,523822,1.749668,0.441676,1.307992 -3000000,35,0,292013,1.520458,0.380246,1.140212 -3000000,40,0,194007,1.451599,0.384171,1.067428 -3000000,45,0,90511,1.322008,0.398315,0.923692 -3000000,50,0,97903,1.333236,0.365696,0.967540 -3000000,55,0,134423,1.356082,0.396705,0.959377 -3000000,60,0,174357,1.398783,0.408589,0.990194 -3000000,65,0,165502,1.356271,0.391172,0.965099 -3000000,70,0,207399,1.387111,0.403218,0.983893 -3000000,75,0,158505,1.338503,0.402033,0.936470 -3000000,80,0,117314,1.275055,0.391559,0.883496 -3000000,85,0,80291,1.230854,0.405083,0.825771 -3000000,90,0,67175,1.220653,0.414606,0.806047 -3000000,95,0,60570,1.241768,0.417398,0.824370 -3000000,100,0,59876,1.285382,0.397571,0.887811 -4000000,5,0,2052180,2.730309,0.622339,2.107969 -4000000,10,0,1386031,2.485446,0.505215,1.980231 -4000000,15,0,1665887,2.540234,0.500777,2.039457 -4000000,20,0,1862791,2.602652,0.510908,2.091744 -4000000,25,0,1963693,2.630047,0.509664,2.120383 -4000000,30,0,1584274,2.424148,0.509078,1.915070 -4000000,35,0,1094349,2.209760,0.503182,1.706578 -4000000,40,0,923556,2.137053,0.522911,1.614142 -4000000,45,0,555130,1.956664,0.509600,1.447064 -4000000,50,0,550534,1.973188,0.520544,1.452644 -4000000,55,0,627424,1.944976,0.506746,1.438230 -4000000,60,0,806981,2.040783,0.524901,1.515882 -4000000,65,0,1011482,2.061003,0.535786,1.525217 -4000000,70,0,1170764,2.151871,0.532845,1.619026 -4000000,75,0,1233862,2.208219,0.540444,1.667775 -4000000,80,0,1268491,2.120460,0.537724,1.582736 -4000000,85,0,867423,1.932836,0.525573,1.407263 -4000000,90,0,723756,1.886115,0.538142,1.347973 -4000000,95,0,516079,1.787550,0.571406,1.216145 -4000000,100,0,324528,1.791376,0.529586,1.261790 -5000000,5,0,4013480,3.484860,0.744488,2.740372 -5000000,10,0,3723893,3.463461,0.625551,2.837910 -5000000,15,0,4392646,3.611652,0.653881,2.957771 -5000000,20,0,4432753,3.624666,0.635287,2.989379 -5000000,25,0,5158887,3.839290,0.632956,3.206334 -5000000,30,0,4327634,3.506346,0.639295,2.867051 -5000000,35,0,3280483,3.081920,0.628154,2.453766 -5000000,40,0,3261591,3.128934,0.649785,2.479149 -5000000,45,0,2203708,2.704719,0.651279,2.053440 -5000000,50,0,1829039,2.565912,0.641004,1.924908 -5000000,55,0,1919433,2.596977,0.632209,1.964768 -5000000,60,0,2568018,2.815486,0.662384,2.153103 -5000000,65,0,3082863,2.940506,0.676709,2.263797 -5000000,70,0,3296707,3.072556,0.648120,2.424436 -5000000,75,0,3646389,3.071129,0.672348,2.398780 -5000000,80,0,3241118,2.970847,0.675929,2.294918 -5000000,85,0,2377000,2.677772,0.658825,2.018947 -5000000,90,0,2398246,2.733234,0.684645,2.048589 -5000000,95,0,1738847,2.509009,0.703938,1.805071 -5000000,100,0,1130174,2.332412,0.656768,1.675644 -6000000,5,0,7874560,4.660791,0.862922,3.797869 -6000000,10,0,6538673,4.350979,0.756016,3.594964 -6000000,15,0,7671927,4.683158,0.753397,3.929761 -6000000,20,0,7866072,4.793124,0.755119,4.038005 -6000000,25,0,8244137,4.895965,0.752644,4.143321 -6000000,30,0,7854925,4.768136,0.763280,4.004856 -6000000,35,0,6347304,4.200039,0.758310,3.441730 -6000000,40,0,5246034,3.884311,0.753668,3.130643 -6000000,45,0,4674411,3.618269,0.787706,2.830563 -6000000,50,0,4375865,3.581855,0.764940,2.816915 -6000000,55,0,4593503,3.577487,0.768592,2.808895 -6000000,60,0,5368031,3.872888,0.778848,3.094041 -6000000,65,0,5902275,3.999542,0.779623,3.219919 -6000000,70,0,6479259,4.157115,0.826905,3.330210 -6000000,75,0,6707107,4.237924,0.798023,3.439901 -6000000,80,0,6068588,3.949625,0.777362,3.172263 -6000000,85,0,5511508,3.704121,0.813528,2.890594 -6000000,90,0,4921397,3.567229,0.805057,2.762172 -6000000,95,0,4071941,3.284678,0.823504,2.461175 -6000000,100,0,3307903,3.140478,0.757465,2.383013 -7000000,5,0,10942236,5.697644,1.619642,4.078001 -7000000,10,0,10270453,5.512758,0.885017,4.627741 -7000000,15,51163,11869644,6.008075,0.911135,5.096941 -7000000,20,0,11636610,6.075285,0.873067,5.202218 -7000000,25,477954,12231702,6.407728,0.890165,5.517562 -7000000,30,96719,12021027,6.172390,0.882817,5.289573 -7000000,35,0,10750107,5.529346,0.930081,4.599266 -7000000,40,0,9268594,5.031654,0.874133,4.157521 -7000000,45,0,8346097,4.697675,0.914095,3.783580 -7000000,50,0,7876007,4.542001,0.855008,3.686992 -7000000,55,0,8023334,4.528474,0.913997,3.614478 -7000000,60,0,8419225,4.699484,0.875165,3.824319 -7000000,65,0,10571310,5.321135,0.971543,4.349592 -7000000,70,0,10196521,5.205932,0.949261,4.256671 -7000000,75,3087,11225914,5.737270,0.896307,4.840963 -7000000,80,0,10444634,5.338575,0.948241,4.390334 -7000000,85,0,9412025,4.922358,0.950560,3.971799 -7000000,90,0,8181797,4.566340,0.949068,3.617272 -7000000,95,0,6492478,4.068910,0.927911,3.140998 -7000000,100,0,6460742,4.072999,0.926043,3.146956 -8000000,5,1547679,13974990,6.611841,1.782974,4.828866 -8000000,10,1349023,13819521,6.522988,1.848314,4.674674 -8000000,15,1250438,14768979,7.003629,2.103466,4.900163 -8000000,20,1944856,13511558,6.956602,2.188037,4.768566 -8000000,25,3385314,13241958,7.170449,2.433094,4.737355 -8000000,30,2981814,13113729,6.890043,2.399469,4.490574 -8000000,35,484684,14308929,6.553872,2.096342,4.457529 -8000000,40,490274,13323517,6.151847,1.925466,4.226381 -8000000,45,120202,12008897,5.750389,1.760990,3.989398 -8000000,50,66021,11455779,5.452624,1.621572,3.831053 -8000000,55,0,11529740,5.543609,1.761989,3.781620 -8000000,60,0,12567514,5.892941,1.912218,3.980723 -8000000,65,169118,13824651,6.379142,2.144917,4.234224 -8000000,70,265625,13805616,6.537384,2.167549,4.369835 -8000000,75,1279731,13029862,6.451706,2.322877,4.128829 -8000000,80,467329,13615753,6.470692,2.228395,4.242297 -8000000,85,0,12772989,5.942393,2.074334,3.868059 -8000000,90,0,11531293,5.427606,1.925593,3.502014 -8000000,95,0,10702063,5.198019,1.819703,3.378316 -8000000,100,0,9408805,4.834727,1.479196,3.355530 -9000000,5,3037646,16685247,7.339630,1.977169,5.362461 -9000000,10,2628172,16768556,7.522570,1.967070,5.555500 -9000000,15,3772889,14626740,7.591316,2.319846,5.271470 -9000000,20,3825503,14272986,7.727109,2.297578,5.429531 -9000000,25,4504975,14511430,7.784240,2.518145,5.266096 -9000000,30,4258811,14570970,7.631955,2.542294,5.089661 -9000000,35,2876804,14663941,7.512055,2.261533,5.250523 -9000000,40,1875466,16302585,7.138127,2.045630,5.092497 -9000000,45,1616716,15099770,6.686282,1.942530,4.743752 -9000000,50,1475924,14625713,6.340199,1.755059,4.585140 -9000000,55,1278398,14987535,6.506340,1.964767,4.541573 -9000000,60,1850110,16260263,7.177482,2.055182,5.122300 -9000000,65,1847096,14951605,7.119351,2.290011,4.829341 -9000000,70,2639700,14665600,7.203971,2.357735,4.846236 -9000000,75,3854553,14674516,7.514475,2.570441,4.944033 -9000000,80,2654872,14337311,7.131127,2.354073,4.777055 -9000000,85,1418711,15076827,7.112464,2.283614,4.828851 -9000000,90,1085103,15473669,6.721262,2.121744,4.599519 -9000000,95,470511,14010402,6.074357,1.911429,4.162928 -9000000,100,362220,13206922,5.821822,1.605431,4.216391 -10000000,5,4380122,19328044,8.223477,2.138010,6.085467 -10000000,10,4032912,18410204,8.479764,2.137043,6.342721 -10000000,15,5134573,15854102,8.336251,2.409270,5.926981 -10000000,20,5372727,15739193,8.478422,2.512243,5.966179 -10000000,25,5530225,16266760,8.678549,2.709208,5.969340 -10000000,30,5569506,16286334,8.637668,2.668475,5.969193 -10000000,35,4335864,15901036,8.064952,2.387045,5.677907 -10000000,40,3746996,16632197,8.214258,2.261024,5.953234 -10000000,45,2959391,18071628,7.543156,2.018661,5.524495 -10000000,50,3050989,17761921,7.281090,1.926665,5.354425 -10000000,55,2446851,17872804,7.314149,2.056313,5.257835 -10000000,60,3281209,17727995,7.993614,2.200846,5.792768 -10000000,65,3397266,16003254,7.593191,2.398930,5.194261 -10000000,70,3815474,15875834,7.805462,2.413468,5.391994 -10000000,75,4746834,15989428,8.195779,2.663577,5.532202 -10000000,80,4105434,15890037,7.991832,2.515989,5.475843 -10000000,85,3263554,15789517,7.571546,2.372554,5.198992 -10000000,90,3259600,17271474,7.993723,2.224401,5.769322 -10000000,95,2122795,17905826,7.228344,2.135265,5.093080 -10000000,100,1662459,16302933,6.542334,1.763724,4.778610 +1000000,5,0,0,0.304796,0.119714,0.185083 +1000000,10,0,0,0.269756,0.099647,0.170109 +1000000,15,0,0,0.259180,0.105990,0.153191 +1000000,20,0,0,0.264456,0.103014,0.161443 +1000000,25,0,0,0.269950,0.102658,0.167292 +1000000,30,0,0,0.253448,0.101945,0.151502 +1000000,35,0,0,0.246981,0.102416,0.144565 +1000000,40,0,0,0.252654,0.099290,0.153364 +1000000,45,0,0,0.245097,0.103019,0.142077 +1000000,50,0,0,0.273276,0.102957,0.170319 +1000000,55,0,0,0.234855,0.098946,0.135909 +1000000,60,0,0,0.247402,0.097298,0.150103 +1000000,65,0,0,0.243134,0.106300,0.136834 +1000000,70,0,0,0.248846,0.103436,0.145410 +1000000,75,0,0,0.269639,0.104829,0.164810 +1000000,80,0,0,0.241489,0.103680,0.137810 +1000000,85,0,0,0.247136,0.111698,0.135439 +1000000,90,0,0,0.249959,0.106639,0.143320 +1000000,95,0,0,0.243798,0.110067,0.133731 +1000000,100,0,0,0.271632,0.102914,0.168718 +2000000,5,0,0,0.591920,0.184654,0.407266 +2000000,10,0,0,0.567438,0.176850,0.390589 +2000000,15,0,0,0.536086,0.192238,0.343848 +2000000,20,0,0,0.542417,0.188070,0.354347 +2000000,25,0,0,0.558974,0.189228,0.369746 +2000000,30,0,0,0.523176,0.196181,0.326994 +2000000,35,0,0,0.513190,0.204328,0.308862 +2000000,40,0,0,0.520199,0.196777,0.323423 +2000000,45,0,0,0.508297,0.205507,0.302790 +2000000,50,0,0,0.570015,0.203260,0.366756 +2000000,55,0,0,0.520087,0.212588,0.307499 +2000000,60,0,0,0.532947,0.208120,0.324827 +2000000,65,0,0,0.518420,0.219160,0.299260 +2000000,70,0,0,0.522839,0.212609,0.310230 +2000000,75,0,0,0.571909,0.212966,0.358943 +2000000,80,0,0,0.534415,0.211290,0.323125 +2000000,85,0,0,0.509377,0.211505,0.297872 +2000000,90,0,0,0.518628,0.201433,0.317196 +2000000,95,0,0,0.495041,0.207214,0.287827 +2000000,100,0,0,0.570585,0.199427,0.371157 +3000000,5,0,0,0.943249,0.289898,0.653351 +3000000,10,0,0,0.888884,0.271484,0.617400 +3000000,15,0,0,0.858038,0.291150,0.566887 +3000000,20,0,0,0.870721,0.286143,0.584578 +3000000,25,0,0,0.913674,0.304130,0.609543 +3000000,30,0,0,0.834930,0.322482,0.512448 +3000000,35,0,0,0.814788,0.298290,0.516497 +3000000,40,0,0,0.839414,0.299988,0.539426 +3000000,45,0,0,0.797161,0.298722,0.498439 +3000000,50,0,0,0.908197,0.281542,0.626655 +3000000,55,0,0,0.783287,0.305768,0.477518 +3000000,60,0,0,0.807669,0.293050,0.514619 +3000000,65,0,0,0.793853,0.313138,0.480716 +3000000,70,0,0,0.787560,0.304600,0.482960 +3000000,75,0,0,0.873677,0.307252,0.566425 +3000000,80,0,0,0.807961,0.303729,0.504232 +3000000,85,0,0,0.788310,0.315988,0.472323 +3000000,90,0,0,0.812653,0.313140,0.499513 +3000000,95,0,0,0.798832,0.319401,0.479432 +3000000,100,0,0,0.900047,0.305609,0.594438 +4000000,5,0,0,1.312452,0.354414,0.958038 +4000000,10,0,32992,1.293093,0.346123,0.946971 +4000000,15,0,49476,1.213818,0.364399,0.849419 +4000000,20,0,41400,1.209091,0.365644,0.843447 +4000000,25,0,34360,1.220894,0.371361,0.849533 +4000000,30,0,8676,1.132169,0.374630,0.757539 +4000000,35,0,0,1.096359,0.398387,0.697972 +4000000,40,0,27148,1.119752,0.386061,0.733691 +4000000,45,0,0,1.087228,0.400773,0.686456 +4000000,50,0,40183,1.213417,0.382192,0.831225 +4000000,55,0,0,1.088623,0.413009,0.675613 +4000000,60,0,15504,1.090491,0.392868,0.697622 +4000000,65,0,22576,1.110595,0.427184,0.683411 +4000000,70,0,20230,1.127521,0.421596,0.705925 +4000000,75,0,45125,1.265487,0.420677,0.844810 +4000000,80,0,15228,1.166686,0.424777,0.741909 +4000000,85,0,30407,1.131428,0.444573,0.686855 +4000000,90,0,2490,1.149576,0.436162,0.713414 +4000000,95,0,29242,1.137965,0.441198,0.696767 +4000000,100,0,50576,1.272764,0.414959,0.857805 +5000000,5,0,162973,1.719990,0.448206,1.271784 +5000000,10,0,253004,1.712342,0.436731,1.275610 +5000000,15,0,137642,1.651285,0.464859,1.186427 +5000000,20,0,252541,1.645313,0.472497,1.172815 +5000000,25,0,240395,1.697715,0.477384,1.220331 +5000000,30,0,126376,1.611649,0.486436,1.125213 +5000000,35,0,127226,1.549424,0.501555,1.047870 +5000000,40,0,142578,1.612192,0.487048,1.125144 +5000000,45,0,100790,1.506562,0.510956,0.995606 +5000000,50,0,107424,1.697497,0.487615,1.209881 +5000000,55,0,97499,1.507024,0.527339,0.979685 +5000000,60,0,232640,1.524929,0.507852,1.017077 +5000000,65,0,112141,1.505165,0.550458,0.954707 +5000000,70,0,116809,1.488755,0.524087,0.964668 +5000000,75,0,278950,1.685253,0.544767,1.140487 +5000000,80,0,154473,1.563309,0.535400,1.027909 +5000000,85,0,107231,1.494527,0.545171,0.949356 +5000000,90,0,117542,1.506748,0.534769,0.971979 +5000000,95,0,119753,1.508129,0.548399,0.959730 +5000000,100,0,93336,1.646859,0.538526,1.108333 +6000000,5,0,422312,2.092982,0.540849,1.552133 +6000000,10,0,404027,2.128459,0.537490,1.590969 +6000000,15,0,366277,2.060288,0.560244,1.500044 +6000000,20,0,377486,2.091494,0.559321,1.532173 +6000000,25,0,259797,2.108112,0.575710,1.532403 +6000000,30,0,437778,2.063193,0.589612,1.473581 +6000000,35,0,399060,1.910304,0.602500,1.307804 +6000000,40,0,395199,2.006413,0.585060,1.421354 +6000000,45,0,523849,1.946533,0.621970,1.324562 +6000000,50,0,319729,2.032188,0.583699,1.448488 +6000000,55,0,482565,1.963444,0.625372,1.338072 +6000000,60,0,493936,1.985351,0.606744,1.378607 +6000000,65,0,375453,1.920874,0.654684,1.266190 +6000000,70,0,516915,1.991413,0.629187,1.362226 +6000000,75,0,597299,2.174931,0.652623,1.522309 +6000000,80,0,556514,1.979182,0.627021,1.352162 +6000000,85,0,516565,1.973487,0.655650,1.317837 +6000000,90,0,616404,1.990341,0.649117,1.341224 +6000000,95,0,620854,1.980581,0.664450,1.316132 +6000000,100,0,341078,2.127766,0.629442,1.498324 +7000000,5,0,1715163,2.785417,0.620942,2.164475 +7000000,10,0,1623859,2.779911,0.602702,2.177209 +7000000,15,0,1707400,2.813195,0.675379,2.137816 +7000000,20,0,1654045,2.767437,0.650758,2.116679 +7000000,25,0,1205396,2.578133,0.676151,1.901982 +7000000,30,0,1229706,2.525530,0.673630,1.851900 +7000000,35,0,1192320,2.514677,0.704380,1.810297 +7000000,40,0,1565473,2.760732,0.704620,2.056112 +7000000,45,0,1810532,2.823445,0.751221,2.072224 +7000000,50,0,1211119,2.532261,0.685132,1.847130 +7000000,55,0,1192700,2.531494,0.734813,1.796680 +7000000,60,0,1347609,2.600764,0.713706,1.887058 +7000000,65,0,2166934,3.050198,0.791947,2.258251 +7000000,70,0,1970005,2.866356,0.777477,2.088880 +7000000,75,0,1606261,2.708065,0.751587,1.956477 +7000000,80,0,1412201,2.613379,0.750682,1.862697 +7000000,85,0,895859,2.354906,0.774489,1.580418 +7000000,90,0,1626724,2.824015,0.777956,2.046059 +7000000,95,0,1086859,2.502839,0.783295,1.719544 +7000000,100,0,1622737,2.874956,0.787285,2.087671 +8000000,5,0,2971813,3.582397,0.766665,2.815732 +8000000,10,0,2562712,3.244056,0.703172,2.540885 +8000000,15,0,2580540,3.205176,0.742386,2.462790 +8000000,20,0,2698420,3.324515,0.747439,2.577076 +8000000,25,0,2386356,3.229281,0.772734,2.456547 +8000000,30,0,2503484,3.147290,0.770162,2.377127 +8000000,35,0,2263415,3.018989,0.799203,2.219785 +8000000,40,0,2583245,3.195799,0.796715,2.399083 +8000000,45,0,2234810,2.995317,0.825657,2.169659 +8000000,50,0,2218835,3.078903,0.794090,2.284812 +8000000,55,0,2275886,2.943430,0.845031,2.098399 +8000000,60,0,2387623,3.083187,0.812817,2.270371 +8000000,65,0,2270354,2.998703,0.878881,2.119822 +8000000,70,0,2318495,3.031083,0.849870,2.181212 +8000000,75,0,2524549,3.164104,0.851482,2.312622 +8000000,80,0,2248457,2.962297,0.841574,2.120723 +8000000,85,0,2213049,2.913182,0.882536,2.030645 +8000000,90,0,2152819,2.927023,0.855132,2.071891 +8000000,95,0,2226148,2.942292,0.889671,2.052622 +8000000,100,0,2179430,2.981433,0.841704,2.139729 +9000000,5,0,3621809,3.827629,0.819313,3.008316 +9000000,10,0,3912368,3.847340,0.780610,3.066730 +9000000,15,0,3624982,3.755970,0.839363,2.916606 +9000000,20,0,3698569,3.759158,0.844351,2.914807 +9000000,25,0,3513082,3.760925,0.861112,2.899812 +9000000,30,0,3997236,3.940646,0.891574,3.049072 +9000000,35,0,3787101,3.759526,0.907295,2.852231 +9000000,40,0,3867230,3.802762,0.881266,2.921495 +9000000,45,0,3798215,3.750207,0.930276,2.819931 +9000000,50,0,3216568,3.533120,0.891711,2.641409 +9000000,55,0,3812435,3.680286,0.947674,2.732612 +9000000,60,0,3839867,3.653675,0.923681,2.729994 +9000000,65,0,3689074,3.595896,0.982576,2.613320 +9000000,70,0,3700752,3.639629,0.950929,2.688700 +9000000,75,0,4270346,4.073362,0.997443,3.075919 +9000000,80,0,4009464,3.868769,0.975652,2.893117 +9000000,85,0,3955479,3.724603,0.989258,2.735345 +9000000,90,0,3919529,3.756801,0.968999,2.787802 +9000000,95,0,3727932,3.650245,0.991285,2.658960 +9000000,100,0,3470715,3.696968,0.950463,2.746505 +10000000,5,0,6475725,4.771627,0.897402,3.874225 +10000000,10,0,6040749,4.768925,0.876224,3.892701 +10000000,15,0,5917721,4.622284,0.935065,3.687218 +10000000,20,0,6285857,4.787759,0.953275,3.834484 +10000000,25,0,5362312,4.422276,0.964333,3.457943 +10000000,30,0,6007325,4.678531,0.970952,3.707579 +10000000,35,0,5716497,4.540345,1.698371,2.841973 +10000000,40,0,6043263,4.592433,0.997314,3.595119 +10000000,45,0,5281712,4.360967,1.702299,2.658668 +10000000,50,0,5257216,4.308344,0.983483,3.324861 +10000000,55,0,5328835,4.345625,1.724349,2.621276 +10000000,60,0,5870849,4.561192,1.734647,2.826545 +10000000,65,0,5169657,4.356449,1.751664,2.604785 +10000000,70,0,4714519,4.091589,1.712368,2.379220 +10000000,75,0,5274712,4.360359,1.736360,2.623999 +10000000,80,0,4854622,4.100874,1.740089,2.360785 +10000000,85,0,4536249,4.002162,1.737434,2.264728 +10000000,90,0,4707352,4.086841,1.730413,2.356427 +10000000,95,0,4514431,3.986423,1.746495,2.239928 +10000000,100,0,4732642,4.028987,1.447545,2.581441 diff --git a/ftime/ftime.go b/ftime/ftime.go deleted file mode 100644 index 4f6cd9f..0000000 --- a/ftime/ftime.go +++ /dev/null @@ -1,151 +0,0 @@ -/* - MIT License - - Copyright (c) 2018 Yusuke Kato - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -package ftime - -import ( - "context" - "sync" - "sync/atomic" - "time" -) - -type Ftime interface { - IsDaemonRunning() bool - GetFormat() string - SetFormat(format string) Ftime - GetLocation() *time.Location - SetLocation(location *time.Location) Ftime - Now() time.Time - Stop() - UnixNow() int64 - UnixUNow() uint32 - UnixNanoNow() int64 - UnixUNanoNow() uint32 - FormattedNow() []byte - Since(t time.Time) time.Duration - StartTimerD(ctx context.Context, dur time.Duration) Ftime -} - -// Fastime is fastime's base struct, it's stores atomic time object -type fastime struct { - uut uint32 - uunt uint32 - dur int64 - ut int64 - unt int64 - correctionDur time.Duration - mu sync.Mutex - wg sync.WaitGroup - running atomic.Bool - t atomic.Pointer[time.Time] - ft atomic.Pointer[[]byte] - format atomic.Pointer[string] - formatValid atomic.Bool - location atomic.Pointer[time.Location] -} - -const ( - bufSize = 64 - bufMargin = 10 -) - -var ( - once sync.Once - instance Ftime -) - -func init() { - once.Do(func() { - instance = New().StartTimerD(context.Background(), time.Millisecond*5) - }) -} - -func IsDaemonRunning() (running bool) { - return instance.IsDaemonRunning() -} - -func GetLocation() (loc *time.Location) { - return instance.GetLocation() -} - -func GetFormat() (form string) { - return instance.GetFormat() -} - -// SetLocation replaces time location -func SetLocation(location *time.Location) (ft Ftime) { - return instance.SetLocation(location) -} - -// SetFormat replaces time format -func SetFormat(format string) (ft Ftime) { - return instance.SetFormat(format) -} - -// Now returns current time -func Now() (now time.Time) { - return instance.Now() -} - -// Since returns the time elapsed since t. -// It is shorthand for fastime.Now().Sub(t). -func Since(t time.Time) (dur time.Duration) { - return instance.Since(t) -} - -// Stop stops stopping time refresh daemon -func Stop() { - instance.Stop() -} - -// UnixNow returns current unix time -func UnixNow() (now int64) { - return instance.UnixNow() -} - -// UnixUNow returns current unix time -func UnixUNow() (now uint32) { - return instance.UnixUNow() -} - -// UnixNanoNow returns current unix nano time -func UnixNanoNow() (now int64) { - return instance.UnixNanoNow() -} - -// UnixUNanoNow returns current unix nano time -func UnixUNanoNow() (now uint32) { - return instance.UnixUNanoNow() -} - -// FormattedNow returns formatted byte time -func FormattedNow() (now []byte) { - return instance.FormattedNow() -} - -// StartTimerD provides time refresh daemon -func StartTimerD(ctx context.Context, dur time.Duration) (ft Ftime) { - return instance.StartTimerD(ctx, dur) -} diff --git a/ftime/helpers.go b/ftime/helpers.go deleted file mode 100644 index 7f24725..0000000 --- a/ftime/helpers.go +++ /dev/null @@ -1,247 +0,0 @@ -/* - MIT License - - # Copyright (c) 2018 Yusuke Kato - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. -*/ - -package ftime - -import ( - "context" - "math" - "sync/atomic" - "syscall" - "time" - "unsafe" -) - -func (f *fastime) fetchSysTime() (now time.Time) { - var tv syscall.Timeval - err := syscall.Gettimeofday(&tv) - loc := f.GetLocation() - if err != nil { - now = time.Now() - if loc != nil { - return now.In(loc) - } - return now - } - now = time.Unix(0, syscall.TimevalToNsec(tv)) - if loc != nil { - return now.In(loc) - } - return now -} - -func New() (f Ftime) { - return newFtime() -} - -func newFtime() (f *fastime) { - f = &fastime{ - ut: math.MaxInt64, - unt: math.MaxInt64, - uut: math.MaxUint32, - uunt: math.MaxUint32, - correctionDur: time.Millisecond * 100, - } - - form := time.RFC3339 - f.format.Store(&form) - loc := func() (loc *time.Location) { - tz, ok := syscall.Getenv("TZ") - if ok && tz != "" { - var err error - loc, err = time.LoadLocation(tz) - if err == nil { - return loc - } - } - return new(time.Location) - }() - - f.location.Store(loc) - - buf := f.newBuffer(len(form) + bufMargin) - f.ft.Store(&buf) - - return f.refresh() -} - -func (f *fastime) update() (ft *fastime) { - return f.store(f.Now().Add(time.Duration(atomic.LoadInt64(&f.dur)))) -} - -func (f *fastime) refresh() (ft *fastime) { - return f.store(f.fetchSysTime()) -} - -func (f *fastime) newBuffer(max int) (b []byte) { - if max < bufSize { - var buf [bufSize]byte - b = buf[:0] - } else { - b = make([]byte, 0, max) - } - return b -} - -func (f *fastime) store(t time.Time) (ft *fastime) { - f.t.Store(&t) - f.formatValid.Store(false) - ut := t.Unix() - unt := t.UnixNano() - atomic.StoreInt64(&f.ut, ut) - atomic.StoreInt64(&f.unt, unt) - atomic.StoreUint32(&f.uut, *(*uint32)(unsafe.Pointer(&ut))) - atomic.StoreUint32(&f.uunt, *(*uint32)(unsafe.Pointer(&unt))) - return f -} - -func (f *fastime) IsDaemonRunning() (running bool) { - return f.running.Load() -} - -func (f *fastime) GetLocation() (loc *time.Location) { - loc = f.location.Load() - if loc == nil { - return nil - } - return loc -} - -func (f *fastime) GetFormat() (form string) { - return *f.format.Load() -} - -// SetLocation replaces time location -func (f *fastime) SetLocation(loc *time.Location) (ft Ftime) { - if loc == nil { - return f - } - f.location.Store(loc) - f.refresh() - return f -} - -// SetFormat replaces time format -func (f *fastime) SetFormat(format string) (ft Ftime) { - f.format.Store(&format) - f.formatValid.Store(false) - f.refresh() - return f -} - -// Now returns current time -func (f *fastime) Now() (t time.Time) { - return *f.t.Load() -} - -// Stop stops stopping time refresh daemon -func (f *fastime) Stop() { - f.mu.Lock() - f.stop() - f.mu.Unlock() -} - -func (f *fastime) stop() { - if f.IsDaemonRunning() { - atomic.StoreInt64(&f.dur, 0) - } - f.wg.Wait() -} - -func (f *fastime) Since(t time.Time) (dur time.Duration) { - return f.Now().Sub(t) -} - -// UnixNow returns current unix time -func (f *fastime) UnixNow() (now int64) { - return atomic.LoadInt64(&f.ut) -} - -// UnixNow returns current unix time -func (f *fastime) UnixUNow() (now uint32) { - return atomic.LoadUint32(&f.uut) -} - -// UnixNanoNow returns current unix nano time -func (f *fastime) UnixNanoNow() (now int64) { - return atomic.LoadInt64(&f.unt) -} - -// UnixNanoNow returns current unix nano time -func (f *fastime) UnixUNanoNow() (now uint32) { - return atomic.LoadUint32(&f.uunt) -} - -// FormattedNow returns formatted byte time -func (f *fastime) FormattedNow() (now []byte) { - // only update formatted value on swap - if f.formatValid.CompareAndSwap(false, true) { - form := f.GetFormat() - buf := f.Now().AppendFormat(f.newBuffer(len(form)+bufMargin), form) - f.ft.Store(&buf) - } - return *f.ft.Load() -} - -// StartTimerD provides time refresh daemon -func (f *fastime) StartTimerD(ctx context.Context, dur time.Duration) (ft Ftime) { - f.mu.Lock() - defer f.mu.Unlock() - // if the daemon was already running, restart - if f.IsDaemonRunning() { - f.stop() - } - f.running.Store(true) - f.dur = math.MaxInt64 - atomic.StoreInt64(&f.dur, dur.Nanoseconds()) - ticker := time.NewTicker(time.Duration(atomic.LoadInt64(&f.dur))) - lastCorrection := f.fetchSysTime() - f.wg.Add(1) - f.refresh() - - go func() { - // daemon cleanup - defer func() { - f.running.Store(false) - ticker.Stop() - f.wg.Done() - }() - for atomic.LoadInt64(&f.dur) > 0 { - t := <-ticker.C - // rely on ticker for approximation - if t.Sub(lastCorrection) < f.correctionDur { - f.update() - } else { // correct the system time at a fixed interval - select { - case <-ctx.Done(): - return - default: - } - f.refresh() - lastCorrection = t - } - } - }() - return f -} diff --git a/gpq.go b/gpq.go index 24823cd..c0d99bc 100644 --- a/gpq.go +++ b/gpq.go @@ -1,15 +1,15 @@ package gpq import ( - "errors" + "context" "fmt" "sync" "time" "github.com/JustinTimperio/gpq/disk" - "github.com/JustinTimperio/gpq/ftime" "github.com/JustinTimperio/gpq/queues" "github.com/JustinTimperio/gpq/schema" + "github.com/JustinTimperio/gpq/timekeeper" "github.com/google/uuid" ) @@ -38,6 +38,11 @@ type GPQ[d any] struct { batchHandler *batchHandler[d] // batchCounter is used to keep track the current batch number batchCounter *batchCounter + + // ctx is the context for graceful shutdown + ctx context.Context + // cancel is the cancel function for the context + cancel context.CancelFunc } // NewGPQ creates a new GPQ with the given number of buckets @@ -63,6 +68,8 @@ func NewGPQ[d any](Options schema.GPQOptions) (uint, *GPQ[d], error) { } } + ctx, cancel := context.WithCancel(context.Background()) + gpq := &GPQ[d]{ queue: queues.NewCorePriorityQueue[d](Options, diskCache, receiver), options: Options, @@ -74,6 +81,9 @@ func NewGPQ[d any](Options schema.GPQOptions) (uint, *GPQ[d], error) { lazyDiskDeleteChan: receiver, batchHandler: newBatchHandler(diskCache), batchCounter: newBatchCounter(Options.LazyDiskBatchSize), + + ctx: ctx, + cancel: cancel, } var restored uint @@ -104,7 +114,7 @@ func (g *GPQ[d]) ItemsInQueue() uint { } // ItemsInDB returns the total number of items currently commit to disk -func (g *GPQ[d]) ItemsInDB() uint { +func (g *GPQ[d]) ItemsInDB() (uint, error) { return g.diskCache.ItemsInDB() } @@ -117,9 +127,9 @@ func (g *GPQ[d]) ActiveBuckets() uint { func (g *GPQ[d]) Enqueue(item schema.Item[d]) error { if item.Priority > uint(g.options.MaxPriority) { - return errors.New("Priority bucket does not exist") + return fmt.Errorf("priority %d exceeds maximum allowed priority %d", item.Priority, g.options.MaxPriority) } - item.SubmittedAt = ftime.Now() + item.SubmittedAt = timekeeper.Now() item.LastEscalated = item.SubmittedAt if g.options.DiskCacheEnabled && !item.WasRestored { @@ -131,7 +141,12 @@ func (g *GPQ[d]) Enqueue(item schema.Item[d]) error { if g.options.LazyDiskCacheEnabled { item.BatchNumber = g.batchCounter.increment() - g.lazyDiskSendChan <- item + select { + case g.lazyDiskSendChan <- item: + // Successfully sent + case <-g.ctx.Done(): + return fmt.Errorf("queue is closing: %w", g.ctx.Err()) + } } else { err = g.diskCache.WriteSingle(key, item) if err != nil { @@ -170,7 +185,13 @@ func (g *GPQ[d]) EnqueueBatch(items []schema.Item[d]) []error { if g.options.LazyDiskCacheEnabled { items[i].BatchNumber = g.batchCounter.increment() - g.lazyDiskSendChan <- items[i] + select { + case g.lazyDiskSendChan <- items[i]: + // Successfully sent + case <-g.ctx.Done(): + errors = append(errors, fmt.Errorf("queue is closing: %w", g.ctx.Err())) + continue + } } else { err = g.diskCache.WriteSingle(items[i].DiskUUID, items[i]) if err != nil { @@ -255,6 +276,8 @@ func (g *GPQ[d]) Prioritize() (escalated, removed uint, err error) { // Close performs a safe shutdown of the GPQ and the disk cache preventing data loss func (g *GPQ[d]) Close() { + // Signal all goroutines to stop + g.cancel() if g.options.DiskCacheEnabled { if g.options.LazyDiskCacheEnabled { @@ -318,6 +341,7 @@ func (g *GPQ[d]) lazyDiskWriter(maxDelay time.Duration) { go func() { defer wg.Done() + defer ticker.Stop() for { select { case <-ticker.C: @@ -353,7 +377,7 @@ func (g *GPQ[d]) lazyDiskDeleter() { for i, v := range batch { g.batchHandler.deleteBatch(v, i, false) - batch[item.BatchNumber] = batch[item.BatchNumber][:0] + delete(batch, i) } return } diff --git a/gpq_e2e_test.go b/gpq_e2e_test.go index 9380941..978045d 100644 --- a/gpq_e2e_test.go +++ b/gpq_e2e_test.go @@ -14,7 +14,7 @@ import ( func TestE2E(t *testing.T) { var ( - total uint64 = 10_000_000 + total uint64 = 1_000_000 syncToDisk bool = true lazySync bool = true maxBuckets uint = 10 @@ -38,7 +38,7 @@ func TestE2E(t *testing.T) { DiskCacheCompression: true, DiskEncryptionEnabled: true, DiskEncryptionKey: []byte("12345678901234567890123456789012"), - LazyDiskCacheChannelSize: 1_000_000, + LazyDiskCacheChannelSize: 500_000, DiskWriteDelay: time.Duration(time.Second * 5), LazyDiskCacheEnabled: lazySync, diff --git a/gpq_parallel_test.go b/gpq_parallel_test.go index 8807145..44bd593 100644 --- a/gpq_parallel_test.go +++ b/gpq_parallel_test.go @@ -175,6 +175,7 @@ func TestBatchParallel(t *testing.T) { if queue.ItemsInQueue() != 0 { t.Fatal("Items in queue:", queue.ItemsInQueue()) } + t.Log("Received", received, "messages!") queue.Close() t.Log("Batch Parallel Test Passed") diff --git a/helpers.go b/helpers.go index 81ec1e3..7fcb50d 100644 --- a/helpers.go +++ b/helpers.go @@ -45,14 +45,17 @@ func (bh *batchHandler[T]) deleteBatch(batch []*schema.DeleteMessage, batchNumbe return } - bh.syncedBatches[batchNumber] = false - bh.deletedBatches[batchNumber] = true - - if _, ok := bh.syncedBatches[batchNumber]; ok { + // Check if this batch was already synced to disk + if alreadySynced, ok := bh.syncedBatches[batchNumber]; ok && alreadySynced { + // Batch is on disk, safe to delete bh.diskCache.DeleteBatch(batch) + delete(bh.syncedBatches, batchNumber) + delete(bh.deletedBatches, batchNumber) return } + // Batch not synced yet, just mark for deletion + bh.deletedBatches[batchNumber] = true } type batchCounter struct { diff --git a/queues/cpq.go b/queues/cpq.go index da5c9e1..bb3722b 100644 --- a/queues/cpq.go +++ b/queues/cpq.go @@ -6,9 +6,9 @@ import ( "sync" "github.com/JustinTimperio/gpq/disk" - "github.com/JustinTimperio/gpq/ftime" "github.com/JustinTimperio/gpq/queues/gheap" "github.com/JustinTimperio/gpq/schema" + "github.com/JustinTimperio/gpq/timekeeper" "github.com/cornelk/hashmap" "github.com/tidwall/btree" @@ -61,7 +61,7 @@ func (cpq *CorePriorityQueue[T]) Enqueue(data *schema.Item[T]) error { bucket, ok := cpq.buckets.Get(data.Priority) if !ok { - return errors.New("Core Priority Queue Error: Priority not found") + return fmt.Errorf("priority bucket %d not found in queue", data.Priority) } cpq.bpq.Insert(data.Priority) @@ -133,7 +133,7 @@ func (cpq *CorePriorityQueue[T]) DequeueBatch(batchSize uint) ([]*schema.Item[T] defer cpq.mux.Unlock() if cpq.bpq.Len() == 0 { - return nil, []error{errors.New("Core Priority Queue Error: No items found in the queue")} + return nil, []error{errors.New("queue is empty, no items to dequeue")} } batch := make([]*schema.Item[T], 0, batchSize) @@ -145,7 +145,15 @@ func (cpq *CorePriorityQueue[T]) DequeueBatch(batchSize uint) ([]*schema.Item[T] bucket, ok := cpq.buckets.Get(priority) if !ok { - return batch, []error{errors.New("Core Priority Queue Error: Internal error, priority not found")} + // Internal corruption detected - rollback items already dequeued + for _, item := range batch { + cpq.bpq.Insert(item.Priority) + if b, found := cpq.buckets.Get(item.Priority); found { + gheap.Enqueue[T](b, item) + cpq.itemsInQueue++ + } + } + return nil, []error{fmt.Errorf("Core Priority Queue Error: Internal corruption - priority %d in btree but not in hashmap (attempted to dequeue %d items before error)", priority, len(batch))} } item, err := gheap.Dequeue[T](bucket) @@ -165,18 +173,33 @@ func (cpq *CorePriorityQueue[T]) DequeueBatch(batchSize uint) ([]*schema.Item[T] } func (cpq *CorePriorityQueue[T]) Prioritize() (removed uint, escalated uint, err error) { - cpq.mux.Lock() - defer cpq.mux.Unlock() - + // Collect bucket keys with read lock + var bucketKeys []uint + cpq.mux.RLock() cpq.buckets.Range(func(key uint, bucket *priorityQueue[T]) bool { - // Iterate through the bucket and remove items that have been waiting too long + bucketKeys = append(bucketKeys, key) + return true + }) + cpq.mux.RUnlock() + + // Process each bucket with individual locks + for _, key := range bucketKeys { + cpq.mux.Lock() + + bucket, ok := cpq.buckets.Get(key) + if !ok { + cpq.mux.Unlock() + continue // Bucket was removed, skip + } + + // Process timeouts in this bucket var len = bucket.Len() var currentIndex uint for i := 0; i < len; i++ { item := bucket.items[currentIndex] if item.CanTimeout { - currentTime := ftime.Now() + currentTime := timekeeper.Now() if currentTime.Sub(item.SubmittedAt) > item.Timeout { if cpq.options.DiskCacheEnabled { @@ -196,7 +219,8 @@ func (cpq *CorePriorityQueue[T]) Prioritize() (removed uint, escalated uint, err _, e := gheap.Remove[T](bucket, item) if e != nil { err = fmt.Errorf("Core Priority Queue Error: %w", err) - return false + cpq.mux.Unlock() + return removed, escalated, err } cpq.itemsInQueue-- removed++ @@ -209,54 +233,57 @@ func (cpq *CorePriorityQueue[T]) Prioritize() (removed uint, escalated uint, err currentIndex++ } } - return true - }) - // Iterate through the buckets and remove empty buckets - cpq.buckets.Range(func(key uint, bucket *priorityQueue[T]) bool { - if bucket.Len() == 0 { + cpq.mux.Unlock() + } + + // Clean up empty buckets + cpq.mux.Lock() + for _, key := range bucketKeys { + bucket, ok := cpq.buckets.Get(key) + if ok && bucket.Len() == 0 { cpq.bpq.Delete(key) } - return true - }) - - if err != nil { - return removed, escalated, err } + cpq.mux.Unlock() + + // Process escalations with per-bucket locking + for _, key := range bucketKeys { + cpq.mux.Lock() + + bucket, ok := cpq.buckets.Get(key) + if !ok { + cpq.mux.Unlock() + continue + } - // This is a very basic but fast algorithm that iterates from the front to the back of the queue. - // If the item can escalate and has reached its ticker, then we check if the last item was escalated, - // and that we are not first in the queue. This strategy means that messages can only push up the queue, - // if other messages are also not being prioritized. In this model, messages not being escalated, - // can be impacted by other high priority messages allowing for fairly complex queue strategies. - // I think in the future this can allow for more advanced features but seems fine for now. - cpq.buckets.Range(func(key uint, bucket *priorityQueue[T]) bool { var lastItemWasEscalated bool var len = bucket.Len() for i := 0; i < len; i++ { item := bucket.items[i] - if item.ShouldEscalate { - currentTime := ftime.Now() - if currentTime.Sub(item.LastEscalated) > item.EscalationRate { + // Reset flag at start of each iteration + wasEscalatedThisRound := false - if !lastItemWasEscalated && i != 0 { - item.LastEscalated = currentTime - bucket.UpdatePriority(item, i-1) - escalated++ - } - // We don't need to update lastItemWasEscalated here because we just swapped - // the current cursor index, with cursor index - 1. The previous index must have - // not been escalated so we don't need to update lastItemWasEscalated + if item.ShouldEscalate { + currentTime := timekeeper.Now() + readyToEscalate := currentTime.Sub(item.LastEscalated) > item.EscalationRate + canMove := !lastItemWasEscalated && i != 0 + + if readyToEscalate && canMove { + item.LastEscalated = currentTime + bucket.UpdatePriority(item, i-1) + escalated++ + wasEscalatedThisRound = true } - } else { - lastItemWasEscalated = false } + + lastItemWasEscalated = wasEscalatedThisRound } - return true - }) + cpq.mux.Unlock() + } return removed, escalated, nil } diff --git a/timekeeper/timekeeper.go b/timekeeper/timekeeper.go new file mode 100644 index 0000000..f7b3b0a --- /dev/null +++ b/timekeeper/timekeeper.go @@ -0,0 +1,116 @@ +// Package timekeeper provides a high-performance cached time implementation +// optimized for high-throughput applications that need fast time access +// without the overhead of syscalls on every time.Now() call. +// +// This implementation uses atomic operations and periodic updates to provide +// microsecond-precision cached time values with configurable refresh rates. +package timekeeper + +import ( + "sync/atomic" + "time" +) + +// Cache holds the cached time value and provides thread-safe access +type Cache struct { + // Cached time value stored as nanoseconds since epoch + cachedNanos atomic.Int64 + + // Ticker for periodic updates + ticker *time.Ticker + + // Channel to signal shutdown + done chan struct{} +} + +var ( + // globalCache is the default cache instance used by package-level functions + globalCache *Cache +) + +func init() { + // Initialize with 50ms refresh rate + globalCache = NewCache(50 * time.Millisecond) + globalCache.Start() +} + +// NewCache creates a new time cache with the specified refresh interval. +// A smaller interval provides more accurate time but uses more CPU. +// Recommended intervals: +// - 1ms for high-precision requirements +// - 5ms for balanced performance (default) +// - 10-50ms for maximum throughput with lower precision needs +func NewCache(refreshInterval time.Duration) *Cache { + c := &Cache{ + ticker: time.NewTicker(refreshInterval), + done: make(chan struct{}), + } + + // Initialize with current time + c.refresh() + + return c +} + +// Start begins the background refresh goroutine +func (c *Cache) Start() { + go func() { + for { + select { + case <-c.ticker.C: + c.refresh() + case <-c.done: + c.ticker.Stop() + return + } + } + }() +} + +// Stop halts the background refresh goroutine +func (c *Cache) Stop() { + close(c.done) +} + +// refresh updates the cached time with the current system time +func (c *Cache) refresh() { + now := time.Now().UnixNano() + c.cachedNanos.Store(now) +} + +// Now returns the cached current time +// This is an extremely fast operation using only an atomic load +func (c *Cache) Now() time.Time { + nanos := c.cachedNanos.Load() + return time.Unix(0, nanos) +} + +// SetRefreshInterval changes the refresh interval dynamically +func (c *Cache) SetRefreshInterval(interval time.Duration) { + c.ticker.Reset(interval) +} + +// Package-level convenience functions using the global cache + +// Now returns the cached current time using the global cache instance. +// This is the primary function for high-throughput time access. +func Now() time.Time { + return globalCache.Now() +} + +// Stop stops the global cache refresh goroutine. +// This should typically only be called during application shutdown. +func Stop() { + globalCache.Stop() +} + +// SetRefreshInterval changes the global cache refresh interval. +// Use this to tune performance vs precision for your specific workload. +func SetRefreshInterval(interval time.Duration) { + globalCache.SetRefreshInterval(interval) +} + +// Since returns the time elapsed since t using the cached current time. +func Since(t time.Time) time.Duration { + return Now().Sub(t) +}