2024 Q4 Form 10-Q Financial Statement

#000109269924000074 Filed on October 24, 2024

View on sec.gov

Income Statement

Concept 2024 Q4 2024 Q3
Revenue $163.7M
YoY Change 20.66%
Cost Of Revenue $51.62M
YoY Change 13.41%
Gross Profit $112.1M
YoY Change 24.32%
Gross Profit Margin 68.46%
Selling, General & Admin $64.73M
YoY Change 24.01%
% of Gross Profit 57.76%
Research & Development $15.29M
YoY Change 12.79%
% of Gross Profit 13.65%
Depreciation & Amortization $11.10M
YoY Change 30.62%
% of Gross Profit 9.91%
Operating Expenses $86.49M
YoY Change 24.37%
Operating Profit $25.57M
YoY Change 24.14%
Interest Expense $3.781M
YoY Change 40.04%
% of Operating Profit 14.79%
Other Income/Expense, Net $3.778M
YoY Change 121.97%
Pretax Income $29.35M
YoY Change 31.6%
Income Tax $5.889M
% Of Pretax Income 20.07%
Net Earnings $23.46M
YoY Change 39.29%
Net Earnings / Revenue 14.33%
Basic Earnings Per Share $0.63
Diluted Earnings Per Share $0.62
COMMON SHARES
Basic Shares Outstanding 37.57M shares 37.10M shares
Diluted Shares Outstanding 38.00M shares

Balance Sheet

Concept 2024 Q4 2024 Q3
SHORT-TERM ASSETS
Cash & Short-Term Investments $205.8M
YoY Change -14.01%
Cash & Equivalents $198.8M
Short-Term Investments $6.931M
Other Short-Term Assets $18.64M
YoY Change 18.4%
Inventory
Prepaid Expenses
Receivables $55.57M
Other Receivables $0.00
Total Short-Term Assets $344.6M
YoY Change -4.2%
LONG-TERM ASSETS
Property, Plant & Equipment $36.15M
YoY Change -0.17%
Goodwill $423.5M
YoY Change 68.03%
Intangibles
YoY Change
Long-Term Investments
YoY Change
Other Assets $1.240M
YoY Change 5.35%
Total Long-Term Assets $658.7M
YoY Change 54.01%
TOTAL ASSETS
Total Short-Term Assets $344.6M
Total Long-Term Assets $658.7M
Total Assets $1.003B
YoY Change 27.42%
SHORT-TERM LIABILITIES
YoY Change
Accounts Payable $8.107M
YoY Change 30.86%
Accrued Expenses $8.968M
YoY Change 0.76%
Deferred Revenue $78.88M
YoY Change 9.78%
Short-Term Debt $0.00
YoY Change
Long-Term Debt Due
YoY Change
Total Short-Term Liabilities $146.3M
YoY Change 10.13%
LONG-TERM LIABILITIES
Long-Term Debt $0.00
YoY Change
Other Long-Term Liabilities $640.0K
YoY Change -96.32%
Total Long-Term Liabilities $640.0K
YoY Change -96.32%
TOTAL LIABILITIES
Total Short-Term Liabilities $146.3M
Total Long-Term Liabilities $640.0K
Total Liabilities $173.9M
YoY Change 8.33%
SHAREHOLDERS EQUITY
Retained Earnings $318.5M
YoY Change 32.71%
Common Stock $611.8M
YoY Change 17.57%
Preferred Stock
YoY Change
Treasury Stock (at cost)
YoY Change
Treasury Stock Shares
Shareholders Equity $829.4M
YoY Change
Total Liabilities & Shareholders Equity $1.003B
YoY Change 27.42%

Cashflow Statement

Concept 2024 Q4 2024 Q3
OPERATING ACTIVITIES
Net Income $23.46M
YoY Change 39.29%
Depreciation, Depletion And Amortization $11.10M
YoY Change 30.62%
Cash From Operating Activities $53.33M
YoY Change 21.76%
INVESTING ACTIVITIES
Capital Expenditures $5.240M
YoY Change -8.07%
Acquisitions
YoY Change
Other Investing Activities -$93.06M
YoY Change 34.09%
Cash From Investing Activities -$98.30M
YoY Change 30.89%
FINANCING ACTIVITIES
Cash Dividend Paid
YoY Change
Common Stock Issuance & Retirement, Net
YoY Change
Debt Paid & Issued, Net
YoY Change
Cash From Financing Activities 2.253M
YoY Change 125.3%
NET CHANGE
Cash From Operating Activities 53.33M
Cash From Investing Activities -98.30M
Cash From Financing Activities 2.253M
Net Change In Cash -42.72M
YoY Change 40.97%
FREE CASH FLOW
Cash From Operating Activities $53.33M
Capital Expenditures $5.240M
Free Cash Flow $48.09M
YoY Change 26.22%

Facts In Submission

