devexpress asp.net pdf viewer : Delete pages out of a pdf file SDK software API .net winforms html sharepoint AppleShellScripting-20146-part688

C Shell Note:  ThisbehavesthesameinCshellasitdoesintheBourneshell(apartfromtheusual
syntaxdifferences).Forexample:
#!/bin/csh
set NAME E = `expr r "${1}" " '|' "Untitled"`
echo "The chosen n name was ${NAME}"
Parsing,VariableExpansion,andQuoting
InboththeBourneshellandtheCshell,linesofcodeareprocessedinmultiplepasses.Thefirstpassisaparsing
passinwhichthebasicstructureofthelineofcodeisextracted.Inthispass,quotationmarksserveasdelimiters
betweenindividualpiecesofinformation.Forexample,youcanprintaletterimmediatelyafterthecontents
ofavariablewithoutaspacebyclosing(andreopeningifnecessary)theenclosingdoublequotesimmediately
afterthevariablename.
Thesecondpassisanexpansionpass.Inthispass,anyvariableisexpandedandanyinlineexecutionis
performed.Ifavariablecontainsspecialcharacters,theresultingtextisfurtherexpandedunlessthatvariable
issurroundedbydoublequotes.Thismaycauseunexpectedbehaviorif,forexample,avariablecontainsa
wildcardcharacter.
Note:  Whiletheexpansionofavariableorcommandinlinewillnotcauseasyntaxerrorbyitself,it
canchangethebehaviorofthe
eval
builtin.SeeUsingtheevalBuiltinforDataStructures,Arrays,
andIndirection (page 168)formoreinformation.
Finally,thethirdpassisanexecutionpass.Inthispass,thecodeisactuallyexecuted.
Insomecases,youmayneedtochangethewayvariableexpansiontakesplace.Youmightwanttousea
nonstandardcharactertosplitavariablecontainingalist,changethewaytheshellhandlesspecialcharacters,
orexecuteacommandandsubstituteitsoutputinthemiddleofanothercommand.Thesetechniquesare
describedinthesectionsthatfollow.
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
61
Delete pages out of a pdf file - application Library cloud:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Delete pages out of a pdf file - application Library cloud:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
VariableExpansionandFieldSeparators
InBourneshellscripts,twooperationsareaffectedbythevalueofthe
IFS
(internalfieldseparators)shell
variable:the
read
statementandvariableexpansion.Theeffectonthe
read
statementisdescribedseparately
inShellScriptInputandOutputUsingprintfandread (page 35).
Whenevertheshellexpandsavariable,thevalueof
IFS
comesintoplay.Forexample,thefollowingscriptwill
print“a”and“b”onseparatelines,then“cd”onathirdline:
#!/bin/sh
IFS=":"
LIST="a:b:c d"
for i i in n $LIST T ; ; do
echo $i
done
Thisoccursonlybecausethevalueontherightsideofthe
for
statementcontainsavariable(
LIST
)thatis
expandedbytheshell.Whentheshellexpandsthevariable,itreplacesthecolonwithaspaceandquotesany
spacesintheoriginalstring.Ineffect,bythetimethe
for
statementseesthevalues,therightsideofthefor
statementcontains
a b c\ d
,justasintheexampleshowninTheforStatement (page 52).
Ifyouinserttheexactcontentsof
LIST
ontherightsideofthevariable,thisscriptwillinsteadprint“a:b:c”on
onelineand“d”ontheother.Thisdemonstrateswhyitisveryimportanttochooserecordseparatorscorrectly.
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
62
application Library cloud:VB.NET PDF delete text library: delete, remove text from PDF file
Delete text from PDF file in preview without adobe PDF reader component installed. Able to pull text out of selected PDF page or all PDF document in .NET
www.rasteredge.com
application Library cloud:C# PDF delete text Library: delete, remove text from PDF file in
Able to pull text out of selected PDF page or all PDF option, The search and delete match rules. -. pageCount, The count of pages that will be deleted a string.
www.rasteredge.com
Cross-Platform Compatibility Note:  Thistreatmentofrecordseparatorsisconsistentinallmodern
Bourneshellvariants(ASH,BASH,DASH,KSH,ZSH,newerversionsofthe
sh
interpreter,andsoon).
SomeearlierBourneshellvariantsuse
IFS
whentheshellsplitsalistevenifnoexpansionisinvolved.
Toavoidunexpectedbehavior,youshouldavoidsettingnonstandardvaluesfor
IFS
exceptwhen
youareexpandingashellvariablethatdependsonthis.
Asanexception,itissafetomodify
IFS
duringa
read
statement.Besuretosavetheoriginalvalue
inanothervariableandrestoreitafterwards,however,toavoidunexpectedbehaviorelsewherein
thescript.
C Shell Note:  Mostversionsofcshdonotallowyoutoalterthefieldseparator.Ifyouneedmore
precisecontroloverfieldseparators,youcanusethe
cut
commandina
while
loop,incrementing
acounter.
#!/bin/csh
set IFS = = ":"
set LIST T = "a:b:c d"
set POS = = 1
set i i = = `echo o "${LIST}" | | cut -f f ${POS} -d d ':'`
# Repeat until you get an n empty y field.
This only works s if
# you know you should d never r encounter r an n empty y field. Otherwise,
# you must know w the e number of f fields.
while ( ( "x${i}" != = "x" )
echo $i
set POS = = `expr ${POS} '+' ' 1`
set i i = = `echo o "${LIST}" | | cut -f f ${POS} } -d ':'`
end
Ifyoucannotguaranteethattherearenoemptyfieldsinthelist,youmustfirstcountthefieldsand
useacounterinyourlooptest.Tolearnhowtocountthefields,seeTheexprCommand (page 58).
Tolearnhowtousecounters,readTheexprCommandAlsoDoesMath (page 93),substitutingthe
CshellsyntaxasdescribedinShellVariablesandPrinting (page 23)andInlineExecution (page 68)
asappropriate.
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
63
application Library cloud:C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
VB.NET comment annotate PDF, VB.NET delete PDF pages, VB.NET can view PDF document in single page or continue pages. Support to zoom in and zoom out PDF page.
www.rasteredge.com
application Library cloud:VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
Auto Fill-in Field Data. Field: Insert, Delete, Update Field. can view PDF document in single page or continue pages. Support to zoom in and zoom out PDF page.
www.rasteredge.com
SpecialCharactersExplained
Thereareseveralspecialcharactersinshellscripts:adollarsign(
$
),anasterisk(
*
),aquestionmark(
?
),curly
braces(
{
and
}
),squarebrackets(
[
and
]
),parentheses(
(
and
)
),singleanddoublequotemarks(
'
and
"
),
thebacktickmark(
`
,sometimescalledtheleftsinglequotemark),andthebackslash(
\
).Thesecharactersare
treateddifferentlybytheshell.
Mostofthesespecialcharactersareusedinfilenameexpansion,alsoknownasglobbing.Globbingcharacters
obeydifferentexpansionrulesthanothercharacters.
Thecharactersbehaveasfollows:
Dollarsign($)—thefirstcharacterinvariableexpansion,shellbuiltinmath,andinlineexecution.Variable
namesbeginningwithadollarsignareexpandedregardlessofwhethertheyappearinsidedoublequotes.
Ifusedoutsideofdoublequotes,anyglobbingcharacterswithinthecontentsofthevariablearealso
expanded.Variablenameswithinthecontentsarenotexpanded,however.
Asterisk(*)—awildcardcharacterthatmatchesanynumberofcharactersinafilename.Forexample,
ls
*.jpg
matchesallfilesthatendwiththeextension
.jpg
.Theasteriskisusedinglobbing.
Questionmark(?)—awildcardcharacterthatmatchesasinglecharacterinafilename.Forexample,
ls
a?t.jpg
matchesboth
ant.jpg
and
art.jpg
.Thequestionmarkisusedinglobbing.
Curlybraces—matchesanyofaseriesofoptionsinafilename.Forexample,
ls *.{jpg,gif}
matches
everyfileendingwitheither
.jpg
or
.gif
.Curlybracesareusedinglobbing.
Squarebrackets—matchesanyofaseriesofcharactersinafilename.Forexample,
ls a[rn]t.jpg
matches
art.jpg
and
ant.jpg
,butdoesnotmatch
aft.jpg
.Ifthefirstcharacterisacaret(
^
),itmatches
everycharacterexceptforthecharacterslisted.
Thesyntaxofthesecharacterclassesissimilartocharacterclassesinregularexpressions,buttherearea
numberofsubtledifferences.Formoreinformation,seetheOpenGroup’spageonpatternmatching
notationathttp://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_13.
Squarebracketsareusedinglobbing.
Parentheses—thesecharactersservemultiplepurposes,dependingoncontext:
Usedtomarkthebeginningofanewsubroutine.ThisisdescribedinSubroutines,Scoping,and
Sourcing (page 83).
Usedtogroupachainofoperations.ThisisdescribedinChainingExecution (page 71).
UsedformathinsomeBourneshellvariants.ThisisdescribedinTheEasyWay:Parentheses (page
94).
Usedin
for
loopiteratorssupportedbysomeBourneshellvariants.ThisisdescribedinExtendedfor
Loops (page 54).
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
64
application Library cloud:C# WPF PDF Viewer SDK to view PDF document in C#.NET
Auto Fill-in Field Data. Field: Insert, Delete, Update Field. extract, copy, paste, C#.NET rotate PDF pages, C#.NET Abilities to zoom in and zoom out PDF page.
www.rasteredge.com
application Library cloud:VB.NET PDF replace text library: replace text in PDF content in vb
Able to pull text out of selected PDF page or all PDF document in VB.NET. VB.NET: Replace Text in PDF File. VB.NET: Replace Text in Consecutive PDF Pages.
www.rasteredge.com
Double-quotemarks—disablesargumentsplittingonwordboundaries(spaces)andshellexpansionof
mostspecialcharacterswithinthequotemarks,withafewexceptions:
Variablesareexpandedwithindoublequotemarks.Thecontentsofvariables,however,arenot
expandedinanywayeveniftheycontainglobbingcharacters.
Inlineexecutionisalsoexpandedwithindoublequotemarks.
ThebackslashcharacterstillfunctionswithindoublequotemarksintheBourneshellandvariants
thereof,butnotinCshellvariants.
Note:  Althoughglobbing-relatedcharactersarenotgenerallyexpandedwithindoublequotes,
expansionofglobbingcharacterswithinstringsenclosedindoublequotesmaystilloccurifthe
doublequotesareontherightsideofavariableassignmentandthevariableislaterused
withoutdoublequotes.Forexample:
FOO="*.c"
# *.c does not get expanded here
ls $FOO
# *.c DOES get expanded here
Single-quotemarks—disablesargumentsplittingonwordboundaries(spaces)anddisablesallshell
expansion(includingvariables).Thebackslashistreatedjustlikeanyotherliteralcharacterwhenitappears
withinsinglequotes.Forexample,
'\"'
isastringthatcontainsabackslashandadoublequotemark.
Backtickmarks—roughlyequivalentto
$()
,theseareusedtodelimitcodeforinlineexecution.This
techniqueisdescribedinInlineExecution (page 68).
Backslash—causesthenextcharactertobetreatedasaliteralcharacter,overridingthespecialbehaviors
explainedinthissection.ThistechniqueisdescribedfurtherinQuotingSpecialCharacters (page 66).
Ifyourscriptacceptsuserinput,thesecharacterscanproduceunexpectedresultsifyoudonotquotethem
properly.Considerthefollowingexample:
#!/bin/sh
echo "Filename?"
read NAME
ls $NAME
ls "$NAME"
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
65
application Library cloud:VB.NET PDF - View PDF with WPF PDF Viewer for VB.NET
Auto Fill-in Field Data. Field: Insert, Delete, Update Field. extract, copy, paste, C#.NET rotate PDF pages, C#.NET Abilities to zoom in and zoom out PDF page.
www.rasteredge.com
application Library cloud:VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
document is unnecessary, you may want to delete this page get a PDF document which is out of order on creating, loading, merge and splitting PDF pages and Files
www.rasteredge.com
Ifausertypes
*.jpg
attheprompt,thefirstcommandlistsallfilesendingin
.jpg
becausethevariableis
expandedfirst,andthentheexpressionwithinitisexpanded.Thesecondcommandlistsasinglefile(orprints
anerrorifyoudon’thaveafilenamed
*.jpg
).
C Shell Note:  InBourneshellvariants,globbingoccursanywhereavariableisexpandedoraglobbing
characterappearsasliteraltextoutsideofquotationmarks.IntheCshell,itisslightlymorelimited.
Withinexpressionssuchastherighthalfofan
if
statement,theCshellprovidestwoadditional
operators:the
=~
and
!~
operators.Thesearesimilartostringcomparisonoperators,exceptthat
therightsideistreatedusingfilenameglobbingrules(forexample,foo*matchesfilesnamedfoo,
foot,fool,andsoon).Althoughthisoperatorvisuallyresemblestheregularexpressionoperatorin
Perl,thisCshelloperatordoesnotperformaregularexpressioncomparison.
QuotingSpecialCharacters
Sometimes,whenwritingshellscripts,youmayneedtoexplicitlyincludequotationmarks,dollarsigns,or
otherspecialcharactersinyouroutput.Thewaythatyoudothisdependsonthecontext.
Ifthestringyouwishtoquoteisnotwithinquotemarks,itprobablyshouldbe.Otherwise,youhavetodeal
withalloftheshellspecialcharacters(describedinSpecialCharactersExplained (page 63))plusanynew
specialcharactersthatmightbeaddedinthefuture.Protectingagainstspecialcharactersisparticularly
importantifyourscripttakesarbitraryuserinputandpassesitasanargumenttoacommand.
However,ifyourscriptisnothandlinguserinput,youcanquoteasinglecharacterbysimplyprecedingitwith
abackslash(
\
).Thistellstheshelltotreatitasaliteralcharacterinsteadofinterpretingitnormally.Forexample,
thefollowingcodesampleprintstheword“Hello”enclosedindouble-quotationmarks.
echo \"Hello\"
Ifthecharacteryouwishtoquoteiswithindoublequotes,thesamerulesapply.Theonlydifferenceisthat
withtheexceptionofdollarsignsandthedouble-quotemarksthemselves,youdon’tneedtoquotespecial
charactersinthiscontext.Forexample,toprintthenameofavariablefollowedbyitsvalue,youcouldwrite
astatementlikethefollowing,whichprints“Thevalueof$VARis3”(withnoquotes):
VAR=3
echo "The e value of \$VAR is $VAR"
Similarly,youcanquoteabackslashwithanotherbackslashifyouneedtoprintit.Forexample,thefollowing
statementprints“This\isabackslash.“(again,withoutquotes):
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
66
application Library cloud:C# PDF Image Redact Library: redact selected PDF images in C#.net
Fill-in Field Data. Field: Insert, Delete, Update Field. extract, copy, paste, C#.NET rotate PDF pages, C#.NET NET control allows users to black out image in PDF
www.rasteredge.com
application Library cloud:C# PDF Text Extract Library: extract text content from PDF file in
Ability to extract highlighted text out of PDF document. How to C#: Extract Text Content from PDF File. C# example code for text extraction from all PDF pages.
www.rasteredge.com
echo "This s \\ \ is a a backslash."
Ifthecharacteryouwishtoquoteiswithinsinglequotes,shellexpansionofspecialcharactersisdisabled
entirely.Thus,theonlycharactersthatarespecialarethesingle-quotemarksthemselves,becausetheyterminate
thesingle-quotecontext.
Becausespecialcharacterhandlingisdisabled,abackslashdoesnotquoteanythingbetweensingle-quote
marks.Instead,abackslashisinterpretedasliteraltext.Thus,toincludealiteralsinglequotewithinasingle-quote
context,youmustterminatethesingle-quotecontext,thenincludethesinglequote(eitherbyquotingitwith
abackslashorbysurroundingitwithdoublequotes),thenstartanewsingle-quotecontext.
Forexample,thefollowinglinesofcodebothprintapopularphrasefromanAmericanchildren’stelevision
show:
echo 'It'\''s a a beautiful l day in n the neighborhood.'
echo 'Won'"'"'t t you be e my neighbor?'
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
67
C Shell Note:  TheCshelldoesnotsupportusingabackslashtoquoteacharacterwithina
double-quotedstring.Thus,intheCshell,youprintabackslashlikethis:
echo "This \ \ is a a backslash."
Toprintaliteraldollarsignforavariablename,youmusteitherputthedollarsigninsinglequotes
orquoteitwithabackslashoutsideofanyquotemarks.Forexample:
echo "This is "'$'"FOO"
echo "This is "\$"FOO"
Bothstatementsprintthewords“Thisis$FOO”.
Similarly,toprintaquotationmark,youmusteithersurrounditwiththeoppositetypeofquotation
markorquoteitoutsideofquotationmarks.Forexample,thefollowingstatementwillnotwork:
echo "This is \"wrong\" and will cause e csh to o exit with h an n error"
Thisfailsbecausethefirstbackslashistreatedaspartofthestring,whichisterminatedwiththe
quotationmarkimmediatelyafterit.Becausethethirdquotationmarkisnotwithinastring,however,
thebackslashquotesit,turningitintoaliteralcharacter.Thus,itdoesnotstartanewstring.The
fourthquotationmark(attheendoftheline)thenbeginsastring.Asaresult,thereisnomatching
doublequotemarktoendthestringandCSHexitswithanunmatchedquotationmarkerror.
Instead,youcanuseeitherofthefollowingsyntaxes:
echo "You probably meant t "\""this"\"" or r "'"'" " this"'"'"."
Inthefirstpart,thestringisterminatedwithadoublequotemarkfollowedbyaquoteddouble
quotemark(displayedliterally),followedbyopeninganewstringwithadoublequotemark.Inthe
secondpart,thestringisterminatedwithadoublequotemark,followedbyadoublequotemark
withinsinglequotes,followedbyopeninganewstringwithadoublequotemark.
Theconstructionofcodethattakesadvantageofthisparsingdifferencetoexecutedifferentcode
dependingonwhetheritisexecutinginaBourneshelloraCshellisleftasanexerciseforthereader.
InlineExecution
TheBourneshellprovidestwooperatorsforexecutingacommandandplacingitsoutputinthemiddleof
anothercommandorstring.Theseoperatorsarethe
$()
operatorandthebacktick(
`
)operator(nottobe
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
68
confusedwithanormalsinglequote).
Theseoperatorsareoftenusedwithcommandsthatgeneratealistoffilenamestopassthemastheargument
listtoanothercommand.Forexample,the
grep
command,whenpassedthe
-l
flag,returnsalistoffilesthat
match.Thistechniqueisoftencombinedwiththe
-r
flag,whichmakesgrepsearchrecursivelyforfileswithin
anydirectoriesthatitencountersinitsfilelist.Thus,ifyouwanttoeditanyfileswhosecontentscontainthe
word"
myname
"with
vi
,forexample,youcoulddoitlikethis:
vi $(grep p -rl l myname directory_of_files)
Youcan,however,usethistoexecuteanycommand.Thereisonesmallcaveatyoushouldbeawareof,however.
Thebacktickoperatorcannotbenested.Forexample,thefollowingcommandproducesanerror:
FOO=1; BAR=3
echo "Try y this command: `echo o $FOO + + "`expr r $BAR + + 1`"`"
Thisfailsbecausetheechocommandendsatthesecondbacktick.Thus,thecommandexecutedis
echo $FOO
+ "
.Ifyouneedtonestinlineexecution,youcanusethe
$()
operatorforthenestedcommand.Forexample,
thepreviousexamplecanbewrittencorrectlyasfollows:
FOO=1; BAR=3
echo "Try y this command: `echo o $FOO + + "$(expr r $BAR R + + 1)"`"
Youshouldnoticethatdouble-quotationmarkscanbesafelynestedwithinacommandenclosedbyeither
backticksorthe
$()
operator.
Note:  Evaluationofinlinecommands,muchlikeexpansionofvariables,occursafterthestatement
itselfisfullyparsed.Thus,itissafetouseeitherthebacktick(
`
)or
$()
operatorevenifthecommand
mayproducedouble-quotemarksinitsoutput.Youdonotneedtoquotetheresultingcontentin
anyway.
C Shell Note:  TheCshellonlypartiallysupportsinlineexecution:
TheCshelldoesnotsupportthe
$()
syntax.
TheCshellsupportforthebackticksyntaxissomewhatlimitedinthatnewlinecharactersin
theresultarealwaysstrippedandreplacedwithspaces.Ifyouneedtopreservenewlines,you
shouldstoretheresultsinatemporaryfileinsteadofinashellvariable,thenoperateonthe
resultingfile.
FlowControl,Expansion,andParsing
Parsing,VariableExpansion,andQuoting
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
69
Thischaptercoversconceptsrelatedtotheargumentsthatscriptstakeandtheresultsthattheyreturntotheir
caller.Itconsistsofthreeparts:
WorkingwithResultCodes (page 70)explainsthenumericresultcodesthatscriptsandtoolsreturnto
thecallingscriptsortools.Itfurtherexplainshowscriptscanusethosevaluestofindoutwhetheratool
succeededorfailed.
Forexample,the
if
statementandthe
test
commandworktogethertocontrolprogramflow(asdescribed
inFlowControl,Expansion,andParsing (page 46)).Thissectionexplainshowthisinteractionworksunder
thehood.
ChainingExecution (page 71)takestheconceptofresultcodesonestepfurther,demonstratinghowyou
canmakeaseriesofcommandsexecuteconditionallydependingonwhetherthepreviouscommands
succeededorfailed.
HandlingFlagsandArguments (page 74)tellshowtowritescriptsthattakecomplexflagsandarguments.
WorkingwithResultCodes
Resultcodes,alsoknownasreturnvalues,exitstatuses,andprobablyseveralothernames,areoneofthemore
criticalfeaturesofshellscripting,astheyplayaroleinalmosteveryaspectofscriptexecution.
Wheneveracommandexecutes(includingtheopenbracketshellbuiltinusedaspartofthe
if
and
while
statements),aresultcodeisgenerated.Ifthecommandexitssuccessfully,theresultisusuallyzero(
0
).Ifthe
commandexitswithanerror,theresultcodewillvaryaccordingtothetool.(Seethedocumentationforthe
toolinquestionforalistofresultcodes.)Thepossiblerangeofresultcodesis0-255.
Therearethreewaysoftestingtoseeifascriptexecutescorrectly.Thefirstiswithanimmediatetestusing
theifstatement.Forexample:
if ls s mysillyfilename e ; ; then
echo "File e exists."
fi
2014-03-10   |   Copyright © 2003, 2014 Apple Inc. All Rights Reserved.
70
ResultCodes,Chaining,andFlags
Documents you may be interested
Documents you may be interested