|
void | backwardDerivatives (const ComputationGraph &g, const std::vector< T > &values, std::vector< T > &derivatives, const std::vector< std::function< std::vector< T >(const std::vector< const T * > &, const T *)> > &grad, std::function< void(T &)> deleter={}, const std::vector< bool > &keepNodes={}) |
|
std::size_t | cg_const (ComputationGraph &g, const double value) |
|
std::size_t | cg_var (ComputationGraph &g, const std::string &name, const bool createIfNotExists) |
|
std::size_t | cg_add (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_subtract (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_negative (ComputationGraph &g, const std::size_t a, const std::string &label) |
|
std::size_t | cg_mult (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_div (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_conditionalExpectation (ComputationGraph &g, const std::size_t regressand, const std::vector< std::size_t > ®ressor, const std::size_t filter, const std::string &label) |
|
std::size_t | cg_indicatorEq (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_indicatorGt (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_indicatorGeq (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_min (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_max (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_abs (ComputationGraph &g, const std::size_t a, const std::string &label) |
|
std::size_t | cg_exp (ComputationGraph &g, const std::size_t a, const std::string &label) |
|
std::size_t | cg_sqrt (ComputationGraph &g, const std::size_t a, const std::string &label) |
|
std::size_t | cg_log (ComputationGraph &g, const std::size_t a, const std::string &label) |
|
std::size_t | cg_pow (ComputationGraph &g, const std::size_t a, const std::size_t b, const std::string &label) |
|
std::size_t | cg_normalCdf (ComputationGraph &g, const std::size_t a, const std::string &label) |
|
std::size_t | cg_normalPdf (ComputationGraph &g, const std::size_t a, const std::string &label) |
|
std::vector< ExternalRandomVariableOp > | getExternalRandomVariableOps () |
|
std::vector< ExternalRandomVariableGrad > | getExternalRandomVariableGradients () |
|
void | forwardDerivatives (const ComputationGraph &g, const std::vector< T > &values, std::vector< T > &derivatives, const std::vector< std::function< std::vector< T >(const std::vector< const T * > &, const T *)> > &grad, std::function< void(T &)> deleter={}, const std::vector< bool > &keepNodes={}) |
|
void | forwardEvaluation (const ComputationGraph &g, std::vector< T > &values, const std::vector< std::function< T(const std::vector< const T * > &)> > &ops, std::function< void(T &)> deleter={}, bool keepValuesForDerivatives=true, const std::vector< std::function< std::pair< std::vector< bool >, bool >(const std::size_t)> > &opRequiresNodesForDerivatives={}, const std::vector< bool > &keepNodes={}) |
|
std::string | ssaForm (const ComputationGraph &g, const std::vector< std::string > &opCodeLabels, const std::vector< T > &values) |
|
template std::string | ssaForm (const ComputationGraph &g, const std::vector< std::string > &opCodeLabels, const std::vector< double > &values) |
|
template std::string | ssaForm (const ComputationGraph &g, const std::vector< std::string > &opCodeLabels, const std::vector< RandomVariable > &values) |
|
set< Date > | pricingDates (const Date &s, const Date &e, const Calendar &pricingCalendar, bool excludeStart, bool includeEnd, bool useBusinessDays) |
|
bool | isPricingDate (const Date &d, const Calendar &pricingCalendar, bool useBusinessDays) |
|
std::set< QuantLib::Date > | pricingDates (const QuantLib::Date &start, const QuantLib::Date &end, const QuantLib::Calendar &pricingCalendar, bool excludeStart, bool includeEnd, bool useBusinessDays=true) |
|
bool | isPricingDate (const QuantLib::Date &d, const QuantLib::Calendar &pricingCalendar, bool useBusinessDays=true) |
|
void | setCouponPricer (const Leg &leg, const boost::shared_ptr< FloatingRateCouponPricer > &) |
|
void | setCouponPricers (const Leg &leg, const std::vector< boost::shared_ptr< FloatingRateCouponPricer > > &) |
|
std::ostream & | operator<< (std::ostream &out, EquityReturnType t) |
|
EquityReturnType | parseEquityReturnType (const std::string &str) |
|
Leg | makeFloatingAnnuityNominalLeg (const Leg &floatingAnnuityLeg) |
|
boost::shared_ptr< CashFlow > | unpackIndexedCouponOrCashFlow (const boost::shared_ptr< CashFlow > &c) |
|
boost::shared_ptr< Coupon > | unpackIndexedCoupon (const boost::shared_ptr< Coupon > &c) |
|
boost::shared_ptr< CashFlow > | unpackIndexWrappedCashFlow (const boost::shared_ptr< CashFlow > &c) |
|
Real | getIndexedCouponOrCashFlowMultiplier (const boost::shared_ptr< CashFlow > &c) |
|
std::vector< std::tuple< Date, boost::shared_ptr< Index >, Real > > | getIndexedCouponOrCashFlowFixingDetails (const boost::shared_ptr< CashFlow > &c) |
|
Real | jyExpectedIndexRatio (const boost::shared_ptr< CrossAssetModel > &model, Size index, Time S, Time T, bool indexIsInterpolated) |
|
QuantLib::Real | jyExpectedIndexRatio (const boost::shared_ptr< CrossAssetModel > &model, QuantLib::Size index, QuantLib::Time S, QuantLib::Time T, bool indexIsInterpolated) |
|
bool | isMetal (const Currency ¤cy) |
|
bool | isMetal (const QuantLib::Currency ¤cy) |
|
void | applyDividends (const std::set< Dividend > ÷nds) |
|
bool | operator< (const Dividend &d1, const Dividend &d2) |
|
bool | operator== (const Dividend &d1, const Dividend &d) |
|
std::ostream & | operator<< (std::ostream &out, Dividend dividend) |
|
Real | sum (const Cash &c, const Cash &d) |
|
Real | sumDiscounted (const Cash &c, const Cash &d) |
|
std::ostream & | operator<< (std::ostream &out, const CashFlowResults &t) |
|
CashFlowResults | standardCashFlowResults (const boost::shared_ptr< CashFlow > &c, const Real multiplier, const std::string &type, const Size legNo, const Currency ¤cy, const Handle< YieldTermStructure > &discountCurve) |
|
CashFlowResults | populateCashFlowResultsFromCashflow (const boost::shared_ptr< QuantLib::CashFlow > &c, const QuantLib::Real multiplier, const QuantLib::Size legNo, const QuantLib::Currency ¤cy) |
|
CashFlowResults | standardCashFlowResults (const boost::shared_ptr< QuantLib::CashFlow > &c, const QuantLib::Real multiplier=1.0, const std::string &type="Unspecified", const QuantLib::Size legNo=0, const QuantLib::Currency ¤cy=QuantLib::Currency(), const QuantLib::Handle< QuantLib::YieldTermStructure > &discountCurve=QuantLib::Handle< QuantLib::YieldTermStructure >()) |
|
| MakeCreditDefaultSwap::operator boost::shared_ptr< QuantExt::CreditDefaultSwap > () const |
|
Leg | getOisCapFloorUnderlying (const Leg &oisCapFloor) |
|
std::vector< std::pair< Real, Real > > | getOisCapFloorStrikes (const Leg &oisCapFloor) |
|
QuantLib::SparseMatrix | inverse (QuantLib::SparseMatrix m) |
|
Matrix | blockMatrixInverse (const Matrix &A, const std::vector< Size > &blockIndices) |
|
QuantLib::SparseMatrix | blockMatrixInverse (const QuantLib::SparseMatrix &A, const std::vector< Size > &blockIndices) |
|
Real | modifiedMaxNorm (const QuantLib::SparseMatrix &A) |
|
QuantLib::Matrix | blockMatrixInverse (const QuantLib::Matrix &A, const std::vector< QuantLib::Size > &blockIndices) |
|
QuantLib::SparseMatrix | blockMatrixInverse (const QuantLib::SparseMatrix &A, const std::vector< QuantLib::Size > &blockIndices) |
|
BucketedDistribution | operator+ (const BucketedDistribution &lhs, const BucketedDistribution &rhs) |
|
BucketedDistribution | operator* (Real factor, const BucketedDistribution &rhs) |
|
BucketedDistribution | operator* (const BucketedDistribution &lhs, QuantLib::Real factor) |
|
BucketedDistribution | operator* (QuantLib::Real factor, const BucketedDistribution &rhs) |
|
T * | createComputeFrameworkCreator () |
|
Real | deltaVar (const Matrix &omega, const Array &delta, const Real p, const CovarianceSalvage &sal=NoCovarianceSalvage()) |
|
Real | deltaGammaVarNormal (const Matrix &omega, const Array &delta, const Matrix &gamma, const Real p, const CovarianceSalvage &sal=NoCovarianceSalvage()) |
|
Real | deltaGammaVarCornishFisher (const Matrix &omega, const Array &delta, const Matrix &gamma, const Real p, const CovarianceSalvage &sal) |
|
Real | deltaGammaVarSaddlepoint (const Matrix &omega, const Array &delta, const Matrix &gamma, const Real p, const CovarianceSalvage &sal) |
|
Real | deltaGammaVarMc (const Matrix &omega, const Array &delta, const Matrix &gamma, const Real p, const Size paths, const Size seed, const CovarianceSalvage &sal=NoCovarianceSalvage()) |
|
std::vector< Real > | deltaGammaVarMc (const Matrix &omega, const Array &delta, const Matrix &gamma, const std::vector< Real > &p, const Size paths, const Size seed, const CovarianceSalvage &sal=NoCovarianceSalvage()) |
|
bool | operator< (const Distributionpair &p1, const Distributionpair &p2) |
|
bool | operator> (const Distributionpair &p1, const Distributionpair &p2) |
|
void | fillIncompleteMatrix (Matrix &mat, bool interpRows, Real blank) |
|
Real | kendallRankCorrelation (I1 begin1, I1 end1, I2 begin2) |
|
bool | supports_Logm () |
|
bool | supports_Expm () |
|
QuantLib::Matrix | Logm (const QuantLib::Matrix &m) |
|
QuantLib::Matrix | Expm (const QuantLib::Matrix &m) |
|
bool | operator== (const Filter &a, const Filter &b) |
|
bool | operator!= (const Filter &a, const Filter &b) |
|
Filter | operator&& (Filter x, const Filter &y) |
|
Filter | operator|| (Filter x, const Filter &y) |
|
Filter | equal (Filter x, const Filter &y) |
|
Filter | operator! (Filter x) |
|
void | checkTimeConsistency (const RandomVariable &x, const RandomVariable &y) |
|
bool | operator== (const RandomVariable &a, const RandomVariable &b) |
|
bool | operator!= (const RandomVariable &a, const RandomVariable b) |
|
RandomVariable | operator+ (RandomVariable x, const RandomVariable &y) |
|
RandomVariable | operator- (RandomVariable x, const RandomVariable &y) |
|
RandomVariable | operator* (RandomVariable x, const RandomVariable &y) |
|
RandomVariable | operator/ (RandomVariable x, const RandomVariable &y) |
|
RandomVariable | max (RandomVariable x, const RandomVariable &y) |
|
RandomVariable | min (RandomVariable x, const RandomVariable &y) |
|
RandomVariable | pow (RandomVariable x, const RandomVariable &y) |
|
RandomVariable | operator- (RandomVariable x) |
|
RandomVariable | abs (RandomVariable x) |
|
RandomVariable | exp (RandomVariable x) |
|
RandomVariable | log (RandomVariable x) |
|
RandomVariable | sqrt (RandomVariable x) |
|
RandomVariable | sin (RandomVariable x) |
|
RandomVariable | cos (RandomVariable x) |
|
RandomVariable | normalCdf (RandomVariable x) |
|
RandomVariable | normalPdf (RandomVariable x) |
|
Filter | close_enough (const RandomVariable &x, const RandomVariable &y) |
|
bool | close_enough_all (const RandomVariable &x, const RandomVariable &y) |
|
RandomVariable | conditionalResult (const Filter &f, RandomVariable x, const RandomVariable &y) |
|
RandomVariable | indicatorEq (RandomVariable x, const RandomVariable &y, const Real trueVal, const Real falseVal) |
|
RandomVariable | indicatorGt (RandomVariable x, const RandomVariable &y, const Real trueVal, const Real falseVal) |
|
RandomVariable | indicatorGeq (RandomVariable x, const RandomVariable &y, const Real trueVal, const Real falseVal) |
|
Filter | operator< (const RandomVariable &x, const RandomVariable &y) |
|
Filter | operator<= (const RandomVariable &x, const RandomVariable &y) |
|
Filter | operator> (const RandomVariable &x, const RandomVariable &y) |
|
Filter | operator>= (const RandomVariable &x, const RandomVariable &y) |
|
RandomVariable | applyFilter (RandomVariable x, const Filter &f) |
|
RandomVariable | applyInverseFilter (RandomVariable x, const Filter &f) |
|
Array | regressionCoefficients (RandomVariable r, const std::vector< const RandomVariable * > ®ressor, const std::vector< std::function< RandomVariable(const std::vector< const RandomVariable * > &)> > &basisFn, const Filter &filter, const RandomVariableRegressionMethod regressionMethod, const std::string &debugLabel) |
|
RandomVariable | conditionalExpectation (const std::vector< const RandomVariable * > ®ressor, const std::vector< std::function< RandomVariable(const std::vector< const RandomVariable * > &)> > &basisFn, const Array &coefficients) |
|
RandomVariable | conditionalExpectation (const RandomVariable &r, const std::vector< const RandomVariable * > ®ressor, const std::vector< std::function< RandomVariable(const std::vector< const RandomVariable * > &)> > &basisFn, const Filter &filter, const RandomVariableRegressionMethod regressionMethod) |
|
RandomVariable | expectation (const RandomVariable &r) |
|
RandomVariable | variance (const RandomVariable &r) |
|
RandomVariable | black (const RandomVariable &omega, const RandomVariable &t, const RandomVariable &strike, const RandomVariable &forward, const RandomVariable &impliedVol) |
|
RandomVariable | indicatorDerivative (const RandomVariable &x, const double eps) |
|
bool | operator!= (const RandomVariable &a, const RandomVariable &b) |
|
std::ostream & | operator<< (std::ostream &out, const randomvariable_output_size &r) |
|
std::ostream & | operator<< (std::ostream &out, const randomvariable_output_pattern &p) |
|
std::ostream & | operator<< (std::ostream &out, const Filter &f) |
|
std::ostream & | operator<< (std::ostream &out, const RandomVariable &r) |
|
std::vector< std::string > | getRandomVariableOpLabels () |
|
std::vector< RandomVariableOp > | getRandomVariableOps (const Size size, const std::map< Size, std::vector< std::function< RandomVariable(const std::vector< const RandomVariable * > &)> > > &basisFn) |
|
std::vector< RandomVariableGrad > | getRandomVariableGradients (const Size size, const double eps, const std::vector< std::function< RandomVariable(const std::vector< const RandomVariable * > &)> > &basisFn) |
|
std::vector< RandomVariableOpNodeRequirements > | getRandomVariableOpNodeRequirements () |
|
Real | Trace (const Matrix &m) |
|
void | interpolateVariatesWithBrownianBridge (const std::vector< QuantLib::Real > ×, std::vector< std::vector< QuantExt::RandomVariable > > &variates, const Size seed) |
|
boost::shared_ptr< MultiPathGeneratorBase > | makeMultiPathGenerator (const SequenceType s, const boost::shared_ptr< StochasticProcess > &process, const TimeGrid &timeGrid, const BigNatural seed, const SobolBrownianGenerator::Ordering ordering=SobolBrownianGenerator::Steps, const SobolRsg::DirectionIntegers directionIntegers=SobolRsg::JoeKuoD7) |
|
std::ostream & | operator<< (std::ostream &out, const SequenceType s) |
|
boost::shared_ptr< MultiPathVariateGeneratorBase > | makeMultiPathVariateGenerator (const SequenceType s, const Size dimension, const Size timeSteps, const BigNatural seed, const SobolBrownianGenerator::Ordering ordering, const SobolRsg::DirectionIntegers directionIntegers) |
|
std::string | arbitrageAsString (const CarrMadanMarginalProbabilityClass &cm) |
|
template std::string | arbitrageAsString (const CarrMadanMarginalProbability &cm) |
|
template std::string | arbitrageAsString (const CarrMadanMarginalProbabilitySafeStrikes &cm) |
|
std::string | arbitrageAsString (const CarrMadanSurface &cm) |
|
std::ostream & | operator<< (std::ostream &out, const CrossAssetModel::AssetType &type) |
|
Handle< ZeroInflationTermStructure > | inflationTermStructure (const boost::shared_ptr< CrossAssetModel > &model, Size index) |
|
QuantLib::Handle< QuantLib::ZeroInflationTermStructure > | inflationTermStructure (const boost::shared_ptr< CrossAssetModel > &model, QuantLib::Size index) |
|
Real | exactBachelierImpliedVolatility (Option::Type optionType, Real strike, Real forward, Real tte, Real bachelierPrice, Real discount) |
|
Real | inflationGrowth (const boost::shared_ptr< CrossAssetModel > &model, Size index, Time S, Time T, Real irState, Real rrState, bool indexIsInterpolated) |
|
QuantLib::Real | inflationGrowth (const boost::shared_ptr< CrossAssetModel > &model, QuantLib::Size index, QuantLib::Time S, QuantLib::Time T, QuantLib::Real irState, QuantLib::Real rrState, bool indexIsInterpolated) |
|
std::map< std::string, boost::any > | getAdditionalResultsMap (const LgmCalibrationInfo &info) |
|
Real | normalSabrVolatility (Rate strike, Rate forward, Time expiryTime, Real alpha, Real nu, Real rho) |
|
Real | normalSabrAlphaFromAtmVol (Rate forward, Time expiryTime, Real atmVol, Real nu, Real rho) |
|
Real | normalFreeBoundarySabrVolatility (Rate strike, Rate forward, Time expiryTime, Real alpha, Real nu, Real rho) |
|
boost::shared_ptr< CrossAssetModel > | getProjectedCrossAssetModel (const boost::shared_ptr< CrossAssetModel > &model, const std::vector< std::pair< CrossAssetModel::AssetType, Size > > &selectedComponents, std::vector< Size > &projectedStateProcessIndices) |
|
std::vector< Size > | getStateProcessProjection (const boost::shared_ptr< CrossAssetModel > &model, const boost::shared_ptr< CrossAssetModel > &projectedModel) |
|
void | sanitiseTransitionMatrix (Matrix &m) |
|
void | checkTransitionMatrix (const Matrix &t) |
|
void | checkGeneratorMatrix (const Matrix &g) |
|
Matrix | generator (const Matrix &t, const Real horizon) |
|
std::vector< Real > | creditStateBoundaries (const I &begin, const I &end) |
|
void | print (Distribution &dist, std::string fileName) |
|
Real | getCallPriceAmount (const FdConvertibleBondEvents::CallData &cd, Real notional, Real accruals) |
|
Real | interpolateValueFromPlanes (const Real conversionRatio, const std::vector< Array > &value, const std::vector< Real > &stochasticConversionRatios, const Size j) |
|
Date | getSimulationDates (const Date &today, const Date &latestOptionDate, const boost::shared_ptr< CashFlow > &c) |
|
bool | isCashflowRelevantForExercise (const Date &today, const Date &exercise, const boost::shared_ptr< CashFlow > &c) |
|
RandomVariable | getUnderlyingCashflowPv (const LgmVectorised &lgm, const Real t, const RandomVariable &x, const Handle< YieldTermStructure > &discountCurve, const boost::shared_ptr< CashFlow > &c) |
|
RandomVariable | getRebatePv (const LgmVectorised &lgm, const Real t, const RandomVariable &x, const Handle< YieldTermStructure > &discountCurve, const boost::shared_ptr< RebatedExercise > &exercise, const Date &d) |
|
Real | getStrikeFromDelta (Option::Type optionType, Real delta, DeltaVolQuote::DeltaType dt, Real spot, Real domDiscount, Real forDiscount, boost::shared_ptr< BlackVolTermStructure > vol, Real t, Real accuracy, Size maxIterations) |
|
Real | getAtmStrike (DeltaVolQuote::DeltaType dt, DeltaVolQuote::AtmType at, Real spot, Real domDiscount, Real forDiscount, boost::shared_ptr< BlackVolTermStructure > vol, Real t, Real accuracy, Size maxIterations) |
|
ostream & | operator<< (std::ostream &out, CapFloorHelper::Type type) |
|
ostream & | operator<< (std::ostream &out, CapFloorHelper::QuoteType type) |
|
ostream & | operator<< (std::ostream &out, CapFloorTermVolSurfaceExact::InterpolationMethod method) |
|
std::ostream & | operator<< (std::ostream &out, const Stickyness &t) |
|
std::ostream & | operator<< (std::ostream &out, const ReactionToTimeDecay &t) |
|
std::ostream & | operator<< (std::ostream &out, const YieldCurveRollDown &t) |
|
Date | getImmDate (Date asof, Size i) |
|
Real | getOisAtmLevel (const boost::shared_ptr< OvernightIndex > &on, const Date &fixingDate, const Period &rateComputationPeriod) |
|
Real | getBMAAtmLevel (const boost::shared_ptr< BMAIndex > &bma, const Date &fixingDate, const Period &rateComputationPeriod) |
|
boost::shared_ptr< CashFlow > | makeCommodityCashflowForBasisFuture (const QuantLib::Date &start, const QuantLib::Date &end, const boost::shared_ptr< CommodityIndex > &baseIndex, const boost::shared_ptr< FutureExpiryCalculator > &baseFec, bool baseIsAveraging, const QuantLib::Date &paymentDate) |
|
Time | inflationTime (const Date &date, const boost::shared_ptr< InflationTermStructure > &inflationTs, bool indexIsInterpolated, const DayCounter &dayCounter) |
|
Real | inflationGrowth (const Handle< ZeroInflationTermStructure > &ts, Time t, const DayCounter &dc, bool indexIsInterpolated) |
|
Real | inflationGrowth (const Handle< ZeroInflationTermStructure > &ts, Time t, bool indexIsInterpolated) |
|
Real | inflationLinkedBondQuoteFactor (const boost::shared_ptr< QuantLib::Bond > &bond) |
|
QuantLib::Time | inflationTime (const QuantLib::Date &date, const boost::shared_ptr< QuantLib::InflationTermStructure > &inflationTs, bool indexIsInterpolated, const QuantLib::DayCounter &dayCounter=QuantLib::DayCounter()) |
|
QuantLib::Real | inflationGrowth (const QuantLib::Handle< QuantLib::ZeroInflationTermStructure > &ts, QuantLib::Time t, const QuantLib::DayCounter &dc, bool indexIsInterpolated) |
|
QuantLib::Real | inflationGrowth (const QuantLib::Handle< QuantLib::ZeroInflationTermStructure > &ts, QuantLib::Time t, bool indexIsInterpolated) |
|
std::tuple< Size, Size, Real > | interpolationIndices (const T &x, const Real v) |
|
Real | periodToTime (const Period &p) |
|
QuantLib::Period | implyIndexTerm (const Date &startDate, const Date &endDate) |
|
QuantLib::Date | lowerDate (const Real t, const QuantLib::Date &refDate, const QuantLib::DayCounter &dc) |
|
QuantLib::Period | tenorFromLength (const QuantLib::Real length) |
|
QuantLib::Integer | daylightSavingCorrection (const std::string &location, const QuantLib::Date &start, const QuantLib::Date &end) |
|
QuantLib::Real | periodToTime (const QuantLib::Period &p) |
|
QuantLib::Period | implyIndexTerm (const QuantLib::Date &startDate, const QuantLib::Date &endDate) |
|
QuantLib::Date | lowerDate (const QuantLib::Real t, const QuantLib::Date &refDate, const QuantLib::DayCounter &dc) |
|
void | setCouponPricer (const Leg &leg, const boost::shared_ptr< FloatingRateCouponPricer > &) |
|
void | setCouponPricers (const Leg &leg, const std::vector< boost::shared_ptr< FloatingRateCouponPricer > > &) |
|