Frame Concept Type Concept / XBRL Key Value Unit
dei Document Quarterly Report
DocumentQuarterlyReport
true
dei Document Period End Date
DocumentPeriodEndDate
2024-09-30
dei Document Transition Report
DocumentTransitionReport
false
dei Entity Registrant Name
EntityRegistrantName
SPS COMMERCE, INC.
dei Entity Incorporation State Country Code
EntityIncorporationStateCountryCode
DE
dei Entity Tax Identification Number
EntityTaxIdentificationNumber
41-2015127
dei Entity Address City Or Town
EntityAddressCityOrTown
Minneapolis
dei Entity Address State Or Province
EntityAddressStateOrProvince
MN
dei Entity Address Postal Zip Code
EntityAddressPostalZipCode
55402
dei City Area Code
CityAreaCode
612
dei Local Phone Number
LocalPhoneNumber
435-9400
dei Security12b Title
Security12bTitle
Common Stock, par value $0.001 per share
dei Trading Symbol
TradingSymbol
SPSC
dei Security Exchange Name
SecurityExchangeName
NASDAQ
dei Entity Current Reporting Status
EntityCurrentReportingStatus
Yes
dei Entity Interactive Data Current
EntityInteractiveDataCurrent
Yes
dei Entity Filer Category
EntityFilerCategory
Large Accelerated Filer
CY2023Q3 us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
36728000 shares
CY2024Q3 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37996000 shares
CY2023Q3 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37584000 shares
us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37785000 shares
us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37417000 shares
CY2023Q3 us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
10780000 usd
CY2023Q3 us-gaap Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
705000 usd
CY2023Q3 us-gaap Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
344000 usd
dei Entity Address Address Line2
EntityAddressAddressLine2
Suite 1000
dei Entity Small Business
EntitySmallBusiness
false
dei Entity Emerging Growth Company
EntityEmergingGrowthCompany
false
dei Entity Shell Company
EntityShellCompany
false
CY2023Q3 us-gaap Net Income Loss
NetIncomeLoss
16842000 usd
CY2023Q3 us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-2966000 usd
CY2023Q3 us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
570000 usd
CY2023Q3 us-gaap Stockholders Equity
StockholdersEquity
626844000 usd
CY2024Q2 us-gaap Stockholders Equity
StockholdersEquity
703421000 usd
CY2024Q3 us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
9996000 usd
CY2024Q3 us-gaap Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
1884000 usd
CY2024Q3 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
296357 shares
us-gaap Research And Development Expense
ResearchAndDevelopmentExpense
39438000 usd
us-gaap General And Administrative Expense
GeneralAndAdministrativeExpense
76575000 usd
us-gaap General And Administrative Expense
GeneralAndAdministrativeExpense
64275000 usd
us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
15648000 usd
us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
11118000 usd
CY2024Q3 us-gaap Operating Expenses
OperatingExpenses
86491000 usd
CY2023Q3 us-gaap Operating Expenses
OperatingExpenses
69541000 usd
us-gaap Operating Expenses
OperatingExpenses
247590000 usd
CY2024Q3 us-gaap Operating Income Loss
OperatingIncomeLoss
25571000 usd
CY2023Q3 us-gaap Operating Income Loss
OperatingIncomeLoss
20599000 usd
CY2024Q3 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
3778000 usd
CY2024Q3 us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
3332000 usd
CY2024Q3 us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
84000 usd
CY2024Q3 us-gaap Stockholders Equity
StockholdersEquity
829365000 usd
CY2023Q4 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
107344000 usd
dei Document Type
DocumentType
10-Q
dei Entity File Number
EntityFileNumber
001-34702
CY2024Q3 us-gaap Preferred Stock Shares Outstanding
PreferredStockSharesOutstanding
0 shares
CY2022Q4 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
70179000 usd
CY2023Q3 us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
135661000 usd
CY2024Q3 us-gaap Cost Of Revenue
CostOfRevenue
51624000 usd
CY2023Q3 us-gaap Cost Of Revenue
CostOfRevenue
45521000 usd
CY2024Q3 us-gaap Gross Profit
GrossProfit
112062000 usd
CY2023Q3 us-gaap Gross Profit
GrossProfit
90140000 usd
CY2024Q3 us-gaap Selling And Marketing Expense
SellingAndMarketingExpense
37577000 usd
CY2023Q3 us-gaap Selling And Marketing Expense
SellingAndMarketingExpense
30289000 usd
CY2024Q3 us-gaap Research And Development Expense
ResearchAndDevelopmentExpense
15292000 usd
CY2023Q3 us-gaap Research And Development Expense
ResearchAndDevelopmentExpense
13558000 usd
CY2024Q3 us-gaap General And Administrative Expense
GeneralAndAdministrativeExpense
27152000 usd
CY2023Q3 us-gaap General And Administrative Expense
GeneralAndAdministrativeExpense
21906000 usd
CY2024Q3 us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
6470000 usd
CY2023Q3 us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
3788000 usd
CY2024Q3 us-gaap Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
29349000 usd
CY2023Q3 us-gaap Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
22301000 usd
CY2024Q3 us-gaap Income Tax Expense Benefit
IncomeTaxExpenseBenefit
5889000 usd
CY2023Q3 us-gaap Income Tax Expense Benefit
IncomeTaxExpenseBenefit
5459000 usd
CY2024Q3 us-gaap Net Income Loss
NetIncomeLoss
23460000 usd
CY2023Q3 us-gaap Net Income Loss
NetIncomeLoss
16842000 usd
CY2024Q3 us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
3332000 usd
CY2024Q3 us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
28000 usd
CY2023Q3 us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
190000 usd
CY2024Q3 us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
84000 usd
CY2023Q3 us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
570000 usd
CY2023Q3 us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
137000 usd
CY2024Q3 us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
248000 usd
CY2023Q3 us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
412000 usd
CY2024Q3 us-gaap Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
3168000 usd
CY2023Q3 us-gaap Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
-2808000 usd
CY2024Q3 us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
26628000 usd
CY2023Q3 us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
14034000 usd
CY2024Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.63
CY2023Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.46
CY2023Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.45
dei Document Period End Date
DocumentPeriodEndDate
2024-09-30
dei Entity Central Index Key
EntityCentralIndexKey
0001092699
dei Current Fiscal Year End Date
CurrentFiscalYearEndDate
--12-31
dei Document Fiscal Year Focus
DocumentFiscalYearFocus
2024
dei Document Fiscal Period Focus
DocumentFiscalPeriodFocus
Q3
dei Amendment Flag
AmendmentFlag
false
dei Security Exchange Name
SecurityExchangeName
NASDAQ
dei Entity Address Address Line1
EntityAddressAddressLine1
333 South Seventh Street
CY2024Q4 dei Entity Common Stock Shares Outstanding
EntityCommonStockSharesOutstanding
37568061 shares
CY2024Q3 us-gaap Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
198842000 usd
CY2023Q4 us-gaap Cash And Cash Equivalents At Carrying Value
CashAndCashEquivalentsAtCarryingValue
219081000 usd
CY2024Q3 us-gaap Short Term Investments
ShortTermInvestments
6931000 usd
CY2023Q4 us-gaap Short Term Investments
ShortTermInvestments
56359000 usd
CY2024Q3 us-gaap Accounts Receivable Gross Current
AccountsReceivableGrossCurrent
60044000 usd
CY2023Q3 us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-2966000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-886000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-1446000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
363000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
459000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1089000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1376000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
537000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
390000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
1169000 usd
us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
58088000 usd
us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
45574000 usd
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.60
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.28
CY2024Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.62
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.57
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.25
CY2024Q3 us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
37447000 shares
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
37192000 shares
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
36584000 shares
CY2023Q2 us-gaap Stockholders Equity
StockholdersEquity
600981000 usd
CY2023Q3 us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
412000 usd
CY2024Q3 us-gaap Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
453000 usd
CY2024Q3 us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
84000 usd
CY2024Q3 us-gaap Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
87067000 usd
CY2024Q3 us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
248000 usd
us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
34192000 usd
us-gaap Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
4481000 usd
us-gaap Net Income Loss
NetIncomeLoss
46813000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-1446000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1376000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
1169000 usd
CY2023Q3 us-gaap Stockholders Equity
StockholdersEquity
626844000 usd
CY2023Q4 us-gaap Stockholders Equity
StockholdersEquity
667475000 usd
us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
40075000 usd
us-gaap Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
4198000 usd
us-gaap Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
5672000 usd
us-gaap Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
91424000 usd
us-gaap Net Income Loss
NetIncomeLoss
59495000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-886000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1089000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
1610000 usd
CY2024Q3 us-gaap Stockholders Equity
StockholdersEquity
829365000 usd
us-gaap Net Income Loss
NetIncomeLoss
59495000 usd
us-gaap Net Income Loss
NetIncomeLoss
46813000 usd
us-gaap Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
-9918000 usd
us-gaap Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
-11906000 usd
us-gaap Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
14010000 usd
us-gaap Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
13964000 usd
us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
15648000 usd
us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
11118000 usd
us-gaap Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
6239000 usd
us-gaap Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
4004000 usd
us-gaap Share Based Compensation
ShareBasedCompensation
42264000 usd
CY2023Q4 us-gaap Accounts Receivable Gross Current
AccountsReceivableGrossCurrent
50160000 usd
CY2024Q3 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
4474000 usd
CY2023Q4 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
3320000 usd
CY2024Q3 us-gaap Accounts Receivable Net Current
AccountsReceivableNetCurrent
55570000 usd
CY2023Q4 us-gaap Accounts Receivable Net Current
AccountsReceivableNetCurrent
46840000 usd
CY2024Q3 us-gaap Deferred Costs Current
DeferredCostsCurrent
64665000 usd
CY2023Q4 us-gaap Deferred Costs Current
DeferredCostsCurrent
62403000 usd
CY2024Q3 us-gaap Other Assets Current
OtherAssetsCurrent
18639000 usd
CY2023Q4 us-gaap Other Assets Current
OtherAssetsCurrent
16758000 usd
CY2024Q3 us-gaap Assets Current
AssetsCurrent
344647000 usd
CY2023Q4 us-gaap Assets Current
AssetsCurrent
401441000 usd
CY2024Q3 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
36148000 usd
CY2023Q4 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
36043000 usd
CY2024Q3 us-gaap Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
8412000 usd
CY2023Q4 us-gaap Operating Lease Right Of Use Asset
OperatingLeaseRightOfUseAsset
7862000 usd
CY2024Q3 us-gaap Goodwill
Goodwill
423508000 usd
CY2023Q4 us-gaap Goodwill
Goodwill
249176000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
168131000 usd
CY2023Q4 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
107344000 usd
CY2024Q3 us-gaap Deferred Costs
DeferredCosts
20802000 usd
CY2023Q4 us-gaap Deferred Costs
DeferredCosts
20347000 usd
CY2024Q3 us-gaap Deferred Income Tax Assets Net
DeferredIncomeTaxAssetsNet
412000 usd
CY2023Q4 us-gaap Deferred Income Tax Assets Net
DeferredIncomeTaxAssetsNet
505000 usd
CY2024Q3 us-gaap Other Assets Noncurrent
OtherAssetsNoncurrent
1240000 usd
CY2023Q4 us-gaap Other Assets Noncurrent
OtherAssetsNoncurrent
1126000 usd
CY2024Q3 us-gaap Assets
Assets
1003300000 usd
CY2023Q4 us-gaap Assets
Assets
823844000 usd
CY2024Q3 us-gaap Accounts Payable Current
AccountsPayableCurrent
8107000 usd
CY2023Q4 us-gaap Accounts Payable Current
AccountsPayableCurrent
7420000 usd
CY2024Q3 us-gaap Employee Related Liabilities Current
EmployeeRelatedLiabilitiesCurrent
46010000 usd
CY2023Q4 us-gaap Employee Related Liabilities Current
EmployeeRelatedLiabilitiesCurrent
41588000 usd
CY2024Q3 us-gaap Accrued Liabilities Current
AccruedLiabilitiesCurrent
8968000 usd
CY2023Q4 us-gaap Accrued Liabilities Current
AccruedLiabilitiesCurrent
8014000 usd
CY2024Q3 us-gaap Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
78883000 usd
CY2023Q4 us-gaap Contract With Customer Liability Current
ContractWithCustomerLiabilityCurrent
69187000 usd
CY2024Q3 us-gaap Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
4363000 usd
CY2023Q4 us-gaap Operating Lease Liability Current
OperatingLeaseLiabilityCurrent
4460000 usd
CY2024Q3 us-gaap Liabilities Current
LiabilitiesCurrent
146331000 usd
CY2023Q4 us-gaap Liabilities Current
LiabilitiesCurrent
130669000 usd
CY2024Q3 us-gaap Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
6550000 usd
CY2023Q4 us-gaap Contract With Customer Liability Noncurrent
ContractWithCustomerLiabilityNoncurrent
6930000 usd
CY2024Q3 us-gaap Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
8807000 usd
CY2023Q4 us-gaap Operating Lease Liability Noncurrent
OperatingLeaseLiabilityNoncurrent
9569000 usd
CY2024Q3 us-gaap Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
11607000 usd
CY2023Q4 us-gaap Deferred Income Tax Liabilities Net
DeferredIncomeTaxLiabilitiesNet
8972000 usd
CY2024Q3 us-gaap Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
640000 usd
CY2023Q4 us-gaap Other Liabilities Noncurrent
OtherLiabilitiesNoncurrent
229000 usd
CY2024Q3 us-gaap Liabilities
Liabilities
173935000 usd
CY2023Q4 us-gaap Liabilities
Liabilities
156369000 usd
CY2024Q3 us-gaap Commitments And Contingencies
CommitmentsAndContingencies
usd
CY2023Q4 us-gaap Commitments And Contingencies
CommitmentsAndContingencies
usd
CY2023Q4 us-gaap Preferred Stock Par Or Stated Value Per Share
PreferredStockParOrStatedValuePerShare
0.001
CY2024Q3 us-gaap Preferred Stock Par Or Stated Value Per Share
PreferredStockParOrStatedValuePerShare
0.001
CY2024Q3 us-gaap Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
5000000 shares
CY2023Q4 us-gaap Preferred Stock Shares Authorized
PreferredStockSharesAuthorized
5000000 shares
CY2023Q4 us-gaap Preferred Stock Shares Outstanding
PreferredStockSharesOutstanding
0 shares
CY2023Q4 us-gaap Preferred Stock Shares Issued
PreferredStockSharesIssued
0 shares
CY2024Q3 us-gaap Preferred Stock Shares Issued
PreferredStockSharesIssued
0 shares
CY2024Q3 us-gaap Preferred Stock Value
PreferredStockValue
0 usd
CY2023Q4 us-gaap Preferred Stock Value
PreferredStockValue
0 usd
CY2023Q4 us-gaap Common Stock Par Or Stated Value Per Share
CommonStockParOrStatedValuePerShare
0.001
CY2024Q3 us-gaap Common Stock Par Or Stated Value Per Share
CommonStockParOrStatedValuePerShare
0.001
CY2023Q4 us-gaap Common Stock Shares Authorized
CommonStockSharesAuthorized
110000000 shares
CY2024Q3 us-gaap Common Stock Shares Authorized
CommonStockSharesAuthorized
110000000 shares
CY2024Q3 us-gaap Common Stock Shares Issued
CommonStockSharesIssued
39495411 shares
CY2023Q4 us-gaap Common Stock Shares Issued
CommonStockSharesIssued
38971146 shares
CY2024Q3 us-gaap Common Stock Shares Outstanding
CommonStockSharesOutstanding
37566443 shares
CY2023Q4 us-gaap Common Stock Shares Outstanding
CommonStockSharesOutstanding
36820048 shares
CY2024Q3 us-gaap Common Stock Value
CommonStockValue
39000 usd
CY2023Q4 us-gaap Common Stock Value
CommonStockValue
39000 usd
CY2024Q3 us-gaap Treasury Stock Common Shares
TreasuryStockCommonShares
1928968 shares
CY2023Q4 us-gaap Treasury Stock Common Shares
TreasuryStockCommonShares
2151098 shares
CY2024Q3 us-gaap Treasury Stock Common Value
TreasuryStockCommonValue
99748000 usd
CY2023Q4 us-gaap Treasury Stock Common Value
TreasuryStockCommonValue
128892000 usd
CY2024Q3 us-gaap Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
611719000 usd
CY2023Q4 us-gaap Additional Paid In Capital Common Stock
AdditionalPaidInCapitalCommonStock
537061000 usd
CY2024Q3 us-gaap Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
318540000 usd
CY2023Q4 us-gaap Retained Earnings Accumulated Deficit
RetainedEarningsAccumulatedDeficit
259045000 usd
CY2024Q3 us-gaap Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
-1185000 usd
CY2023Q4 us-gaap Accumulated Other Comprehensive Income Loss Net Of Tax
AccumulatedOtherComprehensiveIncomeLossNetOfTax
222000 usd
CY2024Q3 us-gaap Stockholders Equity
StockholdersEquity
829365000 usd
CY2023Q4 us-gaap Stockholders Equity
StockholdersEquity
667475000 usd
CY2024Q3 us-gaap Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
1003300000 usd
CY2023Q4 us-gaap Liabilities And Stockholders Equity
LiabilitiesAndStockholdersEquity
823844000 usd
CY2024Q3 us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
163686000 usd
us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
466858000 usd
us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
391945000 usd
us-gaap Cost Of Revenue
CostOfRevenue
155129000 usd
us-gaap Cost Of Revenue
CostOfRevenue
133029000 usd
us-gaap Gross Profit
GrossProfit
311729000 usd
us-gaap Gross Profit
GrossProfit
258916000 usd
us-gaap Selling And Marketing Expense
SellingAndMarketingExpense
109700000 usd
us-gaap Selling And Marketing Expense
SellingAndMarketingExpense
89722000 usd
us-gaap Research And Development Expense
ResearchAndDevelopmentExpense
45667000 usd
us-gaap Operating Expenses
OperatingExpenses
204553000 usd
us-gaap Operating Income Loss
OperatingIncomeLoss
64139000 usd
us-gaap Operating Income Loss
OperatingIncomeLoss
54363000 usd
CY2023Q3 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
1702000 usd
us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
10966000 usd
us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
4859000 usd
us-gaap Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
75105000 usd
us-gaap Income Loss From Continuing Operations Before Income Taxes Extraordinary Items Noncontrolling Interest
IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
59222000 usd
us-gaap Income Tax Expense Benefit
IncomeTaxExpenseBenefit
15610000 usd
us-gaap Income Tax Expense Benefit
IncomeTaxExpenseBenefit
12409000 usd
us-gaap Net Income Loss
NetIncomeLoss
59495000 usd
us-gaap Net Income Loss
NetIncomeLoss
46813000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-886000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-1446000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
363000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
459000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1089000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1376000 usd
CY2024Q3 us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
83000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesTax
390000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
1610000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
1169000 usd
us-gaap Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
-1407000 usd
us-gaap Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent
OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
-1239000 usd
us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
58088000 usd
us-gaap Comprehensive Income Net Of Tax
ComprehensiveIncomeNetOfTax
45574000 usd
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.60
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.28
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.57
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.25
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
37192000 shares
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
36584000 shares
CY2024Q3 us-gaap Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
453000 usd
CY2024Q3 us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
84000 usd
CY2024Q3 us-gaap Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
87067000 usd
CY2024Q3 us-gaap Net Income Loss
NetIncomeLoss
23460000 usd
CY2022Q4 us-gaap Stockholders Equity
StockholdersEquity
537073000 usd
us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
34192000 usd
us-gaap Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
5524000 usd
us-gaap Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
4481000 usd
us-gaap Net Income Loss
NetIncomeLoss
46813000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-1446000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1376000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
1169000 usd
CY2023Q3 us-gaap Stockholders Equity
StockholdersEquity
626844000 usd
CY2023Q4 us-gaap Stockholders Equity
StockholdersEquity
667475000 usd
us-gaap Adjustments To Additional Paid In Capital Sharebased Compensation Requisite Service Period Recognition Value
AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
40075000 usd
us-gaap Stock Issued During Period Value Share Based Compensation
StockIssuedDuringPeriodValueShareBasedCompensation
4198000 usd
us-gaap Stock Issued During Period Value Employee Stock Purchase Plan
StockIssuedDuringPeriodValueEmployeeStockPurchasePlan
5672000 usd
us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
37567000 usd
us-gaap Stock Issued During Period Value Treasury Stock Reissued
StockIssuedDuringPeriodValueTreasuryStockReissued
91424000 usd
us-gaap Net Income Loss
NetIncomeLoss
59495000 usd
us-gaap Other Comprehensive Income Loss Foreign Currency Transaction And Translation Adjustment Before Tax
OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentBeforeTax
-886000 usd
us-gaap Other Comprehensive Income Unrealized Holding Gain Loss On Securities Arising During Period Net Of Tax
OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
1089000 usd
us-gaap Other Comprehensive Income Loss Reclassification Adjustment From Aoci For Sale Of Securities Net Of Tax
OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
1610000 usd
CY2024Q3 us-gaap Stockholders Equity
StockholdersEquity
829365000 usd
us-gaap Net Income Loss
NetIncomeLoss
59495000 usd
us-gaap Net Income Loss
NetIncomeLoss
46813000 usd
us-gaap Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
-9918000 usd
us-gaap Deferred Income Tax Expense Benefit
DeferredIncomeTaxExpenseBenefit
-11906000 usd
us-gaap Depreciation Depletion And Amortization
DepreciationDepletionAndAmortization
14010000 usd
us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
15648000 usd
us-gaap Amortization Of Intangible Assets
AmortizationOfIntangibleAssets
11118000 usd
us-gaap Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
6239000 usd
us-gaap Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
4004000 usd
us-gaap Share Based Compensation
ShareBasedCompensation
42264000 usd
us-gaap Other Noncash Income Expense
OtherNoncashIncomeExpense
925000 usd
us-gaap Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
11456000 usd
us-gaap Share Based Compensation
ShareBasedCompensation
36097000 usd
us-gaap Other Noncash Income Expense
OtherNoncashIncomeExpense
925000 usd
us-gaap Other Noncash Income Expense
OtherNoncashIncomeExpense
-1711000 usd
us-gaap Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
11456000 usd
us-gaap Increase Decrease In Accounts Receivable
IncreaseDecreaseInAccountsReceivable
8800000 usd
us-gaap Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
2240000 usd
us-gaap Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
7543000 usd
us-gaap Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
2258000 usd
us-gaap Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
-2814000 usd
us-gaap Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
665000 usd
us-gaap Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
-5289000 usd
us-gaap Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
458000 usd
us-gaap Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
8073000 usd
us-gaap Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
842000 usd
us-gaap Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
-169000 usd
us-gaap Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
5424000 usd
us-gaap Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
10042000 usd
spsc Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
-1412000 usd
spsc Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
-1417000 usd
us-gaap Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
116836000 usd
us-gaap Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
99512000 usd
us-gaap Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
13832000 usd
us-gaap Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
15467000 usd
us-gaap Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
85759000 usd
us-gaap Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
102763000 usd
us-gaap Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
136765000 usd
us-gaap Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
147401000 usd
us-gaap Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
70218000 usd
us-gaap Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
-110227000 usd
us-gaap Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
-93448000 usd
us-gaap Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
37567000 usd
us-gaap Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
0 usd
us-gaap Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
4198000 usd
us-gaap Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
5524000 usd
us-gaap Proceeds From Stock Plans
ProceedsFromStockPlans
5672000 usd
us-gaap Proceeds From Stock Plans
ProceedsFromStockPlans
4481000 usd
us-gaap Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
-27697000 usd
us-gaap Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
10005000 usd
us-gaap Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
849000 usd
us-gaap Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
-260000 usd
us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
-20239000 usd
us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
15809000 usd
CY2022Q4 us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
162893000 usd
CY2024Q3 us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
198842000 usd
CY2023Q3 us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
178702000 usd
us-gaap Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
2240000 usd
us-gaap Increase Decrease In Deferred Charges
IncreaseDecreaseInDeferredCharges
7543000 usd
us-gaap Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
2258000 usd
us-gaap Increase Decrease In Other Operating Capital Net
IncreaseDecreaseInOtherOperatingCapitalNet
-2814000 usd
us-gaap Increase Decrease In Accounts Payable
IncreaseDecreaseInAccountsPayable
665000 usd
us-gaap Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
458000 usd
us-gaap Increase Decrease In Employee Related Liabilities
IncreaseDecreaseInEmployeeRelatedLiabilities
8073000 usd
us-gaap Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
842000 usd
us-gaap Increase Decrease In Accrued Liabilities
IncreaseDecreaseInAccruedLiabilities
-169000 usd
us-gaap Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
5424000 usd
us-gaap Increase Decrease In Contract With Customer Liability
IncreaseDecreaseInContractWithCustomerLiability
10042000 usd
spsc Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
-1412000 usd
spsc Increase Decrease In Operating Leases
IncreaseDecreaseInOperatingLeases
-1417000 usd
us-gaap Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
116836000 usd
us-gaap Net Cash Provided By Used In Operating Activities
NetCashProvidedByUsedInOperatingActivities
99512000 usd
us-gaap Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
13832000 usd
us-gaap Payments To Acquire Property Plant And Equipment
PaymentsToAcquirePropertyPlantAndEquipment
15467000 usd
us-gaap Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
85759000 usd
us-gaap Payments To Acquire Other Investments
PaymentsToAcquireOtherInvestments
102763000 usd
us-gaap Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
136765000 usd
us-gaap Proceeds From Sale And Maturity Of Available For Sale Securities
ProceedsFromSaleAndMaturityOfAvailableForSaleSecurities
95000000 usd
us-gaap Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
147401000 usd
us-gaap Payments To Acquire Businesses Net Of Cash Acquired
PaymentsToAcquireBusinessesNetOfCashAcquired
70218000 usd
us-gaap Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
-110227000 usd
us-gaap Net Cash Provided By Used In Investing Activities
NetCashProvidedByUsedInInvestingActivities
-93448000 usd
us-gaap Payments For Repurchase Of Common Stock
PaymentsForRepurchaseOfCommonStock
37567000 usd
us-gaap Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
4198000 usd
us-gaap Proceeds From Stock Options Exercised
ProceedsFromStockOptionsExercised
5524000 usd
us-gaap Proceeds From Stock Plans
ProceedsFromStockPlans
5672000 usd
us-gaap Proceeds From Stock Plans
ProceedsFromStockPlans
4481000 usd
us-gaap Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
-27697000 usd
us-gaap Net Cash Provided By Used In Financing Activities
NetCashProvidedByUsedInFinancingActivities
10005000 usd
us-gaap Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
849000 usd
us-gaap Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
-260000 usd
us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
-20239000 usd
us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
15809000 usd
CY2023Q4 us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
219081000 usd
CY2024Q3 us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
198842000 usd
CY2023Q3 us-gaap Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
178702000 usd
us-gaap Use Of Estimates
UseOfEstimates
<div style="margin-top:12pt"><span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Use of Estimates</span></div><div style="margin-top:6pt;text-indent:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates.</span></div>
us-gaap Use Of Estimates
UseOfEstimates
<div style="margin-top:12pt"><span style="color:#1f282c;font-family:'Times New Roman',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Use of Estimates</span></div><div style="margin-top:6pt;text-indent:36pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Preparing financial statements in conformity with GAAP requires management to make estimates, judgments, and assumptions that affect the reported amounts of assets and liabilities, disclosure of contingent assets and liabilities at the date of the financial statements, and the reported amounts of revenues and expenses during the reporting periods. Actual results could differ from those estimates.</span></div>
CY2024Q3 us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
163686000 usd
CY2023Q3 us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
135661000 usd
us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
466858000 usd
spsc Recurring Revenues Timing Of Billings Latest Period
RecurringRevenuesTimingOfBillingsLatestPeriod
P30D
spsc Contract Term Maximum
ContractTermMaximum
P1Y
spsc Set Up Fees Recognized Period
SetUpFeesRecognizedPeriod
P2Y
CY2024Q3 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
13500000 usd
CY2024Q3 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P12M
spsc Maximum Recognition Period For Miscellaneous One Time Fee
MaximumRecognitionPeriodForMiscellaneousOneTimeFee
P1Y
us-gaap Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
61800000 usd
us-gaap Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
52400000 usd
CY2024Q3 us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
163686000 usd
CY2023Q3 us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
135661000 usd
us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
466858000 usd
us-gaap Revenue From Contract With Customer Excluding Assessed Tax
RevenueFromContractWithCustomerExcludingAssessedTax
391945000 usd
spsc Recurring Revenues Timing Of Billings Latest Period
RecurringRevenuesTimingOfBillingsLatestPeriod
P30D
spsc Contract Term Maximum
ContractTermMaximum
P1Y
spsc Set Up Fees Recognized Period
SetUpFeesRecognizedPeriod
P2Y
CY2024Q3 us-gaap Revenue Remaining Performance Obligation
RevenueRemainingPerformanceObligation
13500000 usd
CY2024Q3 us-gaap Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1
RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1
P12M
spsc Maximum Recognition Period For Miscellaneous One Time Fee
MaximumRecognitionPeriodForMiscellaneousOneTimeFee
P1Y
us-gaap Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
61800000 usd
us-gaap Contract With Customer Liability Revenue Recognized
ContractWithCustomerLiabilityRevenueRecognized
52400000 usd
CY2024Q2 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
84928000 usd
CY2023Q2 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
75255000 usd
CY2024Q2 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
84928000 usd
CY2023Q2 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
75255000 usd
CY2023Q4 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
82750000 usd
CY2024Q3 spsc Deferred Costs Incurred
DeferredCostsIncurred
22532000 usd
CY2023Q3 spsc Deferred Costs Incurred
DeferredCostsIncurred
20094000 usd
spsc Deferred Costs Incurred
DeferredCostsIncurred
67483000 usd
spsc Deferred Costs Incurred
DeferredCostsIncurred
57632000 usd
CY2024Q3 spsc Deferred Costs Amortized
DeferredCostsAmortized
21993000 usd
CY2023Q3 spsc Deferred Costs Amortized
DeferredCostsAmortized
16303000 usd
spsc Deferred Costs Amortized
DeferredCostsAmortized
64766000 usd
spsc Deferred Costs Amortized
DeferredCostsAmortized
48765000 usd
CY2024Q3 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
85467000 usd
CY2023Q3 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
79046000 usd
CY2024Q3 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
85467000 usd
CY2023Q3 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
79046000 usd
CY2024Q3 us-gaap Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
142631000 usd
CY2023Q4 us-gaap Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
216898000 usd
CY2023Q4 us-gaap Debt Securities Available For Sale Accumulated Gross Unrealized Gain Loss Before Tax
DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
694000 usd
CY2023Q4 us-gaap Available For Sale Securities Debt Securities
AvailableForSaleSecuritiesDebtSecurities
217592000 usd
CY2023Q4 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
82750000 usd
CY2024Q3 spsc Deferred Costs Incurred
DeferredCostsIncurred
22532000 usd
CY2023Q3 spsc Deferred Costs Incurred
DeferredCostsIncurred
20094000 usd
spsc Deferred Costs Incurred
DeferredCostsIncurred
67483000 usd
spsc Deferred Costs Incurred
DeferredCostsIncurred
57632000 usd
CY2024Q3 spsc Deferred Costs Amortized
DeferredCostsAmortized
21993000 usd
CY2023Q3 spsc Deferred Costs Amortized
DeferredCostsAmortized
16303000 usd
spsc Deferred Costs Amortized
DeferredCostsAmortized
48765000 usd
CY2023Q3 us-gaap Deferred Costs Current And Noncurrent
DeferredCostsCurrentAndNoncurrent
79046000 usd
CY2024Q3 us-gaap Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
142631000 usd
CY2024Q3 us-gaap Debt Securities Available For Sale Accumulated Gross Unrealized Gain Loss Before Tax
DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
0 usd
CY2024Q3 us-gaap Available For Sale Securities Debt Securities
AvailableForSaleSecuritiesDebtSecurities
142631000 usd
CY2023Q4 us-gaap Available For Sale Debt Securities Amortized Cost Basis
AvailableForSaleDebtSecuritiesAmortizedCostBasis
216898000 usd
CY2023Q4 us-gaap Debt Securities Available For Sale Accumulated Gross Unrealized Gain Loss Before Tax
DebtSecuritiesAvailableForSaleAccumulatedGrossUnrealizedGainLossBeforeTax
694000 usd
CY2023Q4 us-gaap Available For Sale Securities Debt Securities
AvailableForSaleSecuritiesDebtSecurities
217592000 usd
CY2023Q4 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
3320000 usd
CY2022Q4 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
3066000 usd
us-gaap Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
4004000 usd
us-gaap Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
5085000 usd
us-gaap Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
3993000 usd
CY2024Q3 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
4474000 usd
CY2024Q3 us-gaap Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
131992000 usd
CY2023Q4 us-gaap Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
121151000 usd
CY2024Q3 us-gaap Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
95844000 usd
CY2023Q4 us-gaap Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
85108000 usd
CY2024Q3 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
36148000 usd
CY2023Q4 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
36043000 usd
us-gaap Goodwill Foreign Currency Translation Gain Loss
GoodwillForeignCurrencyTranslationGainLoss
-649000 usd
CY2024Q3 us-gaap Goodwill
Goodwill
423508000 usd
CY2023Q4 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
3320000 usd
CY2022Q4 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
3066000 usd
us-gaap Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
6239000 usd
us-gaap Provision For Doubtful Accounts
ProvisionForDoubtfulAccounts
4004000 usd
us-gaap Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
5085000 usd
us-gaap Allowance For Doubtful Accounts Receivable Write Offs
AllowanceForDoubtfulAccountsReceivableWriteOffs
3993000 usd
CY2024Q3 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
4474000 usd
CY2023Q3 us-gaap Allowance For Doubtful Accounts Receivable Current
AllowanceForDoubtfulAccountsReceivableCurrent
3077000 usd
CY2024Q3 us-gaap Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
131992000 usd
CY2023Q4 us-gaap Property Plant And Equipment Gross
PropertyPlantAndEquipmentGross
121151000 usd
CY2024Q3 us-gaap Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
95844000 usd
CY2023Q4 us-gaap Accumulated Depreciation Depletion And Amortization Property Plant And Equipment
AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
85108000 usd
CY2024Q3 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
36148000 usd
CY2023Q4 us-gaap Property Plant And Equipment Net
PropertyPlantAndEquipmentNet
36043000 usd
CY2023Q4 us-gaap Goodwill
Goodwill
249176000 usd
us-gaap Goodwill Acquired During Period
GoodwillAcquiredDuringPeriod
173164000 usd
us-gaap Goodwill Foreign Currency Translation Gain Loss
GoodwillForeignCurrencyTranslationGainLoss
-649000 usd
us-gaap Goodwill Purchase Accounting Adjustments
GoodwillPurchaseAccountingAdjustments
1817000 usd
CY2024Q3 us-gaap Goodwill
Goodwill
423508000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
231941000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
63664000 usd
CY2024Q3 spsc Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
-146000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
168131000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
P6Y4M24D
CY2023Q4 us-gaap Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
154071000 usd
CY2023Q4 us-gaap Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
47766000 usd
CY2023Q4 spsc Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
1039000 usd
CY2023Q4 us-gaap Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
P6Y1M6D
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Remainder Of Fiscal Year
FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear
7231000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Next Twelve Months
FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
28792000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Year Three
FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
27314000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Year Four
FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
25974000 usd
CY2024Q3 spsc Finite Lived Intangible Asset Expected Amortization After Year Four
FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour
51032000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
168131000 usd
CY2024Q3 us-gaap Operating Lease Cost
OperatingLeaseCost
884000 usd
CY2023Q3 us-gaap Operating Lease Cost
OperatingLeaseCost
729000 usd
us-gaap Operating Lease Cost
OperatingLeaseCost
2496000 usd
us-gaap Operating Lease Cost
OperatingLeaseCost
2306000 usd
CY2024Q3 us-gaap Variable Lease Cost
VariableLeaseCost
824000 usd
CY2023Q3 us-gaap Variable Lease Cost
VariableLeaseCost
909000 usd
us-gaap Variable Lease Cost
VariableLeaseCost
2743000 usd
us-gaap Variable Lease Cost
VariableLeaseCost
2787000 usd
CY2024Q3 us-gaap Lease Cost
LeaseCost
1708000 usd
CY2023Q3 us-gaap Lease Cost
LeaseCost
1638000 usd
us-gaap Lease Cost
LeaseCost
5239000 usd
us-gaap Lease Cost
LeaseCost
5093000 usd
us-gaap Operating Lease Payments
OperatingLeasePayments
3801000 usd
us-gaap Operating Lease Payments
OperatingLeasePayments
3835000 usd
us-gaap Right Of Use Asset Obtained In Exchange For Operating Lease Liability
RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
2554000 usd
us-gaap Right Of Use Asset Obtained In Exchange For Operating Lease Liability
RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
1072000 usd
CY2024Q3 spsc Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
-146000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
168131000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
P6Y4M24D
CY2023Q4 us-gaap Finite Lived Intangible Assets Gross
FiniteLivedIntangibleAssetsGross
154071000 usd
CY2023Q4 us-gaap Finite Lived Intangible Assets Accumulated Amortization
FiniteLivedIntangibleAssetsAccumulatedAmortization
47766000 usd
CY2023Q4 spsc Finite Lived Intangible Assets Accumulated Foreign Currency Translation Gain Loss
FiniteLivedIntangibleAssetsAccumulatedForeignCurrencyTranslationGainLoss
1039000 usd
CY2023Q4 us-gaap Finite Lived Intangible Assets Remaining Amortization Period1
FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
P6Y1M6D
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Next Twelve Months
FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
28792000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Year Two
FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
27788000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Year Three
FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
27314000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Amortization Expense Year Four
FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
25974000 usd
CY2024Q3 spsc Finite Lived Intangible Asset Expected Amortization After Year Four
FiniteLivedIntangibleAssetExpectedAmortizationAfterYearFour
51032000 usd
CY2024Q3 us-gaap Finite Lived Intangible Assets Net
FiniteLivedIntangibleAssetsNet
168131000 usd
CY2024Q3 us-gaap Operating Lease Cost
OperatingLeaseCost
884000 usd
CY2023Q3 us-gaap Operating Lease Cost
OperatingLeaseCost
729000 usd
us-gaap Operating Lease Cost
OperatingLeaseCost
2496000 usd
us-gaap Operating Lease Cost
OperatingLeaseCost
2306000 usd
CY2024Q3 us-gaap Variable Lease Cost
VariableLeaseCost
824000 usd
CY2023Q3 us-gaap Variable Lease Cost
VariableLeaseCost
909000 usd
us-gaap Variable Lease Cost
VariableLeaseCost
2743000 usd
us-gaap Variable Lease Cost
VariableLeaseCost
2787000 usd
CY2024Q3 us-gaap Lease Cost
LeaseCost
1708000 usd
CY2023Q3 us-gaap Lease Cost
LeaseCost
1638000 usd
us-gaap Lease Cost
LeaseCost
5239000 usd
us-gaap Lease Cost
LeaseCost
5093000 usd
us-gaap Operating Lease Payments
OperatingLeasePayments
3801000 usd
us-gaap Operating Lease Payments
OperatingLeasePayments
3835000 usd
CY2024Q3 us-gaap Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
P2Y7M6D
CY2023Q4 us-gaap Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
P3Y1M6D
CY2024Q3 us-gaap Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
0.042
CY2023Q4 us-gaap Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
0.040
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
5460000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
4784000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
1740000 usd
CY2024Q3 spsc Lessee Operating Lease Liability To Be Paid After Year Three
LesseeOperatingLeaseLiabilityToBePaidAfterYearThree
240000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
13940000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
770000 usd
CY2024Q3 us-gaap Operating Lease Liability
OperatingLeaseLiability
13170000 usd
CY2024Q3 us-gaap Purchase Obligation Future Minimum Payments Remainder Of Fiscal Year
PurchaseObligationFutureMinimumPaymentsRemainderOfFiscalYear
2890000 usd
CY2024Q3 us-gaap Purchase Obligation Due In Next Twelve Months
PurchaseObligationDueInNextTwelveMonths
14187000 usd
CY2024Q3 us-gaap Purchase Obligation Due In Second Year
PurchaseObligationDueInSecondYear
4692000 usd
CY2024Q3 us-gaap Purchase Obligation
PurchaseObligation
21769000 usd
us-gaap Schedule Of Repurchase Agreements
ScheduleOfRepurchaseAgreements
Details of the programs and activity thereunder through <span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">September 30, 2024 were as follows:</span><div style="margin-top:12pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.293%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.142%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.843%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Effective Date</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Expiration Date</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Authorized for Repurchase</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Repurchased</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unused &amp; Expired Share Repurchase Value</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Available for Future Repurchase</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022 Program</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,000 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">40,556 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">9,444 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024 Program</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2026</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">share</span><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">repurchase activity by period was as follows:</span><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Three Months Ended<br/>September 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Nine Months Ended<br/>September 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands, except shares and per share amounts)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Number of shares repurchased</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">456 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">205,331 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Total share repurchased cost</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">84 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,567 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Average total cost per repurchased share</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">184.21 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">182.96 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div>
CY2024Q3 us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
456 shares
CY2023Q3 us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
0 shares
us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
205331 shares
us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
0 shares
CY2024Q3 us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
84000 usd
CY2023Q3 us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
0 usd
us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
37567000 usd
CY2024Q3 us-gaap Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
P2Y7M6D
CY2023Q4 us-gaap Operating Lease Weighted Average Remaining Lease Term1
OperatingLeaseWeightedAverageRemainingLeaseTerm1
P3Y1M6D
CY2024Q3 us-gaap Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
0.042
CY2023Q4 us-gaap Operating Lease Weighted Average Discount Rate Percent
OperatingLeaseWeightedAverageDiscountRatePercent
0.040
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Remainder Of Fiscal Year
LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear
1716000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due Next Twelve Months
LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
5460000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due Year Two
LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
4784000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due Year Three
LesseeOperatingLeaseLiabilityPaymentsDueYearThree
1740000 usd
CY2024Q3 spsc Lessee Operating Lease Liability To Be Paid After Year Three
LesseeOperatingLeaseLiabilityToBePaidAfterYearThree
240000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Payments Due
LesseeOperatingLeaseLiabilityPaymentsDue
13940000 usd
CY2024Q3 us-gaap Lessee Operating Lease Liability Undiscounted Excess Amount
LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
770000 usd
CY2024Q3 us-gaap Operating Lease Liability
OperatingLeaseLiability
13170000 usd
CY2024Q3 us-gaap Purchase Obligation Due In Second Year
PurchaseObligationDueInSecondYear
4692000 usd
CY2024Q3 us-gaap Purchase Obligation
PurchaseObligation
21769000 usd
us-gaap Schedule Of Repurchase Agreements
ScheduleOfRepurchaseAgreements
Details of the programs and activity thereunder through <span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">September 30, 2024 were as follows:</span><div style="margin-top:12pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.293%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.142%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.839%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.843%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Effective Date</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Expiration Date</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Authorized for Repurchase</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Repurchased</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unused &amp; Expired Share Repurchase Value</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Share Value Available for Future Repurchase</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022 Program</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2022</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,000 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">40,556 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">9,444 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024 Program</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">August 2024</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">July 2026</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">N/A</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100,000 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">share</span><span style="background-color:#ffffff;color:#212529;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">repurchase activity by period was as follows:</span><div style="margin-top:6pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:44.354%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.406%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.085%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Three Months Ended<br/>September 30,</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Nine Months Ended<br/>September 30,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">(in thousands, except shares and per share amounts)</span></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2024</span></td><td colspan="3" style="border-top:1pt solid #000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000;padding:2px 1pt;text-align:center;vertical-align:middle"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2023</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Number of shares repurchased</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">456 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">205,331 </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Total share repurchased cost</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">84 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,567 </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Average total cost per repurchased share</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">184.21 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">182.96 </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">— </span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div>
CY2024Q3 us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
456 shares
CY2023Q3 us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
0 shares
us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
205331 shares
us-gaap Treasury Stock Shares Acquired
TreasuryStockSharesAcquired
0 shares
CY2024Q3 us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
84000 usd
CY2023Q3 us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
0 usd
us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
37567000 usd
us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
0 usd
us-gaap Treasury Stock Value Acquired Cost Method
TreasuryStockValueAcquiredCostMethod
0 usd
CY2024Q3 us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
184.21
CY2023Q3 us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
0
us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
182.96
us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
0
CY2024Q3 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant
ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
12300000 shares
CY2024Q3 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
10752000 usd
CY2023Q3 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
11436000 usd
us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
42264000 usd
us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
36097000 usd
CY2024Q3 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
10752000 usd
CY2023Q3 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
11436000 usd
us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
42264000 usd
us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
36097000 usd
CY2024Q3 us-gaap Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
78900000 usd
us-gaap Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized Period For Recognition1
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
P2Y6M
CY2023Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
80.02
us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
36993 shares
us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
197.42
us-gaap Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
85364 shares
us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Exercises In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
49.18
us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
2094 shares
us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
158.63
CY2024Q3 us-gaap Investment Income Net
InvestmentIncomeNet
2704000 usd
CY2023Q3 us-gaap Investment Income Net
InvestmentIncomeNet
2635000 usd
us-gaap Investment Income Net
InvestmentIncomeNet
8377000 usd
CY2024Q3 us-gaap Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
1077000 usd
CY2023Q3 us-gaap Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
98000 usd
CY2024Q3 us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
184.21
CY2023Q3 us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
0
us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
182.96
us-gaap Treasury Stock Acquired Average Cost Per Share
TreasuryStockAcquiredAverageCostPerShare
0
CY2024Q3 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Number Of Shares Available For Grant
ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
12300000 shares
CY2024Q3 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
10752000 usd
CY2023Q3 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
11436000 usd
us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
42264000 usd
us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
36097000 usd
CY2023Q3 us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
11436000 usd
us-gaap Allocated Share Based Compensation Expense
AllocatedShareBasedCompensationExpense
36097000 usd
CY2024Q3 us-gaap Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
78900000 usd
us-gaap Employee Service Share Based Compensation Nonvested Awards Total Compensation Cost Not Yet Recognized Period For Recognition1
EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
P2Y6M
CY2023Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Number
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
346822 shares
CY2023Q4 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
80.02
us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
36993 shares
us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Grants In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
197.42
us-gaap Stock Issued During Period Shares Stock Options Exercised
StockIssuedDuringPeriodSharesStockOptionsExercised
85364 shares
us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Forfeitures In Period
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
2094 shares
us-gaap Share Based Compensation Arrangements By Share Based Payment Award Options Forfeitures In Period Weighted Average Exercise Price
ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
158.63
CY2024Q3 us-gaap Share Based Compensation Arrangement By Share Based Payment Award Options Outstanding Weighted Average Exercise Price
ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
103.01
CY2024Q3 us-gaap Investment Income Net
InvestmentIncomeNet
2704000 usd
CY2023Q3 us-gaap Investment Income Net
InvestmentIncomeNet
2635000 usd
us-gaap Investment Income Net
InvestmentIncomeNet
8377000 usd
us-gaap Investment Income Net
InvestmentIncomeNet
5372000 usd
CY2024Q3 us-gaap Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
1077000 usd
CY2023Q3 us-gaap Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
98000 usd
us-gaap Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
2636000 usd
us-gaap Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
525000 usd
CY2024Q3 us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-3000 usd
CY2023Q3 us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-1031000 usd
us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-47000 usd
us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-1038000 usd
CY2024Q3 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
3778000 usd
CY2023Q3 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
1702000 usd
us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
10966000 usd
us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
4859000 usd
us-gaap Foreign Currency Transaction Gain Loss Before Tax
ForeignCurrencyTransactionGainLossBeforeTax
2636000 usd
CY2024Q3 us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-3000 usd
CY2023Q3 us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-1031000 usd
us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-47000 usd
us-gaap Other Nonoperating Income Expense
OtherNonoperatingIncomeExpense
-1038000 usd
CY2024Q3 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
3778000 usd
CY2023Q3 us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
1702000 usd
us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
10966000 usd
us-gaap Nonoperating Income Expense
NonoperatingIncomeExpense
4859000 usd
CY2023Q3 us-gaap Net Income Loss
NetIncomeLoss
16842000 usd
us-gaap Net Income Loss
NetIncomeLoss
59495000 usd
us-gaap Net Income Loss
NetIncomeLoss
46813000 usd
CY2024Q3 us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
37447000 shares
CY2023Q3 us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
36728000 shares
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
37192000 shares
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
36584000 shares
CY2024Q3 us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
145000 shares
CY2023Q3 us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
256000 shares
us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
159000 shares
us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
279000 shares
CY2024Q3 us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
404000 shares
CY2023Q3 us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
600000 shares
us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
434000 shares
us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
554000 shares
CY2024Q3 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37996000 shares
CY2023Q3 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37584000 shares
us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37785000 shares
us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37417000 shares
CY2024Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.63
CY2023Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.46
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.60
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.28
CY2024Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.62
CY2023Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.45
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.57
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.25
CY2024Q3 us-gaap Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
130000 shares
CY2024Q3 us-gaap Net Income Loss
NetIncomeLoss
23460000 usd
CY2023Q3 us-gaap Net Income Loss
NetIncomeLoss
16842000 usd
us-gaap Net Income Loss
NetIncomeLoss
59495000 usd
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
37192000 shares
us-gaap Weighted Average Number Of Shares Outstanding Basic
WeightedAverageNumberOfSharesOutstandingBasic
36584000 shares
CY2024Q3 us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
145000 shares
CY2023Q3 us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
256000 shares
us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
159000 shares
us-gaap Incremental Common Shares Attributable To Share Based Payment Arrangements
IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
279000 shares
CY2024Q3 us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
404000 shares
CY2023Q3 us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
600000 shares
us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
434000 shares
us-gaap Incremental Common Shares Attributable To Contingently Issuable Shares
IncrementalCommonSharesAttributableToContingentlyIssuableShares
554000 shares
CY2024Q3 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37996000 shares
CY2023Q3 us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37584000 shares
us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37785000 shares
us-gaap Weighted Average Number Of Diluted Shares Outstanding
WeightedAverageNumberOfDilutedSharesOutstanding
37417000 shares
CY2024Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.63
CY2023Q3 us-gaap Earnings Per Share Basic
EarningsPerShareBasic
0.46
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.60
us-gaap Earnings Per Share Basic
EarningsPerShareBasic
1.28
CY2024Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.62
CY2023Q3 us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
0.45
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.57
us-gaap Earnings Per Share Diluted
EarningsPerShareDiluted
1.25
CY2024Q3 us-gaap Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
130000 shares
CY2023Q3 us-gaap Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
40000 shares
us-gaap Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
118000 shares
us-gaap Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
43000 shares
CY2023Q3 us-gaap Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
40000 shares
us-gaap Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount
AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
43000 shares
CY2024Q3 ecd Non Rule10b51 Arr Adopted Flag
NonRule10b51ArrAdoptedFlag
false
CY2024Q3 ecd Rule10b51 Arr Trmntd Flag
Rule10b51ArrTrmntdFlag
false
CY2024Q3 ecd Non Rule10b51 Arr Trmntd Flag
NonRule10b51ArrTrmntdFlag
false

