Posted on Leave a comment

Optimize for Apple Silicon with performance and efficiency cores

Recent Apple Silicon like A13 Bionic has both high-performance cores (P cores) and high-efficiency cores (E cores). These different core types allow you to deliver apps that have both great performance and great battery life. To take full advantage of their performance and efficiency, you can provide the operating system (OS) with information about how to execute your app in the most optimal way. From there, the OS uses semantic information to make better scheduling and performance control decisions.

Let’s explore some best practices to help you get the most out of Apple Silicon and create faster, more efficient apps. Discover how to adapt your code for asymmetric multiprocessing, adopt Quality of Service classes, and find out more about Grand Central Dispatch APIs.

Adapt your code for asymmetric multiprocessing

Unlike traditional symmetric multiprocessing (SMP) systems which use many identical cores, asymmetric multiprocessing (AMP) systems have cores that are not all equal.

Apple Silicon Macs are AMP systems, having both performance cores (P cores) and efficiency cores (E cores). Even though E cores are optimized for high efficiency, they offer significant compute resources for apps to take advantage of.

An app may execute threads on both P and E cores over a period of time. The OS places threads on P or E cores based on the following criteria:

  • Information your app provides
  • Observation of the app’s workload
  • Observation of the system as whole

On Apple Silicon Macs, the system observes applications and daemons separately from each other. This allows the system to execute them with individual efficiency and performance characteristics. As an example, an app running in the background may have its threads placed on E cores to optimize battery life while the foreground app is taking advantage of P cores.

Use Quality of Service classes to categorize work

Quality of Service (QoS) classes are the primary way for you to categorize work performed by your app and provide the OS with semantic information on the nature of that work and how it affects someone using your app.

On AMP systems, the operating system uses the energy-efficiency information conveyed by QoS classes to influence placement of threads on P or E cores. You can use the following QoS classes on Apple platforms:

For instance, you can use the QoS class Background to categorize all of your app’s background processes in order to maximize battery life.

For more details on Quality of Service, watch “Building Responsive and Efficient Apps with GCD” from WWDC15 and explore the energy efficiency guide.

Building Responsive and Efficient Apps with GCD

watchOS and iOS Multitasking place increased demands on your application’s efficiency and responsiveness. With expert guidance from the GCD team, learn about threads, queues, runloops and best practices for their use in a modern app. Take a deep dive into QoS, its propagation and advanced…

Energy efficiency guide

Manage parallel workloads

Your app can take advantage of both P and E cores to execute parallel worker threads and get tasks done faster and more efficiently.

Statically pre-assigning pieces of a parallel workload to worker threads will leave threads idle before the end of the execution. This is because not all cores are equal and so worker threads will not make identical progress. Instead, subdivide parallel problems into a large number of pieces and use a work-stealing algorithm to balance these pieces across threads to keep all workers busy.

GCD is the recommended API for expressing concurrent and parallel workloads in your application. Parallel workloads should use the concurrentPerform / dispatch_apply API to execute parallel instances of a block on multiple cores simultaneously. Set the number of iterations to at least three times the total number of cores on the system. This enables the work-stealing algorithm inside GCD to appropriately balance iterations.

If you have an existing codebase that cannot adopt GCD and uses a custom pthread worker pool, you may benefit from implementing a work-stealing algorithm to achieve optimal performance. For more information, see “Tuning Your Code’s Performance for Apple Silicon.”

Dispatch

Tuning your code’s performance for Apple Silicon

Further AMP exploration

When you adopt GCD and QoS in your application, you can unlock greater processing power and ensure that your application performs well across all Apple platforms. If you need more information on testing your adoption, we’ve also provided resources to help you there.

Working on something we haven’t mentioned above? Check out the Developer website for more information on other situations like daemons and agents working on behalf of applications and realtime audio applications and plugins.

Porting your audio code to Apple Silicon

Resources

Building Responsive and Efficient Apps with GCD

watchOS and iOS Multitasking place increased demands on your application’s efficiency and responsiveness. With expert guidance from the GCD team, learn about threads, queues, runloops and best practices for their use in a modern app. Take a deep dive into QoS, its propagation and advanced…

System Trace in Depth

Join engineers from the Instruments team for another focused look at the System Trace Instruments profiling template and how to get the most out of it. Discover how threads, virtual memory, and locking interact to affect performance. Dive deep for a practical look at how you can improve your app’s…

