Files
boc/aamos-command-center/target/release/deps/libhttp_range_header-e03930f8e4b72eaf.rlib
T

239 lines
71 KiB
Plaintext
Raw Normal View History

!<arch>
/ 0 0 0 0 2202 `
­Ž­Ž­Ž­Ž­Žê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"ê"_ZN17http_range_header12ParsedRanges8validate17he5af6490421352d9E_ZN17http_range_header18parse_range_header17h2064d28562674711E_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h93d66abc2e5ffb3fE_ZN81_$LT$http_range_header..RangeUnsatisfiableError$u20$as$u20$core..fmt..Display$GT$3fmt17h9e181baf27e12959EDW.ref.rust_eh_personality_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17he881ec57c022e0b5E_ZN115_$LT$core..iter..adapters..filter_map..FilterMap$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd9f7388bec47d46fE.llvm.17905068643549569844_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$7reserve21do_reserve_and_handle17h7cac99bc1989363aE.llvm.17905068643549569844_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h324608946d789bf7E_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17h861cea6fbc53d29dE_ZN4core4iter6traits8iterator8Iterator5count8plus_one17hef12920b009f9ccbE_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17hcef62b0fc07d152cE_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h6734f03370c1d2b0E_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$11finish_grow17h61a47cc1289cb288E.llvm.17905068643549569844_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17hb80aa63cc7bb15c8E_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$15try_allocate_in17hecefac1d2f961032E_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h02f72887943e7b69E_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3ce3ea752be4e3cfE_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6bc5ec4167cc5f9eE_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hb61742d3eb6f1eddE_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h383dfcfe26ac654cE_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hfc37625c9ee71477EDW.ref.rust_eh_personality// 168 `
http_range_header-e03930f8e4b72eaf.http_range_header.1948d9db4d7dd53f-cgu.0.rcgu.o/
http_range_header-e03930f8e4b72eaf.http_range_header.1948d9db4d7dd53f-cgu.1.rcgu.o/
lib.rmeta/ 0 0 0 644 41872 `
ELF·¢@@GNUÀrust
šŸ#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0ÁtestsÁ,èi$ÝiÀUNIT_SEPÁparse_range_headerÁ COMMAÁ trimÁ parse_innerÁstrict_parse_u64Áæ validateÁ×RangeValidationResultÁValidÁ
 OverlappingÁ
ReversedÁ
validate_rangesÁæ  ParsedRangesÁrangesÁ!×#ƒ%Ö(RangeUnsatisfiableErrorÁ*OverlappingRangesÁ+
*
RangeReversedÁ-
*FileSuffixOutOfBoundsÁ/
*IllegalWhitespaceÁ1
*StartsWithWhitespaceÁ3
*DoesNotStartWithTokenÁ5
*
ZeroSuffixÁ7
*BadStartOfRangeÁ9
*
BadEndOfRangeÁ;
*UnexpectedNumberOfDashesÁ=
*EmptyÁ?
 A×
  Eƒ
GÖJSyntacticallyCorrectRangeÁL¹LþO×SƒUÖX
StartPositionÁZIndexÁ[
[ˆZFromLastÁ^
^ˆa×eƒgÖj EndPositionÁlÕm
mˆlLastByteÁp
r× !vƒ"xÖ#${








"
"
"
$
&
)
)
B
B
B
F
H
K
K
P
P
P
T
V
Y
Y
b
b
b
f
h
k
k
s
s
s
w
y
|
|
¿cŒ
 Ÿ
ÅdÔªú$ØÞÞÐìÞµßÞÞ¿c* +,ú
-. /0® 12Î 34ê 56 78© 9:¾ ;<Ø =>ð  ?@

eÎ3³F çwŠ ºÛºØººÐ캵ߺºÄcº¾º¿cLLÛ
M¹Nþ9I9)¦S¹Š ÅÛÅØÅÅÐìŵßÅÅ¿cZ[\Õ]ˆ^_ì`ˆé)ïȳÊÏŠ ½Û½Ø½½Ð콵߽½¿clmnÕoˆpqâ¹,z
À9Š ÆÛÆØÆÆÐìÆµßÆÆ!A*OLaZrl#E*SLeZvl%G*ULgZxl'I*WLiZzl(J*XLjZ{lC*QLcZtlD*RLdZul**¿c¯ØÐìµßŠ ÛÄc¾ "bytes="Á,','Áø“A*
ªBªBö­BbufÁ÷<®B÷<9)
-ÜnLÅçEçEèEGlobalÁ ¿±‡§í#Š ¿c(×@
ùc ¤#¤áæ<Û@ Ü@"aÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈErrorÁ O˜éBLè Þò  c cˆ¢cµ
 `£cú `àB¤GS
