Thanks, John. As John said, the results speak for themselves. We continue to grow revenue, expand our operating margins, net margins, earnings per share and generate substantial cash. This has been and is the plan. Over the past 2 years, our prime focus has been on traceability. The result is that we've established ReposiTrak and the ReposiTrak Traceability Network, or RTN, as we call it, as the dominant player in the industry. We have some key competitive advantages in the area. And I think over time, those advantages will create an even bigger moat between us and any alternatives that might arise. But what I find particularly exciting is how effectively we have leveraged our presence in traceability, both at the top and the bottom of the value chain to grow and leverage all of our lines of business with, frankly, minimal additional cost. We're not just a traceability company. We are a food safety company with a business model that should lead to even greater dominance in the future. The traceability solution for our customers and emerging industry food safety requirements have pushed us to develop and use much more automation. This automation focus in turn, is helping our entire business. As you know, we've been using automation and AI for years. So what we've done is to simply add more and more of those to our base capabilities. Traceability requires each step in the supply chain to provide clean and accurate data and then hand that data off to the next participant in the supply chain. But here's a stunning fact. Did you know that on average, the initial data we received from either retailers, suppliers down to greenhouses all the way down, up and down has a 70% error rate before we're involved. Think about that for a minute, garbage in, garbage out. This fact explains why we are ultimately so important to the industry. We take data, identify errors, clean up that 70% error rate, standardize it, automate its collection and transmission and make sure that each step in the value chain can read it, integrate it and send it upstream. The errors usually happen at the data handoff step. A label won't fix this. A label won't even identify an error. Our systems, however, identify and increasingly actually correct the errors automatically. This fact also explains why our focus is increasingly on smaller suppliers as these market participants have the most need for our error correction capabilities. This is good news and bad news. It means that the problem we solve in providing clean data to the traceability world is critical, but there's an awful lot of work to get it right. Smaller farmers, suppliers, et cetera, typically don't maintain robust data records or have sufficient IT support, frankly, frequently no support at all. So error detection and correction is an essential step in the process. Thankfully, error correction is ideally suited for the ReposiTrak capabilities. We're using proprietary automation and AI to both identify and correct the errors. We are seeing encouraging results from this automation initiative. And just as with our onboarding Wizard, we'll continuously improve it. In fact, the more we scale, the better our automation is getting. It's really in our DNA. The sheer number of individual touch points and data handoffs require significant automation, it's a form of these Wizards to efficiently process the inflow. We've talked about the Wizards for several quarters now. We continue to iterate and improve their functionality, but there's many other areas of our work that could use that kind of automation. As John mentioned, we're embarking on a multiyear initiative to update our development environment. Over the years, we've built a robust library of modules that perform certain tasks. These functional, if you will, building blocks can be reused in applications. Each of these functional building blocks, as we call them, has been tested and validated over time. Since we have only one development environment and platform, that results in a tremendous leverage in terms of our speed and economics. I'm not exaggerating when I say a typical year with thousands and thousands of users and an immense code base, we typically find no more than a handful of bugs. And we have nearly no downtime in our data centers. In fact, in the last 7 years, we've had less than 1 second, seriously, 1 second of unscheduled downtime in our data centers. As John mentioned, we're in the early stages of redoing our base systems, and it will be a very exciting project for us. There are newer foundational technologies creating an opportunity for us to modernize the back-end environment on which these building blocks have been built. Modernization will make it faster, easier and less expensive for us to develop and deploy new applications and functionality in the future. You might ask why are we undertaking this when our current systems work so well? Well, first, the available tools today are much better than they've ever been before, not just in terms of capabilities, but today's tools can be partially developed with AI, streamlining development time lines and costs and processes, and we can also then embed AI analytics at the core, creating some very exciting downstream capabilities. Secondly, this initiative will make us ultimately much more productive. Why? With what we know today, there are many points in the processing of information that we do where human intervention might be required or desirable, and we can mitigate that further with these new tools, further expanding our revenue per employee. Using advanced technologies, we believe we'll be able to scale revenues and support a larger number of customers without materially adding to our development team or support staff. And then third, we're going to be able to embed AI capabilities into our base level applications, expanding our automation capabilities even further than they are today. This is going to be a multiyear project, but we believe it has the potential to drive significant efficiencies and create incremental value for our customers and our shareholders and perhaps even open some new markets. As it relates to traceability, we now have the largest network of its kind. and we're continuing to add participants daily. The revenue from traceability is continuing to grow and a reputation in the industry is growing with it. We are increasingly being seen as the de facto choice to address the ever-changing food industries need for compliance, traceability and supply chain work. This is excellent for us. It significantly increases the addressable market, not just for traceability, but for frankly, everything that we're doing. While traceability is top of mind, our focus is on growing all our business lines. Meanwhile, we're generating an increased number of referrals. This is interesting and important. Think about it this way. A supplier benefits significantly from having its ingredient supplier in the ReposiTrak Traceability Network, the RTN, as this ensures that raw ingredients moving into its work stream are properly tracked. In a similar way, that supplier benefits from having its distributors and wholesalers upstream participate in the network. One common system between handoffs makes moving data upstream or downstream easier as the completed products move toward retail shelves. Long term, this is how we will evolve, and it certainly offers some incredible opportunities for us. As I mentioned earlier, we've built all of our major solutions, traceability, supply chain, compliance on a single platform. This is and has always been a key and intentional differentiator. The common platform creates incredible financial and operational efficiencies. If a customer is using the RTN, he's already done the hard work of connecting. Data has been collected, synchronized, scrubbed and mapped. As a result, expanding into other of our services, such as compliance or supply chain becomes relatively easy. Cross-selling, therefore, is an area of focus for us across all the revenue lines. In summary, we continue to do what we said we would do. We are delivering the growth and increased profitability we expected. In fact, once again, our profitability increased at about twice the pace of our revenue, demonstrating the inherent leverage we have methodically built into the business model. Even with the impact of taxes, common share purchases, preferred share redemptions, cash dividends, et cetera, we continue to grow our cash reserves, maintaining a fortress balance sheet with no debt. As encouraged as we are with the progress to date, we really just started to take advantage of the numerous opportunities we see in front of us. We are a key player. We're facilitating food safety within the world's largest industry, the U.S. food business. We're aligned with regulatory trends, retailer priorities and frankly, pain points in the whole supply chain by offering an affordable, effective and efficient set of solutions. We maintain an elegant, sustainably profitable business model, and I'm certainly excited for the future, we really have, as we say frequently, just begun. So with that, I'd now like to open the call for questions. Operator?