Modernizing Grand Central Dispatch Usage

macOS 10.13 and iOS 11 have reinvented how Grand Central Dispatch and the Darwin kernel collaborate, enabling your applications to run concurrent workloads more efficiently. Learn how to modernize your code to take advantage of these improvements and make optimal use of hardware resources.

Learn more about Apple Silicon

Prioritize work at the task level

Posted on Leave a comment

Build great app clips

Meet the app clip: a small part of an app that’s focused on a specific task, and discoverable the moment you need it. Learn how to use familiar technologies and processes to create a best-in-class app clip experience for your own app or businesses, brands, or services that appear within it.

Explore app clips

Help people experience the right parts of your app at the exact moment they need them. We’ll explain how to design and build an app clip — a small part of your app that focuses on a specific task — and make it easily discoverable. Learn how to focus your app clip on short and fast…

Configure and link your app clips

App clips are small parts of an app that offer a streamlined, direct experience and help people get what they need at the right time. Learn how you can invoke an app clip through real-world experiences like app clip codes, NFC, and QR codes, or have them appear digitally through apps like Maps or…

Create app clips for other businesses

Create app clips for table reservations, food ordering, and more on behalf of brands, businesses, or services that appear within your app. We’ll show you how you can deliver customized experiences for each business, offering them a unique look, invocation card, and icon — all within a single…

Streamline your app clip

App clips are best when they provide an “in the moment” experience for people using them, like ordering your favorite refreshing beverage or paying for parking. We’ll share guidelines and best practices for building focused and consistent app clips, show you how to streamline transaction…

Posted on Leave a comment

Design@WWDC

Learn techniques and strategies from Apple designers to create great apps, widgets, app clips, and experiences. Discover how to design for iPad and Mac Catalyst and make more advanced and adaptive layouts for your app, and take advantage of versatile interaction opportunities through the pointer, keyboard, and Apple Pencil. Find out more about the latest updates to SF Symbols. Explore design techniques for creating widgets, app clips, and great experiences on Apple Watch. And we’ll explain how you can design an app with privacy in mind by sharing how the designers of the Maps app approached redesigning interface elements to ensure privacy for the people using it.

Design for iPad

Discover the building blocks for designing a great iPad app: Learn how to minimize use of modal interfaces and leverage the new sidebar to increase efficiency by streamlining navigation and facilitating powerful drag and drop interactions. See how to take advantage of iPad’s versatile interaction…

Design great app clips

App clips offer fast, convenient ways for people to perform everyday tasks without needing to download or navigate your full app. We’ll show you how to identify key elements from your iOS app that make up a great app clip, design a smooth flow, work with notifications, and provide messaging…

What’s new in watchOS design

Great watchOS apps are simple and direct. Actions should be discoverable, predictable and relevant. This session covers effective strategies for displaying actions in your watchOS app, whether they are primary buttons that begin core tasks, or contextual actions that might be less commonly used but…

Design great widgets

Widgets elevate timely information from your app to primary locations on iPhone, iPad and Mac. Discover the keys to designing glanceable widgets, developing a strong widget idea, and clearly communicating with content, color, sizing, layout, and typography. If you’d like to learn more about the…

Design for location privacy

When someone uses iPhone or iPad, they have control over how their location is shared with the apps they use — including sharing an approximate location rather than precise coordinates. This creates a more private experience across their device, and it impacts all apps that rely on location data…

SF Symbols 2

SF Symbols make it easy to adopt high-quality, Apple-designed symbols created to look great with San Francisco, the system font for all Apple platforms. Discover how you can use SF Symbols in AppKit, UIKit, and SwiftUI. Learn how to work with SF Symbols in common design tools and how to use them in…

Design for the iPadOS pointer

Bring the power of the pointer to your iPad app: We’ll show you how Apple’s design team approached designing the iPadOS pointer to complement touch input, and how you can customize and refine pointer interactions in your app to make workflows more efficient and gratifying. Discover how the…

The details of UI typography

Learn how to achieve exceptional typography in your app’s user interface that enhances legibility, accessibility, and consistency across Apple platforms. Get up to speed on the latest advancements to the San Francisco font family including the move to variable fonts for accommodating optical…

Design with iOS pickers, menus and actions