5ìï  çý¿]±kv½ì4ˆø“A*
ç®
Ùç4<(Þ@ â@ã@$1Þ<çC犿Zd·­ç@&å@²ç$.ø“A*
ç!ç4Ì
·ßççOT\¼A ò@)Hé@
çç¿£¿ª2¹
?IÕ!Ó(œN  
:@¹¤ N
_ؤ
{ô
¤;
¤W
³,
¤s
ÏH¤
ëd ¤«

¤È
$ž ¤å
A»
¤
_Ù
¤ 
ö
êcœ¥U¡NBÃäÏ ºÚñâ¤êòü±
ÿ%(
©N
®NF!º,È&3<F ²NH °N²È&(H ´N ½NK:?EPÈ&WÈ&^ã&eã&lu¹
 __self_discrÁ __arg1_discrÁ²ºÀ·f ½ì Õf Æ ,ì(èes
ûc¤&¤ ¦¤ƒˆRìe íeP}äˆ Åñì ½ìñ  Æþ§,ѱÞè“,ì[¥,ì9ü*(õeúeT!&,Å8ú+?HRþeVüe²ú+!*4 À·f   H§h½½!'8 Õf
 H“i
Æ Æ! ' 
8 
Uò jèf‰fÍ ¯h  %   h
ã&,  ÔÞ"   ½ÕÝÞ" 

½Õ«1ÔÞ"  
äâÞ" 
  Î ²  ã&Ò  ¦¬½ì«1 ¦½ì«1šš\di p w~Æ + 

< é R Z  p z  ª±ÆÕ«1¦­ÆÕ«1¢¤›i 

YH€f{k¦¡ý¡žU"Œ«1«1éhùä¯Þ6"‹àåО":Œ«1«1Öh5‹à.¸|ÑÆ

Î 
Ö 
Š
Œ«1«1Ài
‹à~ïú+öú+ýã&~ã&«1_«1A«1o «1Q ´»ã&n
ã&v }
«1¤«1y¹
(h"éh ì«1 & 2 ìlƒ

‡dƒ
¤lœÖh Õ«1 &2ìäƒ
Þ9õƒ
¤h“h &”hbTZa
än“,vñ~ã& «1ñìø ò;ò;슃<ıÒ__self_0ÁHÅ;Ìýƒ<ìáÞ9ƒ<ìwÞ9(œh¡hf!&½2“,9BL¥hh£h²“,$.èô*;ƒ
Q Yƒ
ã&y M Õ«1Õ«1r Õ«1c
j
Õ«1[ 
V
]    ƒ
ã&%  ù
ì«1 ì«1
ì«1  ì«1
   
ÌÔ°hÅ k Ó Ù à ç î LŒ«1«1HE‹à?vŒ«1«1=o‹àiN
“,V
“,^
ã&f
ã&n
u
ò;ò;Žò;Ëò;Ó«1g «1I «1w «1Y ¼
Ã
Í
¹
Û
Ê(é
á(õ
Å;
__arg1_0ÁÅ;_ÝCk 6 (ûh"*ƒ
ÿ%;ƒ
¤HPÀi Õ«1 &2옃
Þ9©ƒ
¤gÃÿh €isñöä§,
ñã&ò;ÎìÕƒ<Ü9±GÅ;^ÿ%hƒ<ìÞ9v(ˆiiw!&Æ2§,9BLiyi²§,$.
)
5
<
N
_
p
ƒ

Ž
ƒ
¤
®
Þ Õ«1Õ«1
Õ«1ô  û  Õ«1ì  ç  î J R œiU|cipw* Œ«1«1¡
# ‹à 
­§,µ§,½ã&Åã&ÍÔò;ê
ò;ò
«1 «1í
þ¹
 Ê(á(&Å;@ ÝCL G,Ðh Z\#½.«15<Dàh Z_#½.«15<,ºi ln#Æ.«15<      
*LZlÀp,T¿cpÂct<[ÄcˆLd c¾t½£üÇØ
*LZlÀ}p}¿cpÂct|Äcˆ{ c¾z½£ÞàâLHØÚº¼¬®Ìt¡¤D– ü£'kü±74 Function that parses the content of a range header.Áéúüí\Y Follows the [spec here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)ÁÊúüÎ41 And [here](https://www.ietf.org/rfc/rfc2616.txt)Áƒúü‡¥¢ Will only accept bytes ranges, will update when [this spec](https://www.iana.org/assignments/http-parameters/http-parameters.xhtml) changes to allow other units.Á­úü±UR Parses ranges strictly, as in the examples contained in the above specifications.Áúü‹IF Ranges such as `bytes=0-15, 16-20, abc` will be rejected immediately.ÁÕúüÙhe It preserves the range ordering, the specification leaves it open to the server to determine whetherÁüÂKH ranges that are out of order are correct or not, ie `bytes=20-30, 0-15`ÁŽúü’0- # Example no trailing or leading whitespacesÁ ```Á // OkÁüÕIF assert!(http_range_header::parse_range_header("bytes=0-15").is_ok());Á”Ÿ // Not allowedÁü²KH assert!(http_range_header::parse_range_header("bytes=0-15 ").is_err());Á¼þ // Also not allowedÁü– KH assert!(http_range_header::parse_range_header("bytes= 0-15").is_err());ÁÒXê úüî VS # Example No leading whitespaces except in the case of separating multipart rangesÁ
ÒXüÍ
:7 // Ok, multipart with a leading whitespace after commaÁüˆ PM assert!(http_range_header::parse_range_header("bytes=0-15, 20-30").is_ok());ÁüÙ :7 // Ok multipart without leading whitespace after commaÁü” OL assert!(http_range_header::parse_range_header("bytes=0-15,20-30").is_ok());Á ÒXì úüð A> # Example No negative values, no leading zeroes, no plus-signÁ
ÒXœº
 // No negativesÁüÎ
LI assert!(http_range_header::parse_range_header("bytes=-12-15").is_err());ÁÄ› // No leading zeroesÁü´KH assert!(http_range_header::parse_range_header("bytes=00-15").is_err());Áœ€ // No plus signÁü”KH assert!(http_range_header::parse_range_header("bytes=+0-15").is_err());ÁÒXèúüìol Makes two passes and parses ranges strictly. On the first pass, if any range is malformed returns an `Err`.ÁÜúüàur On the second pass if the ranges doesn't make sense (reversed range, range out of bounds, etc.) returns an `Err`.ÁüÖ)& # Example with a standard valid rangeÁú<„ÒXìŒ let input = "bytes=0-15";Áôª let file_size_bytes = 512;ÁüÉEB let parsed_ranges = http_range_header::parse_range_header(input);ÁúÌ“ match parsed_ranges {Á¼­ Ok(ranges) => {ÁüÅ41 match ranges.validate(file_size_bytes) {Áüú%" Ok(valid_ranges) => {Áü /, for range in valid_ranges {ÁüÐ30 // do something with rangesÁü„1. assert_eq!(0..=15, range)Á¬¶ŒÌôÞ Err(_err) => {ÁüýB? // Do something when ranges doesn't make senseÁüÀ*' panic!("Weird range!")ÁŒëÀi
L‹´• Err(_err) => {Áü¬1. // Do something with malformed rangesÁüÞ&# panic!("Malformed range!")ÁL…£k,<•ÒXúü¡nk The parser makes two passes, one without a known file-size, ensuring all ranges are syntactically correct.Áüol The returned struct will through its `validate` method accept a file-size and figure out whether or not theÁü€@= syntactically correct ranges actually makes sense in contextÁÁúüÅur The range `bytes=0-20` on a file with 15 bytes will be accepted in the first pass as the content size is unknown.Áü»˜ On the second pass (`validate`) it will be truncated to `file_size - 1` as per [the spec](https://httpwg.org/specs/rfc9110.html#rfc.section.14.1.2).ÁüÔ?< # Example range truncates in `validate` because it exceedesÁ<”ÒXìœ let input = "bytes=0-20";Áìº let file_size_bytes = 15;ÁüØDA let parsed_ranges = http_range_header::parse_range_header(input)Áü# // Is syntactically correctÁ”Á .unwrap();ÁüÔEB let validated = parsed_ranges.validate(file_size_bytes).unwrap();Áüš(% assert_eq!(vec![0..=14], validated);ÁÒXËúüÏ_\ Range reversal and overlap is also checked in the second pass, the range `bytes=0-20, 5-10`Áü¯ WT will become two syntactically correct ranges, but `validate` will return ann `Err`.Á‡!úü‹!da This is an opinionated implementation, [the spec](https://datatracker.ietf.org/doc/html/rfc7233)Áüð!pm allows a server to determine its implementation of overlapping ranges, this api currently does not allow it.Áá"úüå"DA # Example multipart-range fails `validate` because of an overlapÁ<ª#ÒXü²#+( let input = "bytes=0-15, 10-20, 30-50";ÁôÞ#Àeüý#DýrüÂ$#Ës”æ$÷süù$<9 let validated = parsed_ranges.validate(file_size_bytes);Áü¶%C@ // Some ranges overlap, all valid ranges get truncated to 1 ErrÁüú%  assert!(validated.is_err());Á<&ÒXd£& # ErrorsÁü°&[X Will return an error if the `range_header_value` cannot be strictly parsed into a rangeÁ´Œ' per the http spec.Á”ª'} }Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Þº Ö'
range_header_valueÁ”Â'Œ•(,(<þ+ <closure_kind>Á <closure_signature>Á <upvars>Á    ¤Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÅ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙºü°3 $³3~ ~Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ€‚ »3
¾ ¸3üõ4Y\ø4 Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ź ‹5
rangeÁ,„5ü¢?+„¥? Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ«1 ¹?
¾ ¶?ŒÂAÞüÚA6ÝAçÞ
Ÿ
4áAüÇC€ü¾B<9 Validates a parsed range for a given file-size in bytes.ÁdÿBÿ{üC2/ If the range is invalid for the the file-size.ÁDÎC Þ«1Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ªBªBö­Bú÷<®B÷<9)
-ÜnL½£½£¾¿£¹À£þÁ£ exhaustedÁ1¥œMu7·P«1§º àC
$áCfile_size_bytesÁ|ïCüØP(ºÅcü‡Q9ŠQƒ º ƒ c cˆ¢cµ
 `£cú `àB¤GS
ä ŽQ
$Q± •QüŸ_2ºÔÖ_¬Û_²  Ø ¨V'6U¡¨V'6U¡,÷_º‹º‹\‚`º‹º‹D“`º‹º‹ü `K|£` 
½ˆº‹ »`
Ÿ
4³`ôîfÅü“g6–g½ÆÅ
¹,šgþ°g¼õ@d€AÞÅdÔªú$ ü“A*4—Aç{
{
Þ"Àc"{
{
ˆ Þ  c cˆ¢cµ
 `£cú `àB¤GS
ˆä!×@!
"{
±{
OO Þ$Ù$OO ÞÞ#Þ@#