/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġavailable . ĠĠĊ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠB K - CI Ġ èĵĿ é² ¸ æĮģ ç»Ń éĽĨ æĪĲ å¹³åı° Ġis Ġlicensed Ġunder Ġthe ĠMIT Ġlicense . Ċ Ġ* Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠMIT ĠLicense Ġis Ġincluded Ġin Ġthis Ġfile . Ċ Ġ* Ċ Ġ* Ċ Ġ* ĠTerms Ġof Ġthe ĠMIT ĠLicense : Ċ Ġ* Ġ------------------------------------------------ --- Ċ Ġ* Ġ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 Ġcom . tencent . bk repo . common . artifact . stream Ċ Ċ import Ġkotlin . math . min Ċ Ċ class ĠRange ( start Position : ĠLong , Ġend Position : ĠLong , Ġval Ġtotal : ĠLong ) Ġ{ ĊĠĠĠ Ġval Ġstart : ĠLong Ġ= Ġif Ġ( start Position Ġ< Ġ 0 ) Ġ 0 Ġelse ĠstartPosition ĊĠĠĠ Ġval Ġend : ĠLong Ġ= Ġif Ġ( end Position Ġ< Ġ 0 ) Ġtotal Ġ- Ġ 1 Ġelse Ġmin ( end Position , Ġtotal Ġ- Ġ 1 ) ĊĠĠĠ Ġval Ġlength : ĠLong Ġ= Ġend Ġ- Ġstart Ġ+ Ġ 1 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( total Ġ>= Ġ 0 ) Ġ{ Ġ" Invalid Ġtotal Ġsize : Ġ$ total " Ġ} ĊĠĠĠĠĠĠĠ Ġrequire ( length Ġ>= Ġ 0 ) Ġ{ Ġ" Invalid Ġrange Ġlength Ġ$ length " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Partial Content (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlength Ġ!= Ġtotal ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Full Content (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlength Ġ== Ġtotal ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlength Ġ== Ġ 0 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ start -$ end /$ total " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Deprecated ( message Ġ= Ġ" Replace Ġwith ĠRange . full ", Ġreplace With Ġ= ĠReplace With (" full ")) ĊĠĠĠĠĠĠĠ Ġfun Ġof Full ( total : ĠLong ) Ġ= ĠRange ( 0 , Ġtotal Ġ- Ġ 1 , Ġtotal ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġfull ( total : ĠLong ) Ġ= ĠRange ( 0 , Ġtotal Ġ- Ġ 1 , Ġtotal ) ĊĠĠĠ Ġ} Ċ } Ċ