Create iPhone and iPad apps that look great and help people move quickly and directly to the information they need. Discover how you can integrate menus into your app for quick access to actions and settings, and learn where and when you should use them in your app. We’ll also walk you through…

Posted on Leave a comment

Meet the new Apple Developer forums

Whether you’re chatting with the community, asking questions, or getting clarifications from Apple engineers, the Apple Developer Forums are a great place to learn and share information about Apple platforms.

The forums have a ton of great content, and we want to help you get the most out of your visit. Check out some tips and tricks to discover how you can post like a pro, up your reputation, quickly find the best answers, and more.

Personalize your profile

While anyone can view and browse the forums, you’ll need to sign in with your Apple ID if you want to ask or answer questions. Once you register, you can customize your profile with a preset avatar, add your location if you’re comfortable doing so, and share a link to one of your apps on the App Store.

Just follow a few simple steps:

  1. Sign into your account.
  2. Go to your profile silhouette in the upper right corner of the screen.
  3. Click or tap on your silhouette.
  4. Click or tap Edit Profile.

From there, you can change whatever you’d like to change, as well as chose to show information like how long you’ve been on the forums.

Tag, you’re it

The forums are organized by tags: When someone asks a new question, they can add up to four tags to help categorize their post. If you have a question about building watchOS apps with SwiftUI, for example, you might tag that post SwiftUI and watchOS, and people searching either topic would get it in their search results.

Tags are listed on every post in the forums: You can view all of the most recent questions filed under a given tag by clicking or tapping on it — as well as check out any relevant technical documentation or information for that tag.

See all available tags on the forums

Search swiftly

Available on every forums page, the search bar lets you look for questions, tags, and profiles. You can supercharge your search queries with a few quick tips — here’s how.

Keyword search
Type in a word that’s three characters or longer and hit return to get question titles or descriptions related to the word (or words) you’ve typed.

Tag search
Want to search for a tag? Type it in brackets, like so:

[mac]

This query will return information on tags with the word “mac” in them. Type in the name of a specific tag, and you’ll go straight to the tag’s landing page, which contains a brief description of the tag and a list of recently tagged questions.

Combination searches
If you know the name of a specific tag or multiple tags, you can combine them with a keyword to further refine your search. For example:

[macOS][Beta] Catalyst

This search will return all questions that have “Catalyst” in their title or description and are tagged with both “macOS” and “Beta.”

Find a person
Want to take a look at someone’s profile? Use the following:

user:username

Replace “username” with the person’s username that you’re looking for to get a list of matching people (or, if you’ve entered an exact match, you’ll visit that person’s profile).

Quickly spot Apple Recommended answers

When browsing forum threads, you can use colors and shapes to quickly learn a bit more about that post. If using a mouse or trackpad, you can also hover your pointer over any box to get more information about that post.

Each question displays a color-coded square to indicate status. Blue squares are unsolved issues, green are solved, and green-bordered questions are solved with an Apple Recommended answer.

All unsolved questions appear with a blue box to the left of the thread title, with the number of replies inside that box.

Once a question has been marked “solved,” that box turns green. And if an Apple Developer Forums admin has marked that answer “Apple Recommended,” the post’s green box gains a darker border around it.


Tip: Be a problem-solver

Our community has a wealth of knowledge of both Apple platforms and products. If you spot a question on the forums that you think you can answer, you can reply to that post with your suggested solution. If it helps the author of the post, they can mark your answer as the solution to their problem, and you get reputation points for providing the best answer. If one of the Apple staff members agrees, they may promote your answer to Apple Recommended — netting you even more reputation.


When you’re viewing threads themselves, you can spot answers marked as Apple Recommended along the left side of the screen: They’re represented with a black circular icon with a white Apple logo inside of it.

Rep your reputation

Great community members are key to a great experience — and on the Apple Developer Forums, you can help your community surface important questions and earn reputation through constructive participation in threads. Moderators may review forum posts to ensure a safe and secure platform for you and other developers. Once a post has been approved, however, the community can rank and promote posts to the front page or top of a tag.

The forums use a points-based system: Participating in threads and constructively providing answers can help you gain points and privileges.