Files In Submission

Name View Source Status
R42.htm Edgar Link pending
R43.htm Edgar Link pending
R44.htm Edgar Link pending
R45.htm Edgar Link pending
R46.htm Edgar Link pending
R47.htm Edgar Link pending
R48.htm Edgar Link pending
R49.htm Edgar Link pending
R5.htm Edgar Link pending
R50.htm Edgar Link pending
R51.htm Edgar Link pending
R52.htm Edgar Link pending
R53.htm Edgar Link pending
R54.htm Edgar Link pending
R55.htm Edgar Link pending
R56.htm Edgar Link pending
R57.htm Edgar Link pending
R58.htm Edgar Link pending
R59.htm Edgar Link pending
R6.htm Edgar Link pending
R60.htm Edgar Link pending
R61.htm Edgar Link pending
R62.htm Edgar Link pending
R63.htm Edgar Link pending
0001092699-24-000074-index-headers.html Edgar Link pending
0001092699-24-000074-index.html Edgar Link pending
0001092699-24-000074.txt Edgar Link pending
0001092699-24-000074-xbrl.zip Edgar Link pending
Financial_Report.xlsx Edgar Link pending
MetaLinks.json Edgar Link pending
q3_2024exhibitex311ceo.htm Edgar Link pending
q3_2024exhibitex312cfo.htm Edgar Link pending
q3_2024exhibitex321ceocfo.htm Edgar Link pending
R1.htm Edgar Link pending
R10.htm Edgar Link pending
R11.htm Edgar Link pending
R12.htm Edgar Link pending
R13.htm Edgar Link pending
R14.htm Edgar Link pending
R15.htm Edgar Link pending
R16.htm Edgar Link pending
R17.htm Edgar Link pending
R18.htm Edgar Link pending
R19.htm Edgar Link pending
R2.htm Edgar Link pending
R20.htm Edgar Link pending
R21.htm Edgar Link pending
R22.htm Edgar Link pending
R23.htm Edgar Link pending
R24.htm Edgar Link pending
R25.htm Edgar Link pending
R26.htm Edgar Link pending
R27.htm Edgar Link pending
R28.htm Edgar Link pending
R29.htm Edgar Link pending
R3.htm Edgar Link pending
R30.htm Edgar Link pending
R31.htm Edgar Link pending
R32.htm Edgar Link pending
R33.htm Edgar Link pending
R34.htm Edgar Link pending
R35.htm Edgar Link pending
R36.htm Edgar Link pending
R37.htm Edgar Link pending
R38.htm Edgar Link pending
R39.htm Edgar Link pending
R4.htm Edgar Link pending
R40.htm Edgar Link pending
R41.htm Edgar Link pending
R64.htm Edgar Link pending
R65.htm Edgar Link pending
R66.htm Edgar Link pending
R67.htm Edgar Link pending
R68.htm Edgar Link pending
R69.htm Edgar Link pending
R7.htm Edgar Link pending
R8.htm Edgar Link pending
R9.htm Edgar Link pending
report.css Edgar Link pending
Show.js Edgar Link pending
spsc-20240930.htm Edgar Link pending
spsc-20240930.xsd Edgar Link pending
spsc-20240930_g1.jpg Edgar Link pending
spsc-20240930_def.xml Edgar Link unprocessable
spsc-20240930_cal.xml Edgar Link unprocessable
spsc-20240930_lab.xml Edgar Link unprocessable
spsc-20240930_pre.xml Edgar Link unprocessable
FilingSummary.xml Edgar Link unprocessable
spsc-20240930_htm.xml Edgar Link completed