Here are some of the perks you can gain on the forums for participating actively:

  • When you solve problems, you get a “solved” badge on your profile that lists the number of questions you’ve solved.
  • When you provide a solution that admins mark as “Apple Recommended,” you receive an “Apple Recommended” badge on your profile.
  • You can report posts for being duplicates or spam. (Requires at least 50 points reputation)
  • You can downvote questions or replies. (Requires at least 100 points reputation)

Gain points by:

  • Providing a reply that gets marked as “Apple Recommended”: 25 points
  • Providing a reply that gets marked as “Solved” by the author: 15 points
  • Asking a question that gets upvoted: 5 points
  • Providing a reply that gets upvoted: 5 points

Lose points by:

  • Having an upvote rescinded for your question or reply: -5 points (neutralizes the previous upvote)
  • Providing a question or reply that gets downvoted: -2 points
  • Having spam or inappropriate/ abusive content that you posted removed: -15

Share replies within a post

Want to link out to a forum thread in Messages, email, or elsewhere? You can share the original post or any reply by going to a thread and tapping or clicking on the Share button, found inline to the right of the post.

Post like a pro

Ready to ask a question or share your thoughts? Here’s how to make your post look great.

Content is crucial
When posting a question, consider what you can provide as background to help people understand your issue. Try to mention any limitations, assumptions, or simplifications. If you forget something or make a typo, you can edit your content for up to one hour after posting.

Tag it up
You can add up to four tags to any post. Pick tags that relate directly to your question, and consider whether you’d want to see your post listed within that tag if it were being made by someone else.

Mark it down
The forums take advantage of the Markdown language to quickly and easily style your text without cumbersome formatting, including:

  • Headers
  • Ordered lists, tasks, and unordered lists
  • Bold and italic text
  • Links
  • Code and syntax highlighting
  • Blockquotes, code, and text quotes

Attach a log
If your post would benefit from attaching log content, click or tap on the attachment icon in the text editor. Add a title, paste your log content, and click Add Text. This text will be linked in the body of your post. (Note: Image attachments are not currently supported.)

Mark as solved
If someone provides you with a great answer on the thread, don’t forget to mark your question as solved by clicking or tapping on the checkmark icon next to the reply in question. You can only mark one reply as solved, and it can’t be unmarked. (You also can’t solve your own question.)

Event excitement

At WWDC20, the forums are offering several event-specific tags to explore.

Everyone can view and read all WWDC-tagged posts. When you sign in with your Apple ID, you can also share your thoughts using the WWDC20 Community tag or request help around conference logistics with the WWDC20 Support tag.

Additionally, if you’ve been a member of the Apple Developer Program or Apple Developer Enterprise Program since June 11, 2020 or you won the Swift Student Challenge, you can post on session-specific conference tags by signing in with the Apple ID associated with your developer account. Use these tags to ask questions about the technology within any given session and connect directly with Apple engineering teams.


Have more thoughts on the forums? You can provide feedback by contacting Apple Developer Support or by creating a post and adding the Forums Feedback tag.

Resources

Visit the Apple Developer Forums

Learn more about the Apple Developer Forums

Posted on Leave a comment

All-new Apple Developer Forums Now Available

The Apple Developer Forums have been completely redesigned, so they’re more engaging to use, automatically surface the most relevant content, offer simpler navigation, and make it easier to categorize and search for content. Connect with fellow developers and Apple engineers as you give and receive help on a wide variety of development topics, from implementing new technologies to established best practices. And during WWDC20, the forums will be a central place to engage with the community and over 1,000 Apple engineers, discuss new technologies, and get your questions answered.

Visit the Apple Developer Forums

Posted on Leave a comment

The developer’s guide to the Human Interface Guidelines

The Human Interface Guidelines — “HIG” for short — offers in-depth information and UI resources for all of Apple’s platforms, including specific technology areas. The HIG is full of information for designers that can help them create more compelling, intuitive, and beautiful experiences and design better apps.

If you’re an engineer, the HIG can be equally useful as a guide during the entire development process. It offers a high-level and comprehensive view of key UI elements and associated APIs, and best practices to help you implement features into your app.

We’ve put together a few common scenarios to show you how the HIG can help you throughout app design and development.

Where to start

The HIG is organized by platforms and technologies, each with its own index. If you’ve never explored the HIG before, consider starting with the platform you’re currently developing for.

Each platform is broken up into multiple sections that cover topics like app architecture, interaction, views, controls, and system capabilities. If you’d like to implement custom UI elements for your Apple Watch app, for example, you could reference the SpriteKit and SceneKit page of the System Capabilities section and gain perspective on some of the user experience considerations of implementing textured and 3D imagery in your app, as well as find a link to the WKInterfaceSCNScene and WKInterfaceSKScene framework over on the Developer Documentation website.

“I want to include a new UI element.”

The HIG offers guidance for all interface elements, with a focus on the element’s intended use. When including any new piece of UI into your app, consider using the HIG to review how you should present the intended element on screen. Explore recommendations, learn about the rationale for styling, and understand the various ways in which you can achieve a presentation that expresses your brand and feels familiar to people who use your app.

Even for something as simple as adding a button to your interface, the HIG provides recommendations for how to place, label, and align it within your app — along with guidance on presenting and using these elements.

“I want to introduce a new feature into my app.”

When Apple releases new features, you can often find additional insight and best practices around adoption within the HIG.

Say that you add Augmented Reality (AR) content to your app. Inside the HIG, you can find information on AR interactions and address common problems with interface patterns. You can learn how to guide people into an AR experience, for example, or how people expect to interact with real and virtual content on screen. This guidance can also help you have discussions with your design and development teams as you plan out feature inclusion, and lead to better implementation.

Get started with Apple design elements

Apple’s ever-growing resources library makes it easy to explore the design side of our platforms. These downloads are great for prototyping concepts, finding specifications, and learning the language of design elements.

There are templates and libraries for Adobe Photoshop, Adobe XD, Sketch, and Keynote, and each of these is filled with ready-to-use iOS UI elements — toolbars, tab bars, buttons, and much more. You can also explore resources like the SF Symbols app, which contains thousands of symbols in a wide range of weights and scales. These symbols integrate nicely with Xcode, they’re simple to align with text labels, and they support accessibility features like Dynamic Type and Bold Text.

The helpful HIG

The HIG is one of the best places you can start when you’re making design and engineering decisions about your app. It lays out the principles that define design across all Apple platforms, and it makes recommendations to help you anticipate and implement what most people want when using software.

Best of all, the HIG is continually updated to reflect changes and improvements across Apple’s platforms. So you can count on implementing features that keep pace with people’s evolving expectations.

Resources

Human Interface Guidelines

Apple Design Resources

Learn more about SF Symbols

Posted on Leave a comment

Swift Student Challenge Winners Announced

The WWDC20 Swift Student Challenge gave students around the world the opportunity to showcase their love of coding by creating an incredible Swift playground. Starting today, developers who submitted their applications can find out their status by signing in to the Challenge website with the Apple ID they used to submit their application. Winners will receive an exclusive WWDC20 jacket and pin set, be able to request WWDC20 lab appointments, and be able to post about WWDC20 content on the all-new Apple Developer Forums.

With so many incredible applications this year, focussing on everything from productivity to the environment and social action, we want to congratulate all 350 winners from 41 countries.

Learn more about some of this year’s winners

Posted on Leave a comment

Full stream ahead.

It’s almost time for an all-new WWDC experience — starting with the Special Event Keynote from Apple Park on June 22 at 10 a.m. PDT. Get all the latest details for 1-on-1 developer labs, the all-new forums, and the Apple Design Awards. Update to the latest version of the Apple Developer app for iPhone, iPad, Apple TV, and Mac, now available on the App Store.

View the WWDC website

Download the app

Posted on Leave a comment

Welcome to the Apple Developer app

Say hello to the updated Apple Developer app. Whether you’re a computer science student in China or a veteran UI designer in Germany, the Developer app can help you make truly great apps for Mac, iPhone, iPad, Apple Watch, and Apple TV.

Learn about new Apple technologies you can adopt in your app, best practices for implementation, and tips for tuning and optimization. Design beautiful apps that will scale across all devices. See how developers on the App Store have approached and integrated new distribution models. Find inspiration in stories from the Apple developer community. And enjoy all that the Worldwide Developers Conference has to offer.

Instant expertise

The Discover tab is regularly updated to help you find timely, relevant, and actionable information. You can catch up on the latest developer news, get recommendations on implementing new features, learn about inspiring engineers and designers in the Apple developer community, and watch videos about Apple technologies to help you build even more powerful and innovative apps.

Full stream ahead

The Developer app is the heart of this year’s exciting, virtual WWDC experience. Join millions of developers from around the world starting June 22 for an in-depth look at the future of Apple platforms, and watch more than 100 technical and design-focused videos by Apple engineers and designers on the WWDC tab.

Find what you seek

Want to find an older article, story, or WWDC session? Check out the Browse tab to search through the archive for videos, articles, and more.

Let’s go

Over the last 30 years, developers around the world have been creating amazing apps that entertain, influence culture, and change lives. The Apple Developer app helps everyone stay current and learn about the newest technologies and techniques to make their apps even better.

Posted on Leave a comment

How to test your app on beta software

Apple regularly provides platform updates to add new features, fix bugs, and continue to improve the experience for everyone who uses our products. As part of that process, we offer beta software for developers as well as a Public Beta Software Program. This lets developers test apps on upcoming software, address pesky bugs, and provide information to engineering teams around upcoming software changes and improvements.

While we encourage people to only install beta software on a secondary device, you may still find that some of your customers want to run your app while using a beta version of an operating system. Here are some of the ways to ensure your app’s stability for those people, get feedback from them, and provide some of your own to Apple’s engineering teams.

Test early, test often

When new beta software is released, we recommend downloading it as soon as possible to test with your existing apps. Not only is it an opportunity to ensure your app continues to work well, but it also puts you in a great position to experiment with our latest APIs and features.

The earlier you test, the earlier you can identify possible bugs or issues and flag them to Apple engineers. It’s also your best opportunity to register feedback around new features and influence future operating system updates.

Triage the trouble

Sometimes, changes to an API or operating system updates in an early beta may seriously affect your app. This is never a great feeling, but don’t panic! Chances are, many of your fellow developers are in the same boat. First, do a bit of triage to identify the problem. Is this a system issue, or a latent bug in your own code?

To troubleshoot, isolate your issue by creating a minimally-reproducible case in a new Xcode project. When you only focus on the code that causes the bug, the problem can often be easier to find — and this also gives you a smaller project that you can share with others to troubleshoot or attach to a bug report.

If you find that the beta has revealed an existing bug in your code, you may be able to fix it immediately and provide an update that makes your app more stable for both people on production as well as those running beta software.


Sometimes you may be able to isolate the code in such a way that you can reproduce the issue on shipping software. If that’s the case, and if you need help fixing it, submit a Technical Support Incident for code-level support.


If there’s an issue with the beta itself that’s preventing you from providing a fix, it’s time to file some feedback. Even if you think others have filed this bug before, you should always send in a report: Your reproduction steps and data could be the key that unlocks the problem, or pushes the issue to a higher level of prioritization.

How to file great bug reports

Amidst all the work you’re already doing on your app, you may be tempted to post a blanket statement to your website or within your app that you aren’t providing support for people who use beta software. We strongly discourage this approach: Your customers may be fellow developers or need to run beta software for another reason, and deterring them from running your app may make them feel shut out or lose trust in your software. Instead, if you’re running into a serious problem on a beta that may make for a sub-par experience that you haven’t been able to address in an update, consider sharing your issue on your website and social media channels, as well as the steps you’re taking to address it.

Foster feedback

Though people running beta software on their devices can’t leave reviews for your app in the App Store, they still might have valuable feedback for you. Consider creating an easy way for your customers to provide bug reports — they may find something you’ve missed!

Consider offering a way for people to submit feedback or bug reports inside your app. Carrot Weather provides two options for people inside the app’s settings screen.

Connect with the community

Are you struggling to fix an issue brought on by a beta update? Consider reaching out to our broader developer community and post to the Apple Developer Forums. Your question may be able to help others who may be struggling with similar challenges.

Meet the new Apple Developer forums

Explore the Apple Developer Forums

Future-proof your app

Outside of the beta release cycle, it’s worth taking a look at your project and any server-side code you maintain to see if there are ways you can improve and future-proof aspects of your app.

  1. Can you fix or remove any additional warnings in your Xcode project?
  2. Do you have any code that relies on a specific OS version or deprecated API that you update or make OS-agnostic?
  3. Are you using any third-party frameworks that rely on deprecated code?
  4. Can you improve your app’s error handling to continue gracefully when encountering unexpected issues?

Resources

Beta Software Downloads

Apple Beta Software Program

Submit feedback