From 5accdbd92ff03d63d38e724115998d104744fdde Mon Sep 17 00:00:00 2001 From: Yocelin Garcia Romero Date: Tue, 22 Jun 2021 14:41:34 -0500 Subject: [PATCH 1/6] Add sprint points and versioning and branches posts --- _posts/20201-06-21-sprint-points.md | 247 +++++++++++++ ...2021-06-21-versionado-y-uso-de-branches.md | 329 ++++++++++++++++++ assets/img/effort.png | Bin 0 -> 43904 bytes assets/img/semver.png | Bin 0 -> 4277 bytes assets/img/sprint_points.png | Bin 0 -> 31013 bytes assets/img/sprint_points_full.png | Bin 0 -> 87029 bytes assets/img/versioning.png | Bin 0 -> 25672 bytes 7 files changed, 576 insertions(+) create mode 100644 _posts/20201-06-21-sprint-points.md create mode 100644 _posts/2021-06-21-versionado-y-uso-de-branches.md create mode 100644 assets/img/effort.png create mode 100644 assets/img/semver.png create mode 100644 assets/img/sprint_points.png create mode 100644 assets/img/sprint_points_full.png create mode 100644 assets/img/versioning.png diff --git a/_posts/20201-06-21-sprint-points.md b/_posts/20201-06-21-sprint-points.md new file mode 100644 index 0000000..f7831ea --- /dev/null +++ b/_posts/20201-06-21-sprint-points.md @@ -0,0 +1,247 @@ +--- +title: Sprint points +category: foundations +layout: post +--- + +# Sprint points +Story points are an Agile estimation technique that gives you a relative estimate of how much work and effort will go into a particular task. + +## What is Agile? +Agile is a project management approach that has been widely used in software development and project delivery. It breaks down the entire project into shorter development cycles (called an iteration or sprint), which lasts only about 2-4 weeks. + +The main goal of the [Agile methodology](https://clickup.com/blog/agile/agile-project-management/) is to involve customers at every step of the development process. + +How does it do that? + +At the end of every iteration, you develop a version of your product called an increment. You present this increment to the customers for their feedback. + +You then incorporate this feedback into your next iteration planning process and repeat until you have a final product. + +## What Are Agile Story Points? +Before we talk about what a story point is, we need to understand two terms: ‘user story’ and ‘product backlog.’ + +* A user story is an informal explanation of features that your user wants in the system. A real-world user story example is: “As a gamer, I want my hero to be able to fly.” + +* A product backlog contains a list of every user story that needs to be worked on and implemented into the final product. + +A `story point` is a unit assigned to a user story to express how much time and energy would be required for that job. + +It’s sort of like the difficulty level in a game. A higher number means a more difficult level. + +However, this is where most people get it wrong. In a video game, level 2 doesn’t necessarily mean it’s twice as difficult as level 1. But that’s not the case in story points. + +Story points are a relative estimation technique (also called relative sizing). + +Relative estimation means that values are assigned on a comparison basis. That means there are no standard units for story points. + +For example, if a user story A has a point 2 and user story B has a story point 1, it’ll mean that A will take twice the amount of effort as compared to completing B. So, story points have one similarity: points of reference. + +For example, let’s say two teams are building two similar puzzle mobile games. Level 10 in the first puzzle game wouldn’t necessarily be as difficult as level 10 in the second puzzle game, right? + +Similarly, your team could assign a story point value of 8 to one user story, and another team can make a point estimate of 13 points to a similar story. The value of your story points is totally dependent on your team and your task. + +Story points allow you to calculate team velocity and estimate work in an objective way. + +## Story points values +0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100 + +### What Goes Into a Story Point? +In the Agile Methods like XP(`Extreme Programming`) and Scrum have a planning phase for development team members to discuss each prioritised backlog item and collectively estimate the effort involved to complete, and then make a Sprint forecast outlining how much work the team can achieve within the Sprint. The collective effort estimation is where story points come in. Story points represent the overall effort required to fully implement a product backlog item or any other piece of work. In the Scrum literature, the effort is a multi-facet construct consisting of risk, complexity and repetition. + +![effort in Scrum](/wiki/assets/img/effort.png) + +Because story points represent the effort to develop a story, a team’s estimate must include everything that can affect the effort. That could include: +- The amount of work to do +- The complexity of the work +- Any risk or uncertainty in doing the work. You should consider dependencies you might have as you work, these can be both internal (i.e. a MS someone else developed and you have no prior knowledge of) and external (i.e. a third party integration such as Auth0) + +When estimating with story points, be sure to consider each of these factors. Let’s see how each impacts the effort estimate given by story points. + +### Consider Everything in the Definition of Done + +A story point estimate must include everything involved in getting a product backlog item all the way to done. + +- Docs (If required) +- Tests (unit, integration tests) +- PR + +## Team velocity can be calculated +Your team’s [velocity](https://clickup.com/blog/agile/velocity-chart/) is an important metric that you simply can’t ignore. + +By calculating your team’s velocity, you can visualize: + +* Efficiency of your Agile team +* Speed at which your Agile team is progressing +* You can make better predictions for your future project schedule. + +### Velocity +The velocity (also called sprint velocity) shows the amount of work that has been done in each sprint. It’s the total completed story points divided by the total number of sprints. + +For example, let’s say that your team finishes 50 story points in 2 sprints. + +Then, their sprint velocity will be (50/2) = 25 points per sprint. + +## Estimate without specific time-commitments +Things don’t always go according to plan, even in an Agile project. + +And when you’re using a time estimate, you’re only specifying an approximate time. You might spend more time on tasks that you thought would be completed in a jiffy, and vice versa. + +The bottom line is, it’s difficult to estimate the precise amount of time needed for a technical task. + +Since story points are an Agile estimating method, they make no definite commitment (like within one week or next Friday). Instead, they provide a relative estimation of the overall effort that’ll go into a task. + +This will help reduce unnecessary stress of meeting tight, unrealistic deadlines. Instead, you’re left with a far more reasonable and accurate estimate. + +## Story points aren’t subjective +Sometimes, people differ in their estimations for how long a task in an Agile project is going to take. This often leads to subjectivity while using time estimates. + +That’s why this approach doesn’t always provide an accurate estimate. + +For example, a senior developer might assign a task ‘7 hours’ according to their standard, but it might take the junior developer 15 hours to complete that same task. You can’t compare a novice gamer to a pro programer!) + +While calculating an Agile story point, the whole team sits together and decides what points to assign to the user story. + +## Key Factors That Affect Story Points +### How much work needs to be done (story size) +Not every backlog item is equal; one product backlog item may require more work than another one. + +For example, suppose there are two different backlog items: + +* I want a new weapon for the main hero, Monkey King +* I want new weapons for all heroes + +Which one do you think will take more time? + +The second story, of course! Compared to it, the first story won’t take much work. + +So the second story will get more points than the first one because of the greater story size. + +### Risk and uncertainty +Eevery project has its risks and uncertainties, especially with certain types of backlog items. + +For example: if the product backlog item involves working with a new framework that your team doesn’t have much experience with, that risk factor will increase the story point value. + +### Complexity +Complexity is definitely a very important factor for any Agile estimating technique. Here are two similar stories with different acceptance criteria: + +* ‘I want a new costume for the character Geralt’ +* ‘I want a new special attack for Geralt’ + +The first one is a piece of cake, just some tweaks here and there and voila!. The second one requires you to code a new special attack and see how it works in the game. Then, you’ll have to test for bugs. + +Naturally, during the effort estimation process, such user stories clearly earn more points. + +## How Story Points Are Calculated In Agile? +You can calculate Agile story points by creating a base story, choosing your scale and estimation technique, and then calculating accordingly. + +Story point estimation is usually done by using a method called ‘the planning poker.’ +### Set up the poker table (create a base story) +The first step of the estimation technique is to create a reference story or baseline story. + +It’s a completed user story from an earlier iteration cycle assigned with a story point value (generally 1 for simplicity). + +This will be your normalized story point. The product backlog is also presented with all the new user stories. + +### Deal the cards (choose a scale for estimation) +There are two scales used for story point estimation: + +Linear scale: contains natural numbers like 1, 2, 3, and so on +Fibonacci scale: numbers from the Fibonacci series like 1, 2, 3, 5, 8, and so on +For simplicity’s sake, most Agile teams tend to pick the Fibonacci series for their story points estimation. + +In this estimation technique, the Fibonacci scale is then inserted into a table where you can assign any user story to a value. + +Here’s how an estimation table looks like when the team first starts filling it in! +![sprint point table](/wiki/assets/img/sprint_points.png) + +### Planning poker +Planning poker is an Agile estimation technique that focuses on general consensus. This estimation technique is also used for estimating things other than user story points. + +During this Agile estimation meeting: + +* Each estimator receives a set of cards containing numbers from the Fibonacci scale +* One backlog item is presented at a time and estimators have a detailed discussion about it +* After the discussion is over, each estimator selects a card with a Fibonacci number +* Everyone reveals their card together (just like poker, all cards on the table) +* If all the estimates match then the value is assigned +* If they don’t match, the estimators discuss further to reach a consensus + +By the end of the planning poker, our table will be filled with user stories beside their assigned points. +Expect the story point estimation matrix to look something like this: + +![sprint point table fullfilled](/wiki/assets/img/sprint_points_full.png) + +`Important Disclaimer!` + +Many times when a team is nos sync, the person who will take a task will have the last word about the sprint point number to be assigned, remember that the practice makes you perfect and no one should force you to have the same rithm also if you are starting with a new team. + +Sprint points technique allows you and your teams to become tecnically equal when time passes and is a very fexible technique. + +### Calculating team velocity and planning project schedule +After the estimation meeting, the [sprint backlog](https://clickup.com/blog/sprint-backlog/) is created after a backlog refinement session, and the team works on the stories. + +The story points Agile help you track the team’s performance and make better forecasts. + +After the first sprint is over, there’s a sprint [retrospective meeting](https://clickup.com/blog/scrum-meetings/). + +This provides you with the data to calculate the team velocity (the number of story points completed during a sprint). + +Once you get the sprint velocity, you can determine how many sprints it’ll take your project team to complete the whole project. + +Iif your Agile project has a total story point estimate of 480 and your actual velocity is 48, then you can calculate that it’ll take your team 10 sprints to complete the entire project. + +This makes it easy to plan your Agile project schedule. + +## Ways of Estimating Story Points +The effort estimated in a Sprint is a latent concept, meaning cannot be directly observed or measured, unlike observable concepts such as temperature and distance. Therefore, it is not surprising to see different even contradictory views on how effort should be estimated, particularly if story points should be a function of time. + +Due to the different views on the story point and the under-defined steps to estimate, it is not surprising to observe several methods used to estimate story point in practice. + +### Use the First Story as a Benchmark +Assign a number for the first story. Any other story in this Sprint will be compared to the first story. Future Sprints will repeat this process and align on the same scale. For example, if a story is about the same amount of work like the one you have already sized, give it the same number of points. It is clear that the effort estimation is done relatively. +#### Pros + +* The human brain is good at comparing, and therefore, this method has a less cognitive load. +* Since only need to compare with the first story, the estimation is relatively lightweight in cognitive processing and time-efficient. +* Independent to development time, this method rewards team members for solving problems and focus on value delivery. +* The story points are in the interval scale and are meaningful in summation, subtraction, and medium. The interval scale is sufficient for the velocity calculation. + +#### Cons +* The initial point assigned to the first story is entirely arbitrary. Even though the value doesn’t matter as all the following points are assigned relatively, the initial point and story do matter as they set up the story point system’s scale. +* Although it is easy to compare the efforts between tasks, it is difficult to gauge the magnitude of difference as the numeric values don’t pertain to anything directly measurable/observable. +* This method doesn’t translate from story points to the time required to completed and therefore, couldn’t answer a common question from stakeholder: how long will feature A be completed? + + +### T-Shirt Sizes +Use multiple sizes such as extra-small (XS), small (S), medium (M), large (L) and extra-large (XL) to estimate the effort at a high-level. Each size corresponds to a value from the Fibonacci sequence, e.g. XS — 1, S — 2, M — 3, L — 8, XL — 13. +#### Pros +* As it gives a quick and rough estimate for how much work is expected for a project, it is time-efficient. +* Independent to time, this method rewards team members for solving problems and focus on value delivery. + +#### Cons +* It is unclear how risk, complexity and repetition attribute to the size estimation, and therefore difficult to achieve consistency over time. +* The nature of the various T-Shirt sizes is ordered categories, corresponding to the ordinal scale. When converting to the Fibonacci sequence as story points, the value assignment is arbitrary. Someone can easily challenge why a size gets assigned to one value instead of another. +* The summation, subtraction and average on the story points are not meaningful, e.g. Does the difference in effort between a medium size story and a small size story is extra-small size story? What does velocity as 20 story points mean, e.g. two large and two small stories? +* This method doesn’t translate from story points to the time required to completed and therefore, couldn’t answer a common question from stakeholder: how long will feature A be completed? + +Note: Some other methods refer to effort different from T-Shirt sizes, such as animals and gummy bears. Essentially they’re the same idea. + +### Use Ideal Hours or Days +This method is from the XP methodology. For each story, the delivery team discusses how many ideal days or hours it requires. The ideal day or hour, using the Fibonacci sequence, can be based on the average time a dev needs, or the time an average dev needs. To determine when a feature can be finished, we can use a load factor (i.e. an ideal day equals to 3 actual days) or a percentage (i.e. assume in a day, we only have 70% of the time to do actual work) to convert the ideal days or hours into the actuals. + +#### Pros +* Using ideal hours or days to estimate effort promotes story points to the ratio scale. This allows meaningful comparison between story points in various ways, such as summation, subtraction, multiplication, division, medium, etc. For example, a story with story points as 8 means 4 times more effortful to complete than a story with story points as 2. The ratio scale also allows producing any metric of interest, e.g. error metrics. +* The measurement of effort is more well-defined and easy to explain. +* The three aspects of effort can be easily captured by time. +* Can directly generalise the average times needed for specific tasks, e.g. 2 ideal days for writing tests, 0.5 ideal days for documentation, + +#### Cons +* Human is not good at estimating effort in time as we are inclined to overestimate our capability and thus, under-estimate the ideal days or hours needed. +* Management may hold the hours or days against the delivery team on why the development falls behind. + + +## Fuentes +* Peck H., C.(Noviembre 2020). *The Ultimate Guide to Agile Story Points(2020)*, ClickUp. https://clickup.com/blog/agile/agile-story-points/ +* Fan S. C.(07 Enero 2021). *Best Way to Estimate Effort Using Story Points in Sprint Planning*, Serious Scrum. Medium. https://medium.com/serious-scrum/best-way-to-estimate-effort-using-story-point-in-sprint-planning-f43ad2d6fa91 + diff --git a/_posts/2021-06-21-versionado-y-uso-de-branches.md b/_posts/2021-06-21-versionado-y-uso-de-branches.md new file mode 100644 index 0000000..4e70413 --- /dev/null +++ b/_posts/2021-06-21-versionado-y-uso-de-branches.md @@ -0,0 +1,329 @@ +--- +title: Versionado y uso de branches +category: foundations +layout: post +--- + +# Versionado y uso de branches + +## ¿Para qué? +En desarrollo es necesario tener un lugar centralizado en donde se almacenan los proyectos que se desarrollan disponibles para cualquier developer teniendo un historial de cambios con responsables asignados. + +## ¿Qué areas lo necesitan? +- Equipo de desarrollo (FrontEnd, BackEnd, Data Análisis) +- Producción +- Devops + +## Repositorios +Es usual que las empresas usen herramientas de versionado como lo son GitHub y GitLab, pero además de usar estas herramientas, es necesario tener buenas practicas en el nombrado de los proyectos, así como del uso de branches. Abajo se expone algunos ejemplos de como usar el nombrado de repositorios: + +| Name | Descripción | +| :---: | :---: | +| Versión | `Números: V1, V2, V4, etc ` >> `Core del negocio: Administración, Finanzas, Cobros` >> `Por años: 2021, 2020, 2019, etc.` >> `O bien una forma creativa usando nombres propios o acronimos: anaconda, boa, zebra, yak` | +| Tipo | `ms - Microservicio` > `fn - Lambda Function (Azure Function)` > `fw - Framework` > `back - Backend` > `front - Frontend` > `npm - Librería para npm` > `nuget - Librería para nuget` > `int - integración con otra aplicación` > `mig - migraciones de otras aplicaciones` | +| Descripción del proyecto | Descripción breve del nombre del proyecto. En algunos casos puede incluir el módulo al que corresponde. Siempre-va-separado-por-guiones-medios | + +De esta manera, un ejemplo para un microservicio que se encarga de crear y manejar notificaciones, que será usado en un ERP, pordría llamarse de la siguiente manera: +> erp-ms-pending-item + +## Branches + +Dentro del sistema de control de versiones distribuido (DVCS) para llevar el flujo de trabajo y código así como el control de las liberaciones necesitamos llevar un proceso organizado. + +Para esto de los repositorios centrales (origin) deberán existir branches con una nomenclatura y rol específicos, facilitando varios aspectos como el trabajo asincrono y paralelo del equipo, visibilidad del estado de desarrollo de los features, etc. + +### Branches principales + +El repositorio principal siempre tendrá estos 2 los cuáles tienen en común que nunca mueren (como José José): Master y Develop. + +#### Master + +Aquí sólo se encuentra código que está **listo para producción** por lo que es la versión estable de todos los proyectos de un producto. + +*Quién usa estas ramas:* +- Branches que nacen de master +- Branches que se unen a master +- Enviroments que despliegan usando master + +#### Develop + +Aquí se encuentra el código que tiene los ultimos cambios para el siguiente release, cuando los cambios que se encuentran en este branch son validados y se encuentran en un estado estable deben de ser unidos a master por medio de un nuevo release. + +*Quién usa estas ramas:* +- Branches que nacen de develop +- Branches que se unen a develop +- Enviroments que despliegan usando develop + +#### Feature + +Estos branches son utlizados para desarrollar los nuevos features de los proyectos. Tienen un ciclo de vida definido el cual acaba hasta que se finaliza el feature en el cual se está trabajando. La forma de nombrar estos branches deberá de respetar el patrón **feature/.** Para unir un branch de feature a develop deberá hacerse por medio de un PR. + +*Quién usa estas ramas:* +- Branches que nacen de feature/* +- Branches que se unen a feature/* +- Branches de los que nace feature/* +- Branches a los que se une feature/* +- Enviroments que despliegan usando feature/* + +#### Release + +Estos branches son usandos para preparar una liberación a producción, aquí se pueden resolver **PEQUEÑOS** bugs/features que se detecten **antes de la liberación** así como actualizar la información del proyecto como versión, cambios (changelog) y documentación. **Estas operaciones son realizadas aquí para liberar develop para que allí se unan los nuevos cambios que servirán para el próximo release.** + +El momento de crear este branch es cuando está lo suficientemente estable y con los features necesarios para la siguiente liberación, el criterio para colocar el número del release se expondrá más abajo. + +La nomenclatura a seguir para este branch es la siguiente **release/x.x.x** + +*Quién usa estas ramas:* +- Branches que nacen de release/* +- Branches que se unen a release/* +- Branches de los que nace release/* +- Branches a los que se une release/* +- Enviroments que despliegan usando release/* + +#### Fix +Estos branches son utlizados para desarrollar fix pequeños dentro de los proyectos, que pueden surgir del feedback provisto por QA al hacer la revisión de un nuevo feature o bien un fix de una funcionalidad que ya esta en producción que no es bloqueante o bien es una mejora en un flujo, para optimizaciónes o sugerencias del usuario. Tienen un ciclo de vida definido el cual acaba hasta que se finaliza el fix en el cual se está trabajando. La forma de nombrar estos branches deberá de respetar el patrón **fix/.** Para unir un branch de fix a develop deberá hacerse por medio de un PR. + +*Quién usa estas ramas:* +- Branches que nacen de fix/* +- Branches que se unen a fix/* +- Branches de los que nace fix/* +- Branches a los que se une fix/* +- Enviroments que despliegan usando fix/* + +#### Hotfix + +Este branch es usado cuando un error se presenta en producción (código que está en master) y necesita resolverse inmediatamente. Se usa para aislar el bug de master y no afectar el trabajo del equipo que esta agregando y desarrollando los features para el siguiente release en develop. Sigue la misma mecánica que los de release así que se tiene que actualizar la información del proyecto (versión del proyecto, changelog, actualización de documentación) + +La nomenclatura a seguir para este branch es la siguiente **hotfix/x.x.x** + +*Quién usa estas ramas:* +- Branches que nacen de hotfix/* +- Branches que se unen a hotfix/* +- Branches de los que nace hotfix/* +- Branches a los que se une hotfix/* +- Enviroments que despliegan usando hotfix/* + +### Versionado + +#### ¿Por qué? + +Debido a que en una emprese se tienen varios proyectos que tienen muchas dependencias tenemos que tener un control para versionar nuestros productos de forma que con sólo leer la versión podamos identificar el estatus de un proyecto. + +Este sistema es un estándar llamado **[Semantic Versioning 2.0.0](https://semver.org/)** usa 3 números los cuáles se usan de esta forma. + +> MAJOR.MINOR.PATCH + +#### Major + +Este es usado para indicar cambios que son incompatibles con versiones anteriores. + +Por ejemplo el proyecto A usa como dependencia la versión 1.10.2 de B, si quiere usar la versión 2.0.1 de B, deberá de hacer los cambios pertinentes antes, ya que es seguro que varías cosas cambien lo cuál generaría bugs. + +#### Minor + +Es usado para indicar que nuevos features fueron agregados y que son compatibles con versiones anteriores. + +Por ejemplo el proyecto A usa como dependencia la version 1.10.2 de B, si quiere usar la versión 1.11.0 de B no debería de tener que realizar ningún cambio a menos que quiera implementar los nuevos features de la versión + +#### Patch + +Es usado para indicar bugs que fueron reparados y que son compatibles con versiones anteriores. + +Por ejemplo el proyecto A usa como dependencia la version 1.10.2 de B, si quiere usar la versión 1.10.3 de B no debería de tener que realizar ningún cambio a menos que quiera implementar los nuevos features de la versión + +![versioning-standar](/wiki/assets/img/versioning.png) + +#### Reglas + +1. Un número de versipon normal deberá tomar la siguiente estructura: X.Y.Z donde X, Y, y Z son números enteros positivos, y no deberpa contener ceros a la izquierda. X corresponde al `major` versión, Y es the `minor` versión, y Z la `patch` versión. Cada elemento deberá ser incremental, por ejemplo: 1.9.0 -> 1.10.0 -> 1.11.0. +2. Una vez que se ha hecho release de los cambios, ** el contenido de esa versión NO DEBE modificarse. Cualquier modificación DEBE ser lanzada como una nueva versión.** +3. La versión principal cero (0.y.z) es para el desarrollo inicial. Cualquier cosa PUEDE cambiar en cualquier momento. ** La API pública NO DEBE considerarse estable.** +4. La versión 1.0.0 define la API pública. La forma en que se incrementa el número de versión después de esta versión depende de esta API pública y de cómo cambia. +5. La versión del parche Z (x.y.z | x> 0) DEBE incrementarse si y solo si **se introducen correcciones de errores compatibles con versiones anteriores **. Una corrección de errores se define como un cambio interno que corrige un comportamiento incorrecto. +6. La versión secundaria Y (x.Y.z | x> 0) DEBE incrementarse si se introduce una nueva funcionalidad compatible con versiones anteriores en la API pública. DEBE incrementarse si alguna funcionalidad de API pública está marcada como obsoleta. PUEDE incrementarse si se introducen nuevas funciones o mejoras sustanciales dentro del código privado. PUEDE incluir cambios de nivel de parche. ** La versión del parche DEBE restablecerse a 0 cuando se incrementa la versión secundaria.** +7. La versión principal X (X.y.z | X> 0) DEBE incrementarse si ** se introducen cambios incompatibles con versiones anteriores en la API pública **. También PUEDE incluir cambios menores y de nivel de parche. ** El parche y la versión secundaria DEBEN restablecerse a 0 cuando se incrementa la versión principal. ** +8. Una versión preliminar PUEDE indicarse agregando un guión y una serie de identificadores separados por puntos inmediatamente después de la versión del parche. Los identificadores DEBEN incluir sólo alfanuméricos ASCII y guión [0-9A-Za-z-]. Los identificadores NO DEBEN estar vacíos. Los identificadores numéricos NO DEBEN incluir ceros iniciales. Las versiones preliminares tienen una precedencia menor que la versión normal asociada. Una versión preliminar indica que la versión es inestable y es posible que no satisfaga los requisitos de compatibilidad previstos según lo indica su versión normal asociada. Ejemplos: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7, 1.0.0-x.7.z.92. +9. Los metadatos del release PUEDEN indicarse agregando un signo más y una serie de identificadores separados por puntos inmediatamente después del parche o la versión preliminar. Los identificadores DEBEN incluir sólo alfanuméricos ASCII y guión [0-9A-Za-z-]. Los identificadores NO DEBEN estar vacíos. Los metadatos de compilación DEBEN ignorarse al determinar la precedencia de la versión. Por lo tanto, dos versiones que solo difieren en los metadatos de compilación tienen la misma precedencia. Ejemplos: 1.0.0-alpha + 001, 1.0.0 + 20130313144700, 1.0.0-beta + exp.sha.5114f85. +10. La precedencia se refiere a cómo se comparan las versiones entre sí cuando se ordenan. La precedencia DEBE calcularse separando la versión en identificadores principales, secundarios, de parche y de versión preliminar en ese orden (los metadatos de compilación no tienen prioridad). La precedencia está determinada por la primera diferencia al comparar cada uno de estos identificadores de izquierda a derecha de la siguiente manera: Las versiones principales, secundarias y de parche siempre se comparan numéricamente. Ejemplo: 1.0.0 <2.0.0 <2.1.0 <2.1.1. Cuando mayor, menor y parche son iguales, una versión preliminar tiene menor precedencia que una versión normal. Ejemplo: 1.0.0-alpha <1.0.0. La precedencia de dos versiones preliminares con la misma versión principal, secundaria y de parche DEBE determinarse comparando cada identificador separado por puntos de izquierda a derecha hasta que se encuentre una diferencia de la siguiente manera: los identificadores que constan de solo dígitos se comparan numéricamente y los identificadores con las letras o los guiones se comparan léxicamente en el orden de clasificación ASCII. Los identificadores numéricos siempre tienen menor precedencia que los identificadores no numéricos. Un conjunto más grande de campos de prelanzamiento tiene mayor precedencia que un conjunto más pequeño si todos los identificadores anteriores son iguales. Ejemplo: 1.0.0-alpha <1.0.0-alpha.1 <1.0.0-alpha.beta <1.0.0-beta <1.0.0-beta.2 <1.0.0-beta.11 <1.0.0- RC.1 <1.0.0. + +![semver](/wiki/assets/img/semver.png) + + +### Changelog + +En conjunto con el sistema de versiones cada proyecto debe de tener un registro de cambios (a.k.a) changelog, aquí debemos de tener una lista con los cambios ordenados cronológicamente. + +Esto nos servirá para que cualquier miembro del equipo pueda visualizar los cambios que ha tenido el proyecto en cada versión y consultar si necesita hacer algo adicional para consumir el proyecto/dependencia. + +#### ¿Cómo lo hago? + +- Están hechos *para los seres humanos*, no para las máquinas. +- Debe haber una entrada para cada versión. +- Los mismos tipos de cambios deben ser agrupados. +- Versiones y secciones deben ser enlazables. +- La última versión va primero. +- Debe mostrar la fecha de publicación de cada versión. +- Indicar si el proyecto sigue el [Versionamiento Semántico](https://semver.org/). +- Cada versión se escribe a manera de titulo, acompañado por la fecha del release: `[v1.5.10] - 2021-06-21` +- Mientras no se libere un release con la nueva versión, los cambios se sumen a la próxima liberación se pueden colocarse con la etiqueta: `[Unreleased]` + +#### Tipos de cambios + +- `Added` para funcionalidades nuevas. +- `Changed` para los cambios en las funcionalidades existentes. +- `Deprecated` para indicar que una característica o funcionalidad está obsoleta y que se eliminará en las próximas versiones. +- `Removed` para las características en desuso que se eliminaron en esta versión. +- `Fixed` para corrección de errores. +- `Security` en caso de vulnerabilidades. +- `Unreleased` para llevar los cambios que se aplicarán en el siguiente release + +#### ¿Qué no debemos hacer? + +- Tener información erronea o desactualizada +- Si hacemos un breaking change, debemos de estar conscientes de que la documentación debe de estar actualizada, así como una guía que explique como migrar entre versiones. + +#### Ejemplo + +``` +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +## [1.0.0] - 2017-06-20 +### Added +- New visual identity by [@tylerfortune8](https://github.com/tylerfortune8). +- Version navigation. +- Links to latest released version in previous versions. +- "Why keep a changelog?" section. +- "Who needs a changelog?" section. +- "How do I make a changelog?" section. +- "Frequently Asked Questions" section. +- New "Guiding Principles" sub-section to "How do I make a changelog?". +- Simplified and Traditional Chinese translations from [@tianshuo](https://github.com/tianshuo). +- German translation from [@mpbzh](https://github.com/mpbzh) & [@Art4](https://github.com/Art4). +- Italian translation from [@azkidenz](https://github.com/azkidenz). +- Swedish translation from [@magol](https://github.com/magol). +- Turkish translation from [@karalamalar](https://github.com/karalamalar). +- French translation from [@zapashcanon](https://github.com/zapashcanon). +- Brazilian Portugese translation from [@Webysther](https://github.com/Webysther). +- Polish translation from [@amielucha](https://github.com/amielucha) & [@m-aciek](https://github.com/m-aciek). +- Russian translation from [@aishek](https://github.com/aishek). +- Czech translation from [@h4vry](https://github.com/h4vry). +- Slovak translation from [@jkostolansky](https://github.com/jkostolansky). +- Korean translation from [@pierceh89](https://github.com/pierceh89). +- Croatian translation from [@porx](https://github.com/porx). +- Persian translation from [@Hameds](https://github.com/Hameds). +- Ukrainian translation from [@osadchyi-s](https://github.com/osadchyi-s). + +### Changed +- Start using "changelog" over "change log" since it's the common usage. +- Start versioning based on the current English version at 0.3.0 to help +translation authors keep things up-to-date. +- Rewrite "What makes unicorns cry?" section. +- Rewrite "Ignoring Deprecations" sub-section to clarify the ideal + scenario. +- Improve "Commit log diffs" sub-section to further argument against + them. +- Merge "Why can’t people just use a git log diff?" with "Commit log + diffs" +- Fix typos in Simplified Chinese and Traditional Chinese translations. +- Fix typos in Brazilian Portuguese translation. +- Fix typos in Turkish translation. +- Fix typos in Czech translation. +- Fix typos in Swedish translation. +- Improve phrasing in French translation. +- Fix phrasing and spelling in German translation. + +### Removed +- Section about "changelog" vs "CHANGELOG". + +## [0.3.0] - 2015-12-03 +### Added +- RU translation from [@aishek](https://github.com/aishek). +- pt-BR translation from [@tallesl](https://github.com/tallesl). +- es-ES translation from [@ZeliosAriex](https://github.com/ZeliosAriex). + +## [0.2.0] - 2015-10-06 +### Changed +- Remove exclusionary mentions of "open source" since this project can +benefit both "open" and "closed" source projects equally. + +## [0.1.0] - 2015-10-06 +### Added +- Answer "Should you ever rewrite a change log?". + +### Changed +- Improve argument against commit logs. +- Start following [SemVer](https://semver.org) properly. + +## [0.0.8] - 2015-02-17 +### Changed +- Update year to match in every README example. +- Reluctantly stop making fun of Brits only, since most of the world + writes dates in a strange way. + +### Fixed +- Fix typos in recent README changes. +- Update outdated unreleased diff link. + +## [0.0.7] - 2015-02-16 +### Added +- Link, and make it obvious that date format is ISO 8601. + +### Changed +- Clarified the section on "Is there a standard change log format?". + +### Fixed +- Fix Markdown links to tag comparison URL with footnote-style links. + +## [0.0.6] - 2014-12-12 +### Added +- README section on "yanked" releases. + +## [0.0.5] - 2014-08-09 +### Added +- Markdown links to version tags on release headings. +- Unreleased section to gather unreleased changes and encourage note +keeping prior to releases. + +## [0.0.4] - 2014-08-09 +### Added +- Better explanation of the difference between the file ("CHANGELOG") +and its function "the change log". + +### Changed +- Refer to a "change log" instead of a "CHANGELOG" throughout the site +to differentiate between the file and the purpose of the file — the +logging of changes. + +### Removed +- Remove empty sections from CHANGELOG, they occupy too much space and +create too much noise in the file. People will have to assume that the +missing sections were intentionally left out because they contained no +notable changes. + +## [0.0.3] - 2014-08-09 +### Added +- "Why should I care?" section mentioning The Changelog podcast. + +## [0.0.2] - 2014-07-10 +### Added +- Explanation of the recommended reverse chronological release ordering. + +## [0.0.1] - 2014-05-31 +### Added +- This CHANGELOG file to hopefully serve as an evolving example of a + standardized open source project CHANGELOG. +- CNAME file to enable GitHub Pages custom domain +- README now contains answers to common questions about CHANGELOGs +- Good examples and basic guidelines, including proper date formatting. +- Counter-examples: "What makes unicorns cry?" +``` + +## Fuentes +* Preston-Werner T. y Semver, C.(28 de Junio 2020). *Semantic Versioning 2.0.0*, Semver. https://semver.org/ +* Lacan O. y Fortune T. C.(30 de Abril 2021). *Keep a Changelog*, Keep a Changelog. https://keepachangelog.com/en/1.0.0/ \ No newline at end of file diff --git a/assets/img/effort.png b/assets/img/effort.png new file mode 100644 index 0000000000000000000000000000000000000000..fd3cd4b9758683d826050f4ce233c5b76d6f060e GIT binary patch literal 43904 zcma&NWmp^0w>R2Sw8e{Sad-EY7S~dWOL2DzPH`(xyf_pq1ef6M1c%_R#U;4D)Biai z-upb~-gEOIlSwAYo|(1RT0hwls>(7LuSs6Nc<};5PWF@9ix&tj!0RDY1mJl<6mk8< zi|;SwK7CO4SU6lp@*(^B^x{+il67cbO$q{8<;$_jEh8`5E3dj+wb%9StuEoIGX?vkt;V|NYU68w)Q~_G7*Z| z^`tODT^9^}D;Q&fN|m*%oxIsd=}!}ydnPs_;==muCRwP-mC@ly*3D_VVNt~zMlU{t zPkOJ4z{5jlESyz^=lBWx=4Mel`QE*GkFj0J{UOia(Zi5I#OZ#Pvhz&zdc-MB`S!kl zuqtCulyiz}P4KFlZL_%QP)qICt>wh5|C2|u@4Z3HX4@z`Ja=QRCjsf-I6FrE{BH1F zWtinDhw;NMg_^Z{dpt{4OLPnfBU*i7j;Cx;$ooAUe&E{K60gzQkHJ_1k zxyI&wB0l8ke#=WqDy22=Aq%BYO4*5p&2sTt&RqX%Y=NHZiD8jS_L1F+OODF@ym#?l zM4fW^&`4~b=gl8+uOl4|>mb#e$Dv3w!MfJo!Z3?qXwNBLq--8k5aMyWz$u`DKL%gLlpNR7|2lSAD;y!qDQ+B>GVkFCnmN3E z^7priaLCE@99#O)mqHe27CSL5C(Qx0*=Q|HCivCfjLxR2k9s9Qxr0_QjPt9n}lzF8gw93cM4CJm8baOz) z6C%Cy(U@pvLQ04?=OgOT!@HxPlyY=T%MeNVckj~o?@Lw=6q~dz&t>WrBd&vu(Ov-4 zY{^xJEIDe;$ zxpAaWqZ=(Eg@eEO_6p;YKbtk8SJxf|s9IzEhP4ObJQWar|$t}`{4 z@t-O4HO<~KyxP|tpy}X403uDHArGyavYGko) z8q>05c0kxo*m`oh{*Pf*RF*9$Jyr0sJ_ZwZd5Z_InL%(Ybv zFQ+Ov(6hFBIG1cxGVlM6dU`~ujsz=<-7f8mhBix1%?9?`RgD2nGXvZY5 z^q{?Y6m5aM4I`$Xob21S>8=-z`;L8g_&8mk-TG&W^i56r0oYsAXIkcZ$EH@<47zr?V*zrwa9pQ~9A#=;{v4uKvf#X(rQ)tAop*tGW(a zhReF~v!U3LKiqupE~Pqgly{C?QjkcZhu@~R8zav(m1O;1O8!%P{Pv4E@s~i_h{Xln z>hL0Laqdz|lJOE-w!)E%v}WGQ+COFGNT62yfFtZ=#$VPpWR(D3qN16nx!OTs}UJ zA!8J}FfjdY_58NVKujUdOezwUy#VtG+#$=ea`$QW?4$|UJYoxq*ku;;g-w}zkNrA; z=gnijxT&`m0_vwdo~DY8%g30vH``O&3MLXu9?&e8{zw@a46^=5#YNH2-q3G$UkF1v zQ3wmdD!eun{5svacto{&>iIFIH81^&K5Tnr#_R~T6}jYBK~jjCYsoW`n04Q{fW-Z> z9MnriLU3fRcl~d4et#Gnz~2C3_1L5vT|&Yq5SxT#oM0E?4np5V{W7oh$Bu0u?43?> z=NT;O3sbfqif}+fbvwnZ{D8^=wyh}pdzacH6jKk0(*_q9N4$HKKPpHt%cDUid!F4d zIJG1^d7&H38Q3A=&Ea;og+Xo}87|5U@*oa7O12I5XE3$Cp45A)R9NNt_<+LC?U}xLTBl@i%UbvB2yJsEs{uVj? zV~ds~n<1&euVtS-*W1pq>TUTmEC;sRTibp#pUog1-tN%a9-Y9BFl1K-O#BQ%El!u* z)x76l76yiBFTTeizp$s?(M3Nb+a7CgKHR!&xAn0MO)sjG{qz}uS^|8V)SjuNQhFP* zw`LO8{XTmpr-*^SDbuc7>C%_BtNpqXk%B6oHlI7-6EildT<*_|*12a&O4g`wH$EA3 zlh_{}8@u#|O?=V{l0vI!$?2eCn!CIqGu9{-SkI? zn~PRymsnNpN5_^}lt~&6=;$@8=N^Inm5(=!A-DcCMGe4>{a!Wza9+=c^(H zTvGx`Dk<~A=~;F6kAsM7(gAyDFYJHK^abcs7Vet!4zdPAXM)Qb1%z3Lgq%wjt6tqo zhZ2*FKgEA)d6-Tx))&zUlYg^t<&&5Tsd03#r*>pzXm#peWU^xm5)2KI7LrkNN#~sG z_<~^Ed*>)31DyW}Dt2&!_5MpM6K}=2R&7^-(n7=X=@LpPnDi1#)b6rUH-#NoFF8X3-Iv+*2k21H{C)h+qL#4I9%kC*FU%*&;sPd?VzKECMIvNbrIb*yh0^95JngT2SXD^y4k3imSpF7yX0uXf{ zv+Vb?8_8e2IIRf$cQb!f?fE;8#&-z4dDVma!OioU=Gy1>$|WTf#SIv=l1p|g?OL`# zwuzGSlIW_%s=@wNAzq|x%qAErOj_dYh`_)^&D*uNzPs~_kj1BBnU91RsM$*e0k~B; zV3)rSXYtQVu5F%lA1o8$-D6`I*@yD+h#xkh>sr4SWU_XnN#zICY!uHDj_8xzaL_f| z>fapFy+nsTD$KLjV3)VhaEmTT(c={Al{Y>^9#KH%2d=zw8&R4eh@m2q>xeI;NnSKG z{#yLp{;j!Q!tn8Srq)G90Z4)2G6c>O@vvObqi0E-4*!`3YCw2xyc`-Xp+fOVT_92D zh%Uk3W4l)W`%9qx-f_j#h`+gQI}qsgxbeAXrI&xN#oRmep;(cf`}v`#R@(rcj6$bh zTEcwPtFRx;$HwvGw5&YG4l=tCH^4Yc4)WV8E_t z)vqS_(_DGXdPc4E)YZv~G#7;Si!C23jsoH)ii7wMV5BkSkt(Z7aw?^Ke~Dr?VeSN= zB|;bIom~9MN&o^-TA7=&4Mi|s+-UZb`jz;m-ArD)-``63GiOpBU*+l2k1{<>J^J6; zw?C-*uRA?GWJzQXRESHy_}54SkA|~vO8>7Y7MKqI9{)F%eeo|9uA!iN>F^kTBgU)- zQ1QPvc1;WT$ySng&OA;($ zll33CNe8bP39bpKFw$Zm_gR{{3NL*7wq`WB1_~gIKss&VMkTQ)@FMqp@+fXi$k_E5 zz&K5pMhjmUDvz1T1@a8guf~MrynKKd3C>Ii*M5_#{KWiy>3hz4A*XQZY8~HWrat&m z7}@#NLm^sl@F!-x2*%WqaW!^h?eL&ZhjdxRw)39Gy_yy(OW-@^0h_;C6P6e{fRlf~ zM8DeO3=Zrfhd~H_lCFU|R^%{U-U<{}1+g}K_Mi|pT>}N03B_z0@xA(fNBsYnJ^1fS z^Z$9ce~u5WV^TEw`O63K@SenBNm*=FiSMguz*}MGJ~SN_dMiX~so%CU<9=eTU3bE! zsU5RMcCnh8R|js z*0P5kx%h2g%}=Ve`Y-NWS-IOZ+X!Ai`@fYEKFkCn|M-qnuqH6C{gEhS9Wlm)2#b&7 zhHae_eVvvXkq8lEtsXg&_22*gPt3~y6gK}t@P9cxR01(;*UjsrjEaO(x5EO$sX`U2 z2jSJ5y{>jrLq6-8za=q*rONQ@RWC1-fQjyA%+9r^4o>8y$+2@ zx}BfI%SHR2)$!*imMdU;TrnM1o#)2dC82#7YQ1fD+rkltKdTkBYR5wk9t zd#aiL{FA=@c1c3s?9qAMBb-_t)=l#~>zLuOF(e&uNN4Xtp4&Whqg zX&D)78yiwmlF+cQUgN5=%*=|4ip+3Mzk?ZbJVf&w}gjin~X3F=mZ=L&ji zyw^OFQ>#8lUz0b<$jG|7y3$EVt*x!^?(bg(1uiWwYbS?P+=I~i&ldV1rN8AfSH2q& z^`E^~D2@t>&JL?lWbS+7vExz3p5=bctJ7K&v@kZM&4@R{U)O%xDNZvor^Dj2M8+pf zU*Di(!5NI=F<+cSD>cIl5qo|T4>dc2X=IgS2CKeUB}c?)$AdcWHJV+E!8>mVs$_|9 zwtVl;Q%N0k841v4*dxZ+%hT{lpYm|JJ;qPx33r{);jWNuVIjN^<1e1J!(Yx?N^=-A zRC>?u&TDJ$n8T)~T+SxVKubzB@10+DHy zP!N$j>&EE(!u-j}&kvJ0?6; zoX(YlX+_}4nNG<3(%T1M2u%OI{+HKMu^nIrnD=oWCUBu zL)qBMOS6TU##f ziy$ie^SiAvPnQ)>I^>3tHUDGYLdHf(`O1f^T|IKUAm3&DWHpMu*-lU(a$<7Y-K2zp zrIpp$`T6L@O4{1Q z0h*SqKPvLITs%4|s_XSBcEl&a0EHghDSRrtbJ5sM4+jSaJ0&HTFK?k$F)_+3;^O@L z{DLu>>WQ5vs?6rg4ddoB8EExj>19EcmZ8NjFx;p8F zUkRDyI5@?s%uT}0!omxg8JVrEzNXysb5viit}eXpZ#+D_a8+ZUrO#TvQzs=?XFcWW z?y7vz8Ym&rnQ~Tu%UjbUc`9LEc00ASHMT;E^BP+f=y95b=I^|l2J(#qX(NXYfVOU% zK#iqQ%2z=~<@sk&nVV~PMS)^q^xiS)pHdq;`;#utC5-~~OHjRq8m-%0q8b^5|3vWc``qr8=nnOe?}e4BG;?QvV~ zdrHl~4z6J2P?;ze(zL~9G=%yuy0@N!izRr7F<9ua=7gHWKU{ycTj*LixX54yn0ydF zHn7J;jQKcz8b+TKZs7kwv8wu<4<$xBpfn-k7iyjx89Y8YIW8`>(H3<%N8u13pBuls z&}{|=AXar{`jfPqyZiBC^X_!SCJ-J{ zQXw_wBcp?(Plr?Fgd7Hc_l^modUJD)>dW;!p+jGlm6d04E5z?Frl@jr-LI~YkZ$el z02ajlz@fc+VZm$cSie_F%DK_!EWRN9WEB?&=d+e-({_vDnta5xRq{#L{$&@ZM7 z_;2ovxa^E}WAm?fRAwC?(-@M8-@#I(q@+-(C=FMU-Vm(#^=JCMd?^(Ya?*a!-tUAZ zb}p-Um>3K3b9{PeXS&XA@Y>Rgj0#%l>=PEN zC@lkzb@%!~@90QpSt}FeM4Ij)Fm*#M97?W73j!&Z8Bz5C^m8J6%Oxc*qISbzveGTYy?>Nn)}^j?Jz;wE->H#(a2 zQX$pjZ1~p`&d61eMZ0LWj-GZb)i98UjxXe}Y_-;ROc&=CF2|#?FEC{6f!j=((S8+7G>p^W0<5(In|N9qYis$)C>%+b-I4aktIKX05)~Dd zIvspm+(3_&g`uWquucD!3MR!|g<7%sSnA^PvfHDVxxR0vWO2)NR^aZl7yL)m} zR8&e)iWX~md5PCff4EDDO_;4} zVBo&qX#rTB_%wm=$M!$PY*$n=J4KI;mpyQ(b1`? zDd^&2e}CBaTofS(t6nXmsE?Za%;k?Ct|&4xAQhD=tx}jZmsa`}DX6v5Sv~LM@W`T{ zS-3GIn0ioCLa1eT&WuAdtXXrElwyLc^;fc?#=*%RHw#r0=vzZUUQuJ~A{0h7-mhd< zz*zFf`w&JRu)+?1OHV1Bd9e|O0%Xlaf?hPltyHkKgRR8I?z+$Q{w+|5Zq4|l)2gbH z7r|wScyd#UUvy{J!p+seDdAG(nEZUvcC1jL1sx!l;vgE4EgF5wo7zXmlcNy!Jp%Gk zC#S8ndZjF5L-JR3gGE!SB+*tgwh_(|@@1XO^}oHf#R&*7c_?)6R)!-#gV#S7fnIJhdYM#<4CDkyl`XH$_W=F(J^TUAtq z!hj0D@jpx~RuO-!mCSu`y=PbyfBI9IlhaT+4qHAt$a&c>bJ=%z$l7W^nav4rW791y zEd~0&u?%sy$Gc0Q)DCh@kP6t@+gi%1s6YotlVxesPnspz*|W?A(Ypt^SfO5?o@EW& zGe9MsoQ#Lnm)#x&VMToUJzuk{C+L4Xv<;o*;dy*`tf{HNkyJ=we}k26%1QLj_=eoW zf7U6apf<1B-|^F1(ql^E!$ko>XCXF9s#>4pL~o4|N+PmB)>6xp{pO4;LII&*+VHAv zqz4I#1x_*MKTWwu<^3zRdw&~$#*2Www&Gj{3$2Bi{{}Q`44B2=6^>p!RKH?)n=<@k z{%$Foy>JWSb~%zta5lcoQi_)xU8YZKm9@UHoOwvmvYTA`yQFh{Ldk}3nHyB1NX-p; zGr}^-8M);2mrT-9+Vxad#a@kxjndbx|14^c@=)k(ZJC7=orl9qt48qYvj5rPQ(mV3 z^_O`mKyReOTB_T?s{W1}7@D0wvCj>M;z+_RKD9jzEMLVy#PnNtQarL`@c2MFJqrbA zNCj@B*=XXPCV5{gPX|A@MNUw^i+r?H2JmPBqRe+c*EV_sg~&ga^U zL))~%UR#?Fe0US1@UKvtQYwwlUU+w1Wb^T;AZV+v7YA_5yG z$rog19*vJzrZ;<=s$alZG@YHRwPU~)6$$bMai1rE#;x6WkFEg?BifR?uVl(|iYDu6 zN?3qlu`5y-?jhdqWSFUt%gEgU?VZsvVoJ!VO8+Ai19x@%#YZ>Xr?HLq*Y3K{f{k1Z z9co0hzfb%gRj%jv8zv#i$m;s4G_swd+Qc(ajw;RcMYlH*1F#8#^vZXkyK(Q|FBB*4 zT%z!6ID3<_T(s7q63xH_!m-ncNeT9Mm9+s-|m7&Y`c5t&)+^6Sb5|S_B$g6++#CW=*D2;ykoewT0~?NB~_)f>vcToI?A2C@eT(c#W+9#7i!L4 zPd(u<^#~_DGhZm_VyyZ!ze*IkPQ5L?mG zoNvy)hRDgy8u;E8T(5dxgE?X?c}cLaun0A0&(gOAW4EtYAa;p^8_%stn~NiO)wlOT7B*7z)y z1B`M^2vr*eYVPE|blHm5^0?QzbKiEY4@)BwwOkKPV2Afz*vhi!;p1{YrTo)>>ZcxgtKfa)MC+xeaI z2k(PxU8DzDzeR5-a6=WLZ1?>$kA`;*(S+h(3KZ5xudI_dl?_H^N0`126d1=j9$%nh zSpbcmpUZ2F*HIQvE&N3d`|@5-ZzvDF4+fQ9zp?tBa**0n3MNMSu(G#Zr_?EK58YM# zz$?0n{6hdtCWW@cp*23W>~gyH6!`EE_}~-#Q>U!WYj|KmB^7C;=Ti1};a?b3e#x*Nl9Lf|=%TB3@oa3A>ov_yPvha^lar8y8VREF zJlLbhT5EDdigxWg};J$>NTp=Ple3XSfqe~SDER{E^BABdj}M#E|Q zr1J%Jld4-Fw|{$i;d4im^HnZ|QtyJ7>+L_=Sd0M|jcv@1oC3zoYBrS@SSW+?1__UQ z60|B@QRKi_lrLPAe^;L5!mu*k;gpdH-kj9tGR#sCa}vs{ZE~6z9()TWQkueAsry~i z{OsdA%0fv=;ys5bB*uJG0jj``3U(yKLd1|D`_|zrngLmA`(#g5SEZq)BWvJ!k=0$4 z&_mt1R@tXqrq}Lj{;>7)^aV$ca~3-$W&3H0Ny=pUVlx-IZjGQH>|rlamN6k*ph7=C z5gO>T{Hk?%#m9LQ;OeSW1vz<*9c+AO%UsB9%XrSA(tLM&pFbpYKkP6l?hxH@z2Ov( z37M#!SXnWe^1b%FzuDT|-E$KTeAm*_x;vVFa(F1p%^kSu(KW2Cp)sRbVX${_L?<`7 z*l*Dp7@|BnN>V1yD(dri1iC>%oSR!9iIz^1uXCMu27zJ+xww#n0(K|zjTs z)vL6I&kV5?hEqixW)6i02jx(6fy&$n--!q|wn@6I#%F2qX`%T|EmP|SfL@fRyPW!Z z6+64=IR2()Pgb4k9w=0S2QouNMb)|354y?_vM)b=#JZ%T(+8sB;Q09J8mnP<<(USx zYoxo|lJ|8;R}$DE0gAu9Z6@B<#&69Bt>#q%e`O9)n+GCC!llsv{r5P2$(~bEO5RN$ zu?*k}PQyfUY7^xWlVk1lhz}2DBm`}}K0Ey47duCK$;U@sSp)jMd-F$iH3?p%&?5;S z;!NJmID)A-Xs2uH@Q9YwCCVLZ^NlH&nG*Lw7cYCm_Tpl&_ex zWJE_;GszX=KYh?X3YWH^N?Ido^IZP@)QRJ-VnNm)r*S=32s0>;iMG=RCVSlb9EiqJ zyZspu3$xwCR9lC}&-c0De4GRC(+5jf-&78c(`cok6)Oj5d$pK zVEa{7QtPs`H(t&Gn?F|uCV68ve-+pss=SinY0wHsOk_eT%Q7QE=#NwVj!4U0@iWIt z+2T6|tl|cu^I~(gJS!3^T7oDk zYAUF+PFb>pGplcRj{vk}VoVdC}5vy8`MsChatHSK+B7DeRu+la|Lj zaK+rhLRmf7dDOmr6*3tbl4LWq+z$17Bce&m z`KnZoDT0?~3ok#0n=87}_iy4(v|_bE?*A6N;7I9tH;iNY?HT6DK;H^|GQ@F3NEd@eG*g2UleG(GF* zE#9V+!(mR##9ISu(J}Z(n$H z{7I}#^V`3KD9@eep(B%E#5%t{=D06BHp78$ri5BqWK!(4MeC1;?}*6sR?EVVyoF-! zpD+u1>Li?n4*|q-`oaGv?wf;?7dIcf(UyjWbXWNiHdC()M{>JQd>jTBCc-4928)&BtzjRxbz z_w?K;PKdK)#r>#!=JTM@FUq9Hb}@9vxA;)XQok1hXyGpZ@%aAlqSJpo!2i2h`2Qhk zeP4AQ@2J-E)3(#K;CQfQmPGw1n+G%G_(Mbi>%tmb(Lz_6Ro6UOuDKuHn*vS;{foYS z9cb*h#zOfS)2}w=U3hZxPUN|Bkij!l1*Mxa$iUFRU}j-b61yjwV~mKOmsj0DV`gzN zX!9moY;|X+aKD7POyf;^Bl?q-knPDnlmlEqyc5bG&dYswyxTv@V8+9G-#x}w^2fpU zU_cHrb7d(14zFfaXqqtBxJu4;U z9$-W044Vtpz$PX|59gs_GJk%TmNqnKm1#tM`kkJyyyfZl+~%uUp@)fyQCD5PA$Uw^ zuBmHtAVX;nkVvsVevphI{$l}4-n>5VHI9?ay@3%%sWJ`&eDlTBk%m0W^Y<4!eP8Es zBTS#$S~b}Xug=Z@%I!8}*E=YRy&o;w7t!Lq0JU`|_SN1xocMN|V$_{L?aU*26JdYu zcDl8{TyPPrE`J++;$*C)@;u(SMb@ZjO@+T2i~|V!LcL#mlP;C7tm7Z}a@myQ!^ZR$ zFJT2CXA{P`YkdY@BS&Ib?X~*UIK5I~sEp^<(nbn0u?d;4`<*gqDZJfeK&z^X4U|rs zfjd81sw3|RKo+;F>kQHC3?9Eybg2EZ%ekaHd#Fh}zY;%RQEdx^czw>F zdPr`J&G#{Zqhw!~R7bdkR43Lz)^|O~m-0m9vir{|JsQbEvsXfOWV1I44rYyVJH6!} zaM@zjV?u4>^h|PcUtefpUtjJzRkXCr)5AQ#D}AkBhFHV)*K>1SEXKCBOe@-sAiDOA zNtAGfbc+}TUE$kTfWZhXw9sVX+%cK1dXWY2)Ht9TpmTy84t9X!0vA7ewBA zGY8H#-_qnn7kNUuyvFotIGH9DiAhu!c#>%nM*O@yez!66YP)XaVPsy8Dxzn&3+PXY zN&S2M^q(}Q>+*LJCwYVHE!6?GC8=wpv3@FmIQ=v2a9Jm{N3i`fBdi zyLS3VmQgkwBa?!B*kx%v{0h#&fq36!<9c_1gijstu4k1-oZi$_9mK^~QB^RdV?`_> zL`&Th2CQw^)DiY#FWR21ca^969sEmGB+2g+mSoJ&( zhQ11C#=JvC?~kDr@mhcIjQlMuA_Cwb#z^i*x%i`_BYgaAimWW6P&e0F!#3CA@^TGY zTofeak?^RRM5t#L!03Y+IbtIt*_oNUoD>Vx$VJ?1tE$d6VGc&zmIA=O_0CFDWHmS4(wmb9WIouWewUyygM$R~N)QhzJ2f2E}D%a?0}7 z4i1D-pN!VmzZ5Db44UqwSX-AQB*Y5~3-=fUaOozI=}Q53>RuBMk-UNe4-b!*SChW} z^2WvnpuE3l?BF6JjiNe-I|HA{goc%smH~MT5eel@h-C0j>Ab<=fq^lonO5Jb#QR+J z$X?vY--=0lT5;V@4@>hrfIc-nJy!{@8M8jv$Hm26T3SLuK>>97*Kc0CdS!yaiy1;L znfiKjC&;UaA9(rr3-f6O`1xNmG8^r%F33jpP-ndJSec&G{Hjq{Sm^5N`i?{-D z2@enBe|gmXE)_M}Q3M33P@`bU^@1qE$fzhnRxKhTyrnsaB8`L_m(k4!!(LagM)w!M-+O0dq4IIr%0`sF;dufe|miUo2sLulADs06tNVV zq@?6;hW>%=*IB#vX~s4sI@-xV8M=TSOysu3Kun}$-)G4U@Bcmih)Vo}7ckjdFdZ61^ENM=$Xn{lF#WC=4d_h>Ta^m#3Qa{thq zbPLopyWA@;oL(#KG;h=F}VMI^j3P zrba&M-&0tmaLD@GTj7?UehPe81AGTGB$?p6kp((5=Qm7aa3JWeF|yjcT8qol3-{zc zti0LGD=?;#{w#u(8K*0|I~E=vt`zcf^F}~I3>SYxgpFI3mY~2aMGwk4y^rB;4KAoL z2EfZ^z&qtQ?^r!S7dCKh$vP|+YjIKM-=HQX7bccL`|{>C794W8U+9tklx_91=dafL zRRu+V^;PJPfD-$@qH%t+S6Xb;*>;RzYHj=p;R{tis;E#Nr&xvUV|A*13`9=5S58|B zSS9n#rp|U0&zscdA^i^mLqzOVhATvKBppXCj#e3)@<@z{03fTBuvH5sB$iydU=!w7 z({kj?zJ6JwyxlElopFc1hx%qlcUKlg#F#Ay54Cc?}Q&m)%?s%^wj2%@?|ye3YGFEQ^>`WZ)@M?>l4w zeskn+t;Md2@bLdAobMS9^tToJjt#KBB(T2;)ls@4-uz3#4#sN8G>_*pVdaDxbBkJN zO#46`_0t|vz*;pc(g5)4^CRG2k^1V+Tu|3lUEbI|)%!G}(vE)ScJ1mW=qE(O(@qUk z&8A#FaeCL%*wGlb4#j8L_zPFJ%4!Yjm}@v3^$gBfX8-VQECLYe^N4o*RQe2ilihsj=d$DFu~?Mb27t`q?IwyI-m}p*gGImU&J%n5$UBmuG}M&# z`E=jpIvClb&h-a*2HpLu$=Pv;C4Qd?cpcfPQ*{(0n& zw7)oAQFZxtZ`g6Qh7Lc(UF>qEJiY`Oh18}%Z)SXx-4gGCZ&IdsIgxD?0P*LTo6(^eiZCYr`x0&Tlo7iTtr;_95 zq1oJw6+b*Usi~54S3cjne6Ze2mH7H7(n z(69$1aHZ?WLzvOoPn@*uN zFKx3w=6K~&XbcXx1~4u$7#;Ya@MME@I zcAtU7O6>3LL8|J=DY!GO06rD?D&^mk)!X?Z>AcQf*w=U1mb_^nQLtuarh9rBYU}Fk zeV-pABb`Y}b%S#cOAjaG<43L?B2cl&pNE(tnVFb8pIbrl3i5i(!1}1=5SLw&{R08p z2Iv%&W>3dhPA;M*il^V16?%1fl_lb`1F5rd(5;cqRee&~;q$X@2nTF50{w{@@e6(K zGP+5{S=%=}5wqlWU+bce!gu8mPWF%dEq1FeTDSpHR+5nk{0ET!IY^Tig%|ZXN^cGa zLYCr5BD7?u6wQ1Uix8Z z64C`nG8@YyTib&syU#5}MeyP`#fz93xx|3GckI2F!5+R2 z4{KN9*7Xb6aQR9=`%0Z;aiy)@iJwV-T+1X$T~dZoqm8x{45Q4y%_X(VpzgWnD`}Fm zv}>gz^#;!5-sQ=WaGU2y7gGX4B=o@G_6A!H7hq)NzJ8Rln}WtJnG{ss0PDp1p*HE> z_hBBv)sZavDSkgiT=*MRl9p_*)Yr?TOSTFz_li%f zB$VMSj1`X?ifT(+s=42-E$yGbjX9+m5%x$elq8~$wA3HWWwMy7ygv6kZf(Vr^AKDt z+D)23=ix3H8Q@6Kl?Bu(VqN8l<^!;TB;8F+A&4}pN3VR)=f1#9=ieoGw zh^7&d9}^n~P5Z+EB34#(IvKaWw5gTb=Gr)8|CyDi z831A)o*nZ8HXA?^5&-|kEgt!P?dFT_Or+l#I=0BnIt4Mz-k@HVF(+-&``B~ih&*g` zB!j?cns{aD%nX1zG8_-{oikn@pYBIT^Tyii9i-Jy>uX%my@k*2R^Fx<-W+6}apfY0 z;wR3E!AFnBV)Q(ARBXoR%}zx8E<2kwOAYWCa9=YY=(IKc9C9vH7ME<12A>@6)mO!6 zwc8ffr_=mSJ*lHX?>^`4b|M=!wr07l4bM@*%p|6OO`^jA4BI2wx%%8r~eHZD4S)5D}qO*}}wzhl!e-U3`5X z21agua!?U3(*TEsg#lu^Rhr*js)g;*p@@hG$nVN(1IF@PZ{;G{rI=~pe|}T-5#8bYb-QXK-Y$pK68uxGCaaffS(fRN4JhPHvylW|LO{W z5K$<67@382@+M3z{(0@@=NCUCd~o_a0f-CaWMt0|DJc2e+Ad!Q!gftXMZ3Lk zcCU|D_-NSuj+!p1s{{oYy#LuC=C97)s)(BbHbDx94yT9V;)EjQEWJi+n4Qgx8s1lZ zeYew&fa7xZNZLA`Wnf6a!n~)8-FC&8h>3#>89-9oxZ$Ft%)SXujZw}nqGcE}tOUd@ zMh21Q(pp}>o#CJ3<6{!{ymUgIBTa5^2-$E^5mPwy?{4z2j>yR#9v-Wz-lOz80sQ9P zm5Ot9&B>DEEYOZ)NN)m$U|*-3pP6OLeIw~y=qwy8m#3#%Rd)n3G7P}sGo%&i&NS52 z^zM-pmMxx<<#9%ZQi$gGUjbhh(Z+7MI+HV;WufV=Q1LZjw%PTdc>5Ye(dcm@xu1Qk z#m~c^NE-nk6awJCy4Day(=I{i`a<)aao59%9@k>$OjBd4cejaypBoh)Ye!9E`S$$v z6<{)!fLJ9(1vNQ1ZWY&y`@1a~8DbSR4Cd;$2Bjix*R#b$VP3-FuA>~K5BJU9OBsh0 zZPywMB41BBPFGjvZigV<-l7?7rpC#eB)ZMVIzj@&V?nfoAaRL1puN@{&Mc|@>I;DJ zc^hs2X8(~bRSB|gWrM++n-1c-I%D{e0#WkRKE@8`3!Y4-5l+_bYFarxxv?>(a^chC zRiCBIA!`y!FDq|9Z6!d0so1Tt^nx#h_y%)H#>jO zODqVip@#Lmxee91{+6cFuBcEaUMM#@OU?ixWt$Bw+W`H-$@gYO*RB*VyaO-} z^SM2&?jsq!%p&V2Z~b}oaDT7C@gtqbZnAAN1?1~_Hh4eF9v(}LDhjULUr&*6s;%+c zQ8}pddSz$bdvg-=msBvzf318ws5`H?v4BIY<%1DZum6$l8&8@Yb5&0}myb3K`~-Zb z;S6Y9-%R~H$G;mDI+z_z2Im0c)fpgOeWnsO<5NP-9nE?IO8+iJgUM({@qpzg(dWRB zi@9Fj-0vF`v)ke3b5TrR%7(2^(~masHBo?;m3<5M3aLYI z(yOfSw)=7qcxP5GVjNi-d!w*c=`@*elxle4d0z}oS{c980p@I?P#9@6`SK$`4~{*V ziS;{WianC`huwKoH2*Tt`%Fpjmk#eI0R3uqRAfjp4ZzVD*D8bT5mA^CX=IU>I(Brc z05=9S96@n%V=Qo2Cl70=PJ~{l;L6xkV}8k*j(M)<6Z*$rW%7+y%f`W*sNJZ69`Gp+ z7HeJezF@PhlzT5h3C~rMxB|Shf!XEa%HQl_73d33{(0S@#L<0eY1Tn27uogoAX(Wz z2{ko3Wh5jdkrB~JvITW~FyCi!)s*0EbERm%u8xj!CO@0FU#K(~h?#@WEG)tDs;VGB6{O*oE*+zxG3-V)0g4}>d~gw= z2LuEF?ClH(JIVe5;QkMpqQ3r~Q(QGVJ?#qA4}(1KeqdL{r+7_^^(IQ{0x# zgJsLdFMSiU+3ol+C55ACh|kF+PlaF;8NzDP1D9Ey#t`wjOBU2f(sV?UXUGwkb;eYKLIc{Wb%G{%zVcI0k5CA14kh(h7TK# z8vAo)bo6xo152V2L$r$Qqh2ht)EIjSos*>c-#LW|cwz5V>eZ)a{z&%T8C=&;ikPYe zw?h$Q@MR{C$B)(`0a3MJNLCs0t7h7f6%ij!bO}zSk(2~sMn1G`Dl_S>JG)g@=@%^=a(>XL6Z4HN*8*FE^lPK1mE2bbT= zq(z4Y5rLnx(`Mp04@D)t&F`L$DDZU{4;Dg-DQ65-36>vAwQP*vHjZ+PuOaz~$c?{p z9;s#c{p$zoC45r6cLXGb<8+8b%RWuLSi5bO_Jtuu#MxF7>1(paeeI^*2nfY^>X`NC zlR*P$CA_oRH+>(Xe+GFc;UFM^q}uPcF!k{~p8A^GJ()z+j1iZ;g->qxYLZ!Butc6h zScLP{Wl?PPtabhb3`i*(6oap4PWqWhiAj2PzSUq54EB>|`fbPQGelurG|rJ>ZA?h3 z@iNn^ckVEl#jSWD(m&O_55YHCB-kT`Y$3*)xnUF5ik62{A~K zO0zZg%ZJ|1qi77oxLkg(`z|WP=mB%A_ka@C@Z_8x*;X}2mKWSD+a(_6SfWI3P5s$z z6cn`q1&OoPx*?+Hz2o|{QNh}9Gs=0?rO*FEv;d;?g+?n1<9aGq@$}7G1lGfGD+I)7 z&QG5~uf<}%Q$eNFI3w47$Wv~W;F*1;Xe|l!7LKTDAR`JLi;>REC=_xJOtA_#SkVfh0NIH+}v2?umpvT3e-~{23^z0 z5G+&lfhK223nj`Fy5Ue{MGRvNfl~`g>AR?D&0rq8qC=?2`oIZrey4>4c_1dTW*D{PdTbTC8=7MqKuOjX`I}& zC0KuK%yJD8f#d*ZT(LwQ4TRJ>6tzJV0vq#m@7;1l$Yvtokc%Ox<$LKu<=%}er1SIh z%UFH`ubQl@qwrhw{9VN=DEKEk8v=o_LOBOb8fI-9mNSon4Iqvr4qQ7vwkL&S zgYF)n>H!F!8wCgzDSQr{_kzx?t7H6fn+`+o;_Dgs{#Gf44;fd_xe!x>1N?E{%c1>} zTU;_DNP|fYaWWC0ZK|`0PC$cU-bv5lY=0(?9m0NivtYU*fD9@TL@PDLS5YgeN zaV~HiWppvDG~{^jt7YvM+?(NVL8xWN(2CH%T@UT{pIm~@3H@0dlkt{ui# zOhT(MB4sr^M*P-RIkvzi2_lGc%sYu(BQKNdxtiZ^=R(*>RTLu9lVg8Cz*1^6$$ZL9 z+$=|N^a#Po-o5s2_Z~K{yvYwlf)OFJGx1Zb;!kbDen(?I@Gv)Wy4}OQNYppp&e!h# zXG=KH<`bQ>{+q1OXfP6@KUFVK3M++#55%REKAAHqV*wB9<7^EM)L~PcsEbaLagR9} z(wm#_lf#BRjUs=J6 zrxOcNYAjKEf99B%*FwFeBT1$shz{qJkB;B`5^J!))t@Np>wG+%t~fhpC__km zyE7D3(3XPt6LSUpu+(U5%c`Zi{{7A7-H)G;P#rqFQxE+~i6d^d_jA;5=zc$1`zT3} zY-Bo~#Tixkeqr+a!p12Yi$}6ax%%xOb)M8fh|zo%G-r0WJ5%i=u#h348cjMYiVg|ZB5IdD4LkFVE>ENwdOE)DwkTQh9N_h z$jQY8AlaD2<_SIo_Tl+M{64y0m~}o zj&7kXnVICJL%$u}WYj=`*}r}f#Fr#hzcw&EK0M5)m#0d6Eawb92&psE@z<`(dM+~U z?k-5A3xi69INw~4F(>*HI5e||7SGL^yYYT9M4Kg}3D@l0_{%EEQ7fj7C(04{sNq+eWY zRO!bS_KaD$r|#<2RXO!!FmOzw8Mjwf_x3RjikNCa%yc7B%H}Ko>Y;R7VLo&T^Tc}j zX6LcR!6^HQl$s9|eyy7HNsAoJL9nVWy+EC=%CGDuGf^+12!R#Tja8)eeY1OAr$HP& ze5_@^E4DViHU>gYd*Uy20(?%ICfj6`gHY~zWI#D|>YmNg2gko~D3(nQnVCzy-R54G z%g6Fjh2r;Aumy^GI!>y16gi$Nm*Umzvigaz90@2)Q!wzlwd9{qXj3$&;i;PVWA`eP zw({e|0(*NwP%CqCr zuQr)iPgcjA{{K#Q6Le650iL*v2nk(m87fCEpvi!DssvuIV<=T2daif9=QO!$$2csCY=oYEV=85|V zE#d=*oT-PI#{7G`0(SS-1$(e0SEGw>y|0RrgpG!t#dS_RN>rAZ+U77tSWw{QX7N42 zM%Y^~8xlPdJ%JjGOu+=d>tPCve@n@>TBY?R)y)MZB}murM-~H8-a~f6g}XW*8c2>*?ufe0Nke5_tje#==6HuzdYW z=a$se)RuXEJgKKA1}qR29iFg;&r1^@$z;ltxc;MReoeJ zHQo4uWPDekz#FAtUIWlm)jH{IPCKC+@JKs5S``9P5!Xqx{kC^{;J`y}FJK`RFnQ5o zp`miTQ5F{Fnh8lHk#-AykJS*76)f_#gB^IPQblCvmb45!b;zf+rj~)l$lk_gDI>$> z`H_!?JO1?IB04nEj)(XgDJEt#7>sTUY*|~|t~Z0o2MNLB!9{vZ({_4|EzR_%8|$ig zTMoQqW7UAgc9rt@^z?RZjUc=rH8SOxt+w-r8@o{{Ln$x@k@w{e)Vo+020SP(HWqay3Vr7!whK@iLN-5gDq zp|tDGg07H*dWLCrH>U#e&370aiV zq|48xa3viSajLF`e{^qg-l%{*8VRupgA<>;jr2UnNN1q6ud30ahY(5_* z*Z5l!r_>q^y4$ay<{E93)`P4@Q)D`9uTLFH(5B7vTa)M|RSwzP9ucuY!{Ac5dEZO- z^{%(^x$0fHNm^?#GwNm!6&a8}8mye}^;76Y803wwpJV|G9M#%0jW{3=Sd@#&Y_o#4 z*F7VGa+F+TtM1GnS9nf;YERE}R2#~<0)zEzWGL?DPO0n1X-*pHU_o}bTuEq??#w@$ z+3%3sd0eOavIa~o+X@?QB#3)K;T}+0T(6ShU!Y4oE+4g{n+vOt2n~7Sh=mvn+Y5Z) z0gpM=#-w;><0YmrJ9+DZ0t!+Xh(hQt8fuGHOR`!_~G*iQ8=O)JN=FcWjwZ9^FZad&58C2^Wb?6;D z#ham{OJI%=yVbYfeXr!P(L@Wug*mLJpcHn8ps2Y?8bCKY9!6eO`c+@ok7y0#1O11M zOw!(x1tI9(^ZJwR3<_d2IRS@-`h8seoCtf!t2Uoso4YYG7STnBpPj82k#8dIj308| z)3W^hAxIRM4E{de8d~RIaw}j|@tp`)4vGT-Kb{bhE2@O$I*4!4_#BjYyy!Np^))7) zd61S4?KzlKitx#t>@80&`ZkW;>nm^n%y&xq-LaHV`{G{h58wL6*Eg2KNVd|~3foX5 zPtjLbYctu%OwTL26|9IEQ3}H-DYhp~cz8igyuQ3FGkTFQT*eNBsN$vYddTlH|eEnD5kM{MOSdwe=Y~ZUM<(DU-c^$#Sr7PS1Cb3T3O#t?uB;@M3$V zXv}i<>s)OF{X`+KD@4KP-BebVFt7zwjio8#dg<>QO**}Pr+l z4cyX0^6%y1>J~I6#$8YP8JLBIERGjfSFzAxqFCvCHUy=4r2G!RSYfKCr>=gUFBks` ziTt3Ml3txEQTTLJ!ZpMccJG36bK=GeP+nvyDY)>ctWF6CDXsU@BO-!Mt!LtrJx7Wn zcd6al`)Emc7c1?L%aud^_oHiFG?9wW_6O}B>Xl5@P0a1tYgVA|dug{-xKqm0ZZ^pT zzx{&9nOdC8*4^%zYJ8^5YEgPkuN)JMwW6JsTx)&stSw@2M3dxvb#2UhcAm%Kb482* z$EEr%^EQ0xm(!u_TF{7*7bCOa=@spE*}Us&qKX#1*?L8$a5}`$$2%&isC8-W&r>zz zYVn^Jqt?UC!u3(V5YRqcS1fzMimBUbp z5cF)htUYNw5ztzkTG-hsAWI{FZ#eEE7TzaMHX*}D{iFM`H}-oF^L@V zx}SD^A__LcQA?*>J?#VXqdb~Ee2Gwb0*=9A{Emly6z+SPFVJ&dI#Fb(+?|&dVaM6+ z8;UaThXI!pk(d9PlIr!En~wQppWS?*xMFPz@l(65c0=)`sHH+`tjJz`pT)QqS)d4;ITxJfJh zS_b3^(7$;z!MA%$W;iL5c!#BWyiSXoY7*~^2#dA)fja3U_)#B&mWHu&VS+3W(k7jV zL(%TA%`0L=CKcmN&I9~|b|rQ=$WV8xD`HdbeLNS#-EIPJi6o#m$K{HnKO6EC8$iJQ zP!oy_e#TJ&#?B9dvu^)Re|$=T$v|bQQMAG6cV1qgyIm+%fIb7p`PHAV`^Bj5aS)09 zMMq&vO!WL+3VHeT#7JV=$RbO|VoA8fc&aM9WT}jLKBn?kl3jsjI)bTNKWDiV(5C>;}=Y%D`?``nuXceop znAGB8!rIyz5PEPJ!jS0Y?*2o5iy7F_dqVDsA_24!&bB1N;04`5Do0S(q*?Oe%MGch~A>apQ!7m9;KrVC^0SBq=Qg)Sm_v z;jFJ<%;=~nVA`>c?D-5%>NE2u7lA+=*7N03aB2It90MVo#O0KN`V5KZcaQ#^ouTnG zD!u8w?c<*AKi;7qA0MlSLaErT&lBj?)W%+ar=+41XN?e1}B!bc3auDU3 znsni$s28BUeTyI7O%*#kvhsED7FDBA$;HhL0BZ}afNl7XB~(=JX%%}fPcQR{RO#@< z#Qs{>OG61hEG58X@_`5kID94vO5g5JLGT64K?FQ&^%AtVZ!{Sa*;57=7HFN;yWVkp zv98lifGyQ}0khc36Q&>*DQRG?rL633-QI*uB>8)SaMZwC70%$7^~e~`Ba=5&IS?kc zf7+F6@;{E*<*dDLPdDihv*0_~nZ#S8yx+xXelg^)J$qu-r%6IDRa=$FQw06?WxuL$ zfe=VRsF>%GZ!q!Bnm7^sIhpWLP2L6oG9h^q?tUfa^@M_?cY!{R1vp)R&(zjhFey9^ zN*x#W_Sq0EMUp-VnDtuvsEq@b|N8P*$5eil-JlBGR(i)rLrq{lyiq_U))Pa-(sO`- zR2MTcVU5mXlgvVN1`xf(K#goa4^1l_%H*N=^%jR#gdWJ%(2;7;!xEz2lb1$*JZ zBKjm;%3v(#nO{Z8tSUNYWaolcKIk&X3r-{XT0-%U@r#O+yS_>y6%!k~lOz?26hhdv zl_qhb$$YZ$v!N~)NDcH$LCQ4c0|5d8E9kBXc*^)SSbjd)jYaB|N?~YcH|L*KTvb6@ zy--v2^#rsMNva6cEA0>FXw5p6n&wcrprDPuY&M~2>)>HAmIxq%h3a7K=A|XalD=C{ z!oy#OFCy(7?UApabcaRgNOYd$8OQu-c^UbZ5dZ;GvaZ%JfUyv;grh^%DGf$|_@r;3 zV1q*(XE|ialfA-uuzx5clVmC$eX|FcXiTY%JLE2=;P;2!{Tg zzvWllMSKQKFypq?vKeBtlF|BN<}mYh3)JKsmFv%$Q1DM`?JtzGRX8C_h%nZEN!B&q z=Zm<%tgTd>N-$RRzpQ^ZCB?8L)$kUWqBck|P{e>n{B%|hw<%;#M!N2YT+D2$@LQoGsRy7uRLl6WSmgvF;mQ>#9zMGck4g8prunt zVpt1tf5NefjZkB#96}4?BrXvlmqs~ygm6);FN&OlX1dkwSVRGGfrm!K$$ah5Z-M!A z7+E{1p90N}sDEKR6ji*8*sR@bB)}EfK zjMkVPk$AoBMf{#$(e5~cLvRBqzlhHG{Z!*oBPYzZLV~3{V$aATVwrHMMfqbk(X9j_ z9p3-C<6}l?6wuGz_Y|>pXAc=^rHnY4&;C4HPcS27&ALASpm-0j4|<baHUsm`4aD~hGZHKv>4CG-ndisjQsZS2;ij<1c(ZpWXf5}7?O*J{RVqDAgFg((B- zDUSUgjS4vRXGkixeqf^091z|emLk4?MfCMwrDE?}6(TRf{7QHQhVAIfK1L)86`yFw zpLdOVl_&lfRxxL4Py5Q{Lika#M{dJw~6$R~9;}7gw*_*B10J z9)Ah04L>capFTyJ5ZhXnTJ* zOV?IoV6XIvrpx!BWwF^JH5Y0Us$0J8*o+*n^&I>V-X^tu{pQ<+Y$bKfBf|jMZT?GX z8p-0~+ECGNP(H^UV~vOu1T1%b+8(K8PP>qn)BGiH(%U*f%mtLxHBznz}O4b+Y> z*ow9l(GM};c58&#x+H8m&Dc70Trz>}C;Dj<`1Ok#(MRIf##q439z+TU+L-5QS5aaQnm;O1cSInU_fMTnOY_=ypHnuqv*_xFGITJXRB`hR!uIx+aa2m1dH7r!>r zgzbp+dM(=jsbO|3`L9VS`(e-KHa7CNa-#VgGvw`1&&C z&9J^YL%tyMPNf(Q=seSbiJ6^80={`3v zw=3_+Lm}WLJucCZI_bDMzCKz2#O@Bgsxi)tB)84ZXCH!abJky{FKB)L3KHwRqVc%u z>NN0tE^-4|^?eJTfeFWeuCiT&?VpI&gS2B*x~D~7uyF0sS4np|Kp3$TG22@25c)oI z>~K6R^hsY`ZVV3;7;-*h|FAcE!piV00A+1@103#W@tJ?!HRDsI?SAWhev&dW3rE++ z^d-W;SGzAp$cCGh6Ti1>)XZ7&@?}I{8%^9Gs15XCgUt_Z+| zU7)da$-FMX8-KBqVU!wMYTNFac5VJxrqzEZIBZaJD_naeE)`j6xUrRUPiFSyhX4Vy z6G!rS-K2}SVf^UK&)+QGO$Pk^-wD4x-VpE}x=z2WjH-5g5YQ|6_!=d|cA;U)Z2#)| zoLsKWP}$ua}yen^WH`3rtwo6W|j7J#U7xOq>}YH+o$kR+N_FpS}W`Rx%#n zKWXZpK7DEiun}Hfv;E6G+ozxJLol-hKe2lB14|XEM8QBr(g2%I`Skk`r|9i1V_pJ# zaCBs}h|hk4c#h8P>HCM9BLTl-eRng-si_Y>K0X>n%9vb4VA7D!?(pj)67Djm*&}!~ z8M2te`6j(}x0b&|ON)`v;goK36!?}#qU))rt zn>KQfYUu>QPCnG9-rFB z8dE=C8SToBX!s-jyN76?YqDHUhyX_PtpisT3W34dDX+(mR+V$9q`2&Ej=}1sy6xxi zVe*N*T3YwwL_8@m!Qt~0H_o~`k*Cg&8PZcHwC;fVjT$TFP3|_bma7Ic@xDr33PGdD z6cQ`ayh)d13aM1~Mf>}i0POe0ZiR2H+>S?oJ|$G+MV9}WiU zUxg)4@R4Mu>(3%f8gB|^yTu!ld(SkefzNZjTS~sk+WT5s1Vwyigg>vcRx8`>FQnvroJlGcHpy_dM2SBvtR;o1~8Ax|?#pK>?2n!OAKS>@0s*b*4^M z%65!?vn4qMLih0bFJO1J`49+43(!z=bG#3QiFGVj6&*Srbv!qVQsTnE=i56r!0WHY zR37=j@b-E_D)_do&3$S4y%f{YQgr)u!L$Kjs#qOee;*NX{94?R*`|HJId^{2c z+%tfLuN>7a855YPtN@JrOQmK3ru;oiFEZtAbdRblQ{>n(4 zlqvZlWuNt;6YGNd>@wFphw`SybI6;SR&aJ_3cho@SKqNu3!*G8XnV+@J~&C^KF?{! zMWnr!Q9R#DEexzBq&0`yEaCg{w1I-x09qCQL;E~1s(lvCR<0EBJ)C{^d6-{_tgils z$*ezH$?5Fs47h&vI)jLa0m|qS*ic&9qT;I4pd=%5E^B8^%_;4HU&kwrEUa|B6B8Gw zYm4dWLQG6dRh8jF3dZt$VfG|!8afuNlUL##CT`hHD5{erjT5TO$-V7e^(}c#*&F*3PK3SHq3b@+`=(%|?~uBEIPyajVaLNF(y8D4gsA%D@Y9`q z5GNC5dhV`pDboQElcm;Y>coEXF6lgJ05i4lfw5tLOG$|4&8djjb=d!GP2faO)I|bF z7oRj&Y6Kcj7nHn2d=KP0pKaRhu^f1-!}edBTCgAl_>Dr7K7M2|Y~v6dl_}LkoLm|D z^p=2-@asa2`Cu~JNXKQ30^jc8Y=gPNGO%pf!pkQ_SQ7(bJ{ z@dAOyuPSnKObiT*&8A-4U2-Fj7oWhv0`m(zc8dA# z0)1#ybt0`_I|2oaEzaz~3CULfU&{JAS7|$7TKvcNPg&Q)_6Fyh-+S#0&(7+EYS0TTfb+hsXdJW$IMvrRNi_%CkiI z7;na~xkCG5yPb`LgY5k2nsSkos&*5N@8{zBxh7{jZmF>oK_4R^s}>eYCg{5@`7LGY zINK_<&@!+(urPvry>w!f^QmiL!0k|g%}IPdUG9CmZim;)83!z$ii=7pX z9cDmpVRMEI0n8UE^`7BnOe61Jtj(j7tym*{X{?H(YvGIObW;fv@hsoZzgyD|+qODm zbKl%VC>YyBrIudQd>~-edcX{s8n{=4+O@>le?MN?LT7dZ@!u)c5G& z;RHF!ET0=wi^jcDw-;=JRX|(+WPWszRq0~Fd#k|H^Y^{fitS>n!*tU_QRJ_mK?G?& z%e53f)t)=Qqca86o!0=XPlbZxu(}zyz$9nRMDKDtuCYVE!)vQUUqngWwdi6lq!3W* z*wT}47U2{=wOb_*g@alA00UV_D>dwOoR|K-2k=2|yO*b_!f#e*zyXzD+|;v;y7~3>@phrybOL7_=l!;#;*0gu@viEN zAJak%DH*?~4kLmXNQ^JVvwTF5b!v7hE$!>mX?Ku%b?1VHkjLa`*>~C%PwVzHeUn;& zD7?%pcI%&7TdopE)h}%ufOHR(azkHR0x@;ofEk{~jz;edln>lRG(SFUsT00GuC<@@ zy4;*oU`5}n`wcK2cOF*YKz?<1P8 zeY=g>@GPWw zsHd)N<2D~BS>Dpb<^D%+ZjpBAFF{tnh4hdVMw0)I3AJ;zP+l&{lPXYIKm zxQ0_r{ zw@ij+L66B8H5hISup)cNpAJB>AECWO#2Y298;+`${yhj{s&=LeVQ*U};@^9a4qrdr zX{EjIG7_;ebCmo^Ar*%Oa&=9cwxD1Z)TWFF%V30~o}VrL*|FUI*_B@$!{inHOPgyj zBd*%zge?#f(iQCc{1lZMJPo{O!niWEeM2zq^trqJ1TV0ey?fO$ymmy_cN4WJX}*BwK2)KZO1qJY=w4FD7@*onVF%`{E`yXKcTp+n7+Qj5C<0* zK!Hr>x4R!rz#H7#ytrc;Qj#wimvYGt?_EmhSIdJ(kcj-&%)%h$>6L^V;g z)-R*try9~teGTWkim{jpT}l$4d`;pa z!oj3T1eN0qpVlqV4v+vRj*X$Ism@W`-q^(K^l1Vf1Kp!Z0%)2I$6u8TZv#6YMnrfy zrx8@^I+851qjxeF#jy}_#h-+I_l$+3VH=M3;jCAm>~>f*m1I>&V@auhg(0L~zdhA$ zx7XINv3OaQi$aZz2IGYWAp}CDUjwJ^+FCe3mJTOruW&G%yPM>zLJ<(=XI2gdxIUF1 zE%9`{N*C0|5MTZGZbKZY4Kek#s`H$lN@}?)c9yoob=*X#2%DdyPE2DdTM~!G`p=>j z1GN=fv&G!WpPR+`#aI|g$PRqKXh=I^NE}a0vb%x$Z}d=Z?<=#Rwqx_J&(?+UcrGWm zlXYESfFTEaZwFYd*v+}+7n@z@W3Rd#e>+~E>Y2u%$SC|>@eU+L6#Up$cTnpn;H5~M zcsK>ONYb2swwb#pk2hbkxC#I9_&g+zTvufH9{&wCh#TaYM~atS4Bt^26#f{K;dKr; z7(m;1cvL%>mHL+*`PA>mJ+RxbbElTu=6OhLWn+3}o@vP)*`fwf8frTZNZtDoAY z+sgBH&UlihIqRfZnOon^$p}uOB`6K&?DfwV!k2ZZHqWR6eSpzS!|2tb&w`N|IrP)#LS(g<$>f3i}C-6UNHo-_gwV@DVyEvpSM)B{;~?PQ%6maSf*~D@p91SD-Fty zTWNACEgTIqYh)Rgic2AB7!33n$efSp*9ovisxMnKTsvR2U!L6nVp%ZCoox5NvhS~W zl}}N4M|DojRI)r4RNz43%eTN&2RCGd&+unl4=F-nPb*`6MI8-^1CsEWZTw%7pa=P` zz>J3rvca(1-ARBWw&<@YTlPH#1Tdg~sLKcYw`(OWn$+sqx)KFfOmb(iR1))XO4Hyk z*j*#j4%@D{QStF#vh+#h(T71Cn4@Wb$?8x7NUI|AjAb2EYI&6%$j@3UjFG1X@;R_T zs30V_`g!a6>#M6+XdmIJlu30dE-5XxWR8PIDHmS%^kfkr3+ppCE*x#TAXp{|g=}T3&8m5Wll*BpArznV({dqr>9AUy@@Pzb<3v#_rypovXubl^4<#95+6Mf1Z<&c`-j~u_E4Mv{PaJ1a+xXA=AAJvYl zdBp^vl59wRKn`Y^d`RahFj-v`MJYyMh^Z!1$(6U7bhoNlP%!k0cv&3{O9*G~CsCw@ zc8jZo??#Y=TYU4+Ur@TR zV718=1wFN?TZJ&>3?jB8ZQ18DW&OS1N;udG#Uzjb3yND)kp~ydP6& zi$SZm_K^}F7aAG^mBbRHNqHxQ9hVPD4Za1gi5apsLkEmcqX!t7RaFD zXMOi<%2A7p<3H~TEp zKU=Qy>mf!0RD(2^0NWxL2>J{gnnuiePfge2zcpCez#LB7@53o zD|N9Vhl0*Pon=|k=cM6^DhxRPeGgyJZvi+px0mM62Gcnc1&Kh(w3V!4Q9>?AvN61M z*aDc?Wxp%z&VXuS&97NkzzhDppQi0|`G<0JVXX^eE6eL@LNf>P9=>hHF5{e_oTty~ z!>KeuSUJh$Y1;Qo$m2anod1D5au_7w*>fMcApepsN6R+1_ThbT(lgPg~f?Q@@qfyjwb>I4J9SRw(l1jV7j6@-dh% zLn$)yv=wxhhhzM%Q;^#lP(EM!SdPh(+zo(2z14C`=z|95G5qAc{-+O1l0y=p-( zHEng%tS3OMp^me$p{^6lTgV&qIHhQl`npM<868%*Y#0JV41|Q`0vAG9YPZwVop%7R z7b6I3iXzeW9|=rv;T4m5qDZ?4EAT&7TU#3&E32rV5r2fSepVYCn?;Qx3~f1L<3&b> z``xa|lyQGZf-%wct|Y~q*6UE?pn?OAr1OA100=mEt%2KA#v;U@rO6|>0N_oi*oYSZ zD0zzbEjSSHr{SkI{8U59RS|jNuMxc-|dp}@2-O`HDW`;6viIhMG9c%XYyo8 z-=iopA^73NB;NC!2ogN~5G({TB40oYmdL)Doph%Se(~xqbo*5n4!#aD?hRdgQy9t6 zq5JaG;Pbx;vpbThhl8+E@g3Jk#&tm0$$GhI9GE%rJ(+vZbfo`)Ealy<&+yyc(mWbp zA3U3pR7z6iYmX3!Csj+`^q}C2%n8}NFjrU8^m((r{v(3j*zMy-o^=r7vturls(s3y z=jzjxJRdj^E39m>X~)ET3C<$Ih>vQAA)}!ek`~b>iOBh>Ok7xn3a3UxY;2MRG}mcm z#%X$L5&in3!?yazpA;zKlvs!MCx>i$bqudS0gTt2Z)KAuQYL?#?y8E+EdN*~Ls3p| zQ4OGC1&IX}$zx{n3J43WO$LQY-0esg^@zJ|8nB|Xq^33RMiu~VR&)k~&%@pWDB|u0 z#k}&-?bs^YGK`C&^5vux^?X>cWhHdK%OS2%C9@Rk+=CTlP+ZLCc4n>JC`XB(#cR+r z$^hmt?u^A2^TfP41+IE~k~X;G7>$>xis!R>`>rj-E4=!`b}mst`@k3r@6^59TpL2@ zZ(U%!eaop*J}!}`7|QeW_AxbBD=vT7@b~%Eq@c@+nFs|Yi^@<;^60LrUtBK2Xh8$T zph(fg@6>sIpk|d6Tl*U)4{W8=x1zNY;En%YER0sU8Z8#A`)&Nq*qgkuu;eW)RD(Kk zIddPN_4b6O3^Vs*B}}#2UqeZ*2XC>B=>UnC?poe=euSss=fP?iN z-M21D%SY<&Ox#}4eU1eUeJ1s_df_7*`CTOJ@Pgo=`_LbM;=-&Evu=PYIkq-2$fp_-hY-cI)i7xvK8l2;mkd<5H^ z_kq2E(06^@tsC>)d32HTY<~O2yR)n;D)ssd=%FC}VC$XU^e(RE6UadgsAwtK-js^U@ zg%)!sC#Q=&jiLtIWgSfye6iSPr*vQiX&{Nk&Bb-!`QG2ZbD~IvLeM?Ct?g-Xu2v>$ zv%#$nbF{BQ2|db~jjbA3+NOPjrmLqbC?v>MbTK<7sF5W{6aQj9_u{7l7;FGS8`2&0 z*GOzCT`CAmrBH#`tCer7(mt9;7nB@H;;ig0=QZq+_&P}I( zTE%~{F=|oaIA2}HM$Dun=8+W^B#0Bg%F!?r-f6Q5_R3nC5HR?{t~ZBK6sdG}?QGQUOBg+n!eb5^KzoK<-FK{7`9n^FLM(V+lZt_241(aa)>xnTUX*K5I zU7C1cL9cWOxDMygah=W)pG-Kt^yUO-49?fjuvel8c;_An(Gv3&*jRxOXkM8KFD1@- zvpQSf>@=Pf%DsEdS#p_a$B4-gpJ!@;Rah=S=?YERN4Sw;p}8X@N$A=#a^n7!q(+}~eVICE_X<{(rii}!qZB1<-BFd}O9v(NpS6oW7BAo{PGgNOPqn&VMX}5r zl4fLr5fD(Mu5{gI2HC4EmC<*;@yQ2)K6|HOAwBGJA~7emhnAi;6&sd1Ua4SJl~R_u z#%q7%n$J*<;2TrzuXGEf66SxKHPBWVitO(XKl}IrAtb)gGAy_6fE?@(MT{G_O0Ys* zYjt{a5k&~Ji2(FRDTLS=Dk9RBR%jInSzq7C^1RYg!!tVAI`)0{cL`qGruP<8UY%>ghAj{|83L`0R24M1+0pPaL z`S%7dIbjy7^KR9Nc7>qZ^u>9fX|H!9k-7Y<_aBM>B_OPkGHrg zZ^^hL;2T4!97P2McURg*Y9)(+v-fU$zv5?9 zC~EXiAn~U07F#Y+{%Td?O^4pyQCek3a4tC5*fGdt3|9q!@4=uz8FC-nzPRoz@5eEo z5AEyc?tohfB+sA*X48kkcg&U3b&RxcfP`JeRQ4?jm6wYE6bft0;uj#|ro*UNy=Vr& zXUnw|mN+?}a=*D!WhnG6pWHqe`R={K6U$I8>NmLRidT8}59Wva{IU~}OP4(0@l?|M z)w|*PLQ_ENtB9!DBgl^9rw>VpwZh1l7rJ4BjEq-%qB0 z69C~*_qKmWH&O4~r>#FF?}!s0F?>l#@ED#1bs|8DS_ZXOwFGKE& zzJ&T-UnEI8^DGjJ_fz&r$33OZ2U2ZstoU^Z@=C|M%cSHMy6T1@ArbMhCc&&C0Dvgs|$U^RB~gyi+`t$Yv)Dz>;OrSF3Gay)uI>B zS*+;vR(lRzv<`9E#H-InrBq)=?7E)&sb)6z{AGr|{Fx(K)l!_H$@&31A@YS#^e*L_ zd;#LJ#-g&lB}3a_<81<8@YV$O%Se!`k035P&q&qGur$k zr#7qpcn?kIiJR8D16CirM1c)tHC6eqzLlr5uL&6MZ-W};cQSV}9z6%f;Xj;Sq6jN* zV!;s#*qv3enc59~Ej7iRh07yt^I$M2=r`xfra`f3({ILdG;eiE>*7ySjOF8~R0Q^8 z03ZXM_3DV1pfaiyd{<0@)ZK;gEo*4yE5F-2QjRZV=-zyKbs&-CS6AXqRlrC%DMm)5LQ-rpVP3eaYdG5qMD% zjEKg$IeX6?oeWX z_};nTdB(%20?5F++Ln*yv;qV{Nr|mil*}Fu0YQ?W<69I7ftXlgVSWKRIwq#=P$iU< z{3lB9t!EUPm6s=iX5OkJ49)WV>AWxLHJ&lkP#GbYhkuK7>QZSmdNF{H@5D!(~FDB>q0|bpr8O5N;(~X zP$aIeI(u*=H@{;iFMpRzoOj>0#C#>_c<-TW^;0h=CNd@_B0`f1FOWAE!)fKTY;Qf@ zga+a1_$Ll(aiGbkS6l2I*4ehGMy`VB$>O1tVoMP%GLX!j?^s_)y;4z(j0k`IroCm4 zjZK}|6TCgfRr%4Rrp5SWE|W>Lg5Xh}|9ok?P}$s+#oG0-?OO6+`ZzPa3SMVSU!`+F ztm=rs$l0Ipc2VKH&f>f5dn>y!McM3+J24gtXCvjTAm7s!$`yu%Q+%F5Y8#kbj z_R10UT{1cg_1VzWt5tZSLWm@Lhgw0QqIGJ9RbLNJwWmaQY)$u^WGxB)YQq&cqfqVL zI`_}sGf`oBw7a`UKM^RQ6ckKKOpr!|8^C!uCgwORJmH;39~JnQnf`L1zJM9u31+lCzv*}?%PQgg(xn8~TTWNpFAU%5jbHgB};PSnzg;{a`fhM%Ul-Uio zR~+kv74ucHF0MjdW!{(-h!*et#fRqnx@_j%;m1XQoT@ZgiwTom7zQ+ef*AQ9TkQY% z208lD4Oi996NMfk#8&RR{=_ERCsYo8`z*xC>noc%tT^*k)a}-1W|F@ab8A{OY*?Nr zo{Jz=UC^oVtK}0ri~rx7-MfMAg{hIOiTj4L-=Vg5IzX-~GyZ8nt5DfO&7Oz3+g6>U zCZFqP{~J-3dQQRN>4nKp+V1*!MB@c#p|;*j_oiLP0is+4aQ$Z6_NoggMVoAy8s;Ii z&hsjO@AD;u#LLE2d9i$Hy#7ECkWvxNsO{I^m91z!tFu$ovIRGo+Extr;U`Wh&fL4O zGajwrAcs@j8vdbVUgvJr;1L+bxGiEG#$%XUs>gLc(7~$jj4F#;heMm^mrT zcjnS*)9WS~|M;Cn6(2E0VqP1HbLM0Ao+{7wbNs8>0Zt_y9S_UGkS)(pW6P9w9XdW^ zqHgo*kgzakG9Y`4DdqC&im~TZq(aMPE-#;<9f{~}*RNHm;Con{1_wR05Va6QpD_57YxG*w)Mp{Ou5PJd@DbX2_fQ6QWrOcgT#g!3 zsY(g3b?(dI?$v&fJIe;Q1YUDZR3^W1=jp|~whtWI@+=H%SJ3gCyk#BO?r5z8XMfYC z|I{5=L5?|`HPa$yrSFrQ2rG=p3ByZBP)=|Cl%r;{zxxq>zrKALF-FE%!|4MEdgof< z%J@{>-zf`UmLx$=e>x5Qjg7?N3cP^*Q(f0cx1LccBYjth6@$ zrK%W0%F5{sqTD}#r#~wK%Ky~4A zQZ;iIt&g8QQ~F@Zjk|vFNaHrfqar&FSY^f^6pDSe*L4sKV~ISzl=o7qz}pG$9SD)5 zJTld8;;IA!v@>+-eH&GHjdp0R{OWv27J8Y8MO@nCLFd<2Sho)oW(d#8bZAzAq zV=FjGRH4~iGFr~R_n_T*nf>po=ZRAys&!4iW; z&m3D+avrY=+gr!ghBw#a(1VbDKMp;%3gsDrAiq$CQcjI-cS@bS=?Az^;-nUWy2t6gl4Ry>lO+z)juI#PC4G?j=}WXi3L3iqFFuk-uMGe&Ywy&)1clSod=7; zbikIwK5N<>@Y(&BCns_}xHWDc^*D)$#oYDU&sktXWF626LY`xkrY)EtA^YVqobdgF z`1*3Ma*^7*L&|AJdW0K4W2V^;PUjCwQkGkFC)5&cz3rZh7<*IqylaV@5W zT$X()n?}XVYqAOuOAlg7oR9kUzRQPrAT$hRwp0SBh~Chn0uakpx+6rhniaB-na+QN zkJe}UpL>|sLCk2%+QSK%QjB%GXL2bgg@=~y-`bG-hh5pfndj<$m-vp3chZv6E45YT zs4a=d%6GLJs+-cE9fDFOc;8>D2Q6(hVAIG7sn>DdnmWz=t-08w4aNbMNS)urT9{w$ zCw%2Ygz-GgcF~hvv+;fpQp2=%elZ>l0?DZGg(s}XbCl|ze^hC zQwMEl0=_Vx)B$);e+FC5-BEHgpL9)>*7@&(T8J_BM`&LaVlLXmQYFQHO@Yc)9gr`5 zimIL1V(p)6ocxNpOr|meZbW}`Sd>cPD$i}P;lz3|wim=}6-)Vd;6|RI4HS+i3o3iwmk7jDD^F11tWos0rig$#MDo-dd`@!HQV~@rctyK)#)B2@X zlQ^-uv`Z7<&mrK#P$W`t)^?nmO&ENt`) zLP{=9{!is}5y=n;giZ+mw(a-Oo1dT3@$5gUr4d6O?{6-7iCx6RP~!;gzMWjMzkjy? zA;An;Sb$|G+7;#-d<^H_uAvU_(~F+_Li73PQ&TY;n|E|M|47N{WbFb&nfuKnv7tV6 zeuI13IyUwha!3k;hUKR zc+!=*3t&CFdX&4pn&OgyM-GwcI zA&mi7zyW;e-|>O>KPM#Ee>}&KurdB~`OWg$f;w`w5>nbs>AjJPF~4KeL?jFVr{sNH zaGJRNiM1a4-It#NX$t}8kaT$7)6b@p7Kii6#vNw@(To1DaSPUe; zYNlGv*=DEdud&S}3WYhhS7F%H?`Qvfa_pz+e$llNrkcT0uboXmh*enT>{IDAP~|#r zS*JN*U<8R$WVs|4($&`r&~u;03wc*!O;9n{VzP#**FBDBR#EKv6yHdRIBU{rp2DM%9K!AsvB8hc^Rpo4-x=(H1pCH82&b{NzH>-hNmL3x~!&C$(ntTeXG z)9kTogS3uP)K^Sw+?sn^&Kalcc&aIL>E^!qG_rqx0d@{4k;GHurM)s0zh?^()Zz}KGk1vTP=FU*xV;tj4_%y z6uR@GF{Wu4hKp3rrh|t+tR~|^rSlTMVYVTF3qxZKEx7oJRYwIprV6LHJqoO-wbq2& z70Cp-?Ut$%R?I2!@Q%DO^r_!i*+MWg*Sp&h5}ITF5cJ=fd@q)#o3wUAU&1eb`={Bu zw#q+tGWf@@_eT<;v&&3P^xd7;9J0^?6@;S}sl@9d@?Sg#nqJKZ+4f@_iaZjB09V9f>)x@~~jZBfk%10y8loe2+aG zbwiZ8Z*Pd0Uf-lb#29?jCp@#WEU((v@;2O(VcFO{Cj}!0f4$e~wp=u3CT-^`pN3Sm ze2zDS7<(r048DK99^9iW1KMe9jJ&82gMKeZhS1%_(7gX$#|arQp8hs`%K??0s}1h5*xTM}LL<3k(Bd^(W@WGJADmw#ghse*lXfxoo)+z@N;gn2gQH&C z@2)+{c=JPuzLuKZ(M3g{!8{`nUXq23hP14@6O<{~kX``=Tcx-;EmXiWi9~OP8eXyx z3*m4vECsp=G{igIC7fL4cg}Nmw+h#j-);|()*W~QLi+$&#K;K0Ht{1w{*sa78azw{9LA-_3yxH=B}WjqhA+H*45SBb$c zE-kLq4I+5Fy7?fE+cCOiH&^R>H0EyjgR|6MJA+U)W60C)5D?lin0ZQyneml+4gA5^ z-jS$MARyXF29>(g{oH6kXS@4~LVkH~|RMMM2Y3OnJd{U(p$KCXZgf->Xo$!!2w6f)33z8~Lxcm^zl1;9o z(*>f594%mYqY35O<>MwE;D*f2gqPTOW>C71*kUQAJRD#(hhFU64s{=p)SezbTg2(% zyCuQBL8cw#R;p0x)62nhBVN%1Rv2As%?=i(Z&tSJed2 zRH=Lo>IHQATe(C+LLz`{3}I5jj9?njcQjb=8AsO11U+N&i^dfb(TB)J25G=35H2f} zTDA7kgbGjv*LH3(-x^)wfDc3{1vdFEWUhxwW6B89!cpU{ZVYkNa~-Kk2wo>zUsq6I zCl_>7!R{J)-%ys$chs|GM>YO~p*d5^Vf1RJ9X6`n@ARyO2bBY4E>hYCz^)b0l zoznVzDeLcYFVvi+Byq9nlPklGr9h^Z+QqlHQY}$6L_ab>!QmHB=I7Q z&n*e#^Ga$RqmoEzS2d}g)(CLF1mijVgvYjDD0T)iy$)PnZ&_=|SSp-hxQH+! zMh!Ch*Iv;gQTrxAsOhMD`+jfLw<^`}q(e||01y_ti(wqnItMoR!gq(O9=wOfyo=@j z#JO9e7tJkPPb4q#490XQp2FpN`6oG}L0o8|bc(6D&i<^oH=uys~<@EWs-hKz66z7xlMjR!M4Xx-s9U1|DL6*PEn&h!^xYjts&(6 zm<%+mtWAa#lhW@45U*$!jG<5Lv(#EzGr)WgAqwRpc41ZAB1lqDmth8D7wboGXa~BD zgtT)ffl3nEWFBZ~(NJ$wu>W|5Gm#yaMQ1CYx(3t{J{5X_Z@c<@pwVhU&#t6?A{ln{$l%hwx3eVZXp9|SaUGb z5!=RDQL~Vdg1uqEeZGfyti~6=_uE&pO{WDmALdl>o3OemMBrCA_^QVXFYBv3K7Q;e zu^|UAl9+)yT(91?FH)KCH0s~rw|SojL_XK=ntv0m!NyP1g|Q|l1+gU+@=T7)to#@r zVD|63Wc9+%kKQQ+k@$mu0{wk|*7aB2@T|TaEc`-d(Ez!LTpTKDv7!KRbkyxi8G_&6 z@5KSU;?OX6*Wbb!V6^8y5IJ5)~Hz&|b`&OXQyX5V; zipwMJad{D&PR0>wqVdDCy+kzyT`yT8-Yq(nA0VTjbE)%} zoNvq9`&3;W_xZ;*t#uX1jQH? z4cNPC_I2ggrSc*UrIsV;#?pvkODL=m$#4x)aOl50+-BlDAQ^6wmFd`j?X8;8M=WYp z2QG<;c&V%yLHmqe4v&UaLKQ-MI)`R>aDT9!AR8*q?X)~tKzTi~A5tIfJ6t&9q7ZX1 zC3sU$TTr1PsMARv4>L>^xs1kwKbo&$hUlA*+Q?w--HqesIHc#89lZg%_VHElTkiJ; zN8BO=u&Sm@NigVVYkdCpk7Mj068 z0?_Bchy5u&M(%3$Ra*RUJSm8yuJlIZn;UYd3280G$eR%Qjag4=ppy_(`%i~RrsUIf z1V()9T3H`9WE!=Z%9ij8WD-i#cihQ4BYb1Z&HuXxk7OTcY4QT$pBatx)wCQdvjq64 zo4|tMH(h2H&ZnlOti2<-Gey+8E3GZ{mD?gHt?)DoK?GKJ8R4K-2{KNo7U z(3Y8pO_h3iQChL+*Y~ zUjhmd;xm68bxeo+9*1URr$lAIQy6AM?T;k&@vJET-5qKv8*1FLM$vnUyskR39lC`k zP3^u+0n5clcN}OIp$?Ar`yR;TM8quV@*vx(&|&%`pLDYGtOD=;FO~jB?BLrF?9o0R z!B!b%is_2^0_TEo*I|ZE=*&vAg4HA@LKDWs3{#(THA|G!3D-`{y-CB9HgvoNV<56D z-}3DUN_GCYOsmiij&wI;iln)q*7aQFN%`s=&m-N~-^wqB3UCep8PTw^khSuv{`vP( z=~m%(+m;B|6D@RvOdeQ>*U_jo(YmE%tP+vup$2wC`V?O7Z`WEz&Q++K`o8}nv%c+w zDHK3@O=a-uX`!BlDJ)0H2|*9?Lj#2zH%krrU?w#Ms3uMRLWx2`fr4_~R-!cR?kRN! zF%1G^TN8J^FO#={k>v>2%0-QW88zoE(E6!J^zukk?yJXQWeCbckW=TUOalqHt;#dl zW^()3Trt^2X-n*{CJ(Lpv_n7C=~r$R&$WDN*xj`DjVK!|3#n_GGe-l8`M`T0^qYv( zWf#j_OockwlfvX57Xz>?AF5#i`Bph9$bKIG-jG5beR~ML0E1 z@1P?2&*}e9-Ta?E{69R;|E}c!M+*ISE&it(A8d@{#!oL{%`V+>=55mKyN{j3-Y|xsdT()%8p5e}%|Pt4Nhg8U_9rVIX$q literal 0 HcmV?d00001 diff --git a/assets/img/semver.png b/assets/img/semver.png new file mode 100644 index 0000000000000000000000000000000000000000..f97996ebc7086dd34a471c978aa7072e5e94712d GIT binary patch literal 4277 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%0As^*qTAX{OB<5ss&$b zt9q{168dOKFF%{h^~TQXRS{8b{q1MSJs$*9*m^ugO$}X@;M0|ycFf{IXMuKWO7ab) zzNDuqyp-4X9$e--P;905FtaTZ}K^)M%%?poEnC<-z)@x4O5)7A&C+=Ueo} zoyXHy0qM@$vu&6E_+Z#n<7tt=Pv~}B;e(1xNc+Q889KX{r0pH|WjGEW2$tE?j>;=~ zh74r&?fDE79kL`>UA~N1R;75@!Qfk$ItUyw+odn=>Jnk@Tc>8XGR~ZFoGYC9U!-S-7M$o7Rq7ZCu!+>5Zbx6SuQY zQ~Wt~4^v`+&YRTt8?6iu;Fws!K-tnMp^7v2l0ya?Zq1}8)a!7t=*W>8UsbR$ddm~` zqV9q+_kPjMt?#jka+}`Cp*^!mn!I?v;mFC=YZG4K3XKoAlBx$uP=NWcIVlbgK{&kR zcL(cDP4fscn7pSu|2zzeJG zA^7?}O0^QZ(6!K-5;@(j^AW^vCKZj;^Up8jRaq&_70dhwq}i1PhPy7GC<$tJ$F2F# zpFScTExG$nM^HP+O1!kZp2ohHSX7=L**u~vf6Qj8*-l`mJdMVWy%i>2q8iR1<>Vxb zmFnB2!7WGZo3E=|JTH#LjTkqHOGm%Z->K$mD?Yg-d&ZGmK650dQaLpe@k~2vQ=RMZ z^54iihEuPO7zP->(vjVG&yjc|s!6s}-bhbJ=;EMQ>&7zDzHM5@-89t-SUW8PT*&H% zXCkm`9E>sQ701C?H~tUKmUCz}KXKQQ3vN1P@QUiNM<)6~!xQ}X{^dBM>8IOBx@VzB zv`W>*y9D5?F?!8X#VwN%)2jv0lLyOoVP_*7&EGq<|C1KCF_Q^|q}5sFLiVT&(r=rq z&w&FHoT>w8RZ`XJsLi-WK9Gl@Yi%?6LacXnLxi_^TU99p>0m@`2-AY;&Z@soki|i77U}R$S;>oD zxyCcw75O?IlM284a2hXShLbV(q)S~vHADV>9e=z#`7SogW{|HIu#wdFwa(_9+dHK6s^RqSn6<7Wxtx40k2nI># zkE=>^PB?Yh_ni~=ZY*=xo~e!#l|y;`Tx(rRX!@9F3Z=|1vjFW5OFp9RRX6M4EVbCl zvk@1^l2Y3tee^XKU9Cn+uP1u(w`Akrs$2oLC>F*?{o5IYPzQ3Ljr4WTsRjBdJ#`>V zg^FZm8B9|DR-0m_BWR{><<3SEVdVO$>`6*rU|(FeEoT!kt)vIB04N$bzm;$KXv#7= z9{NpjU!6+$K?I0!zYwg}qzWAncNWGqI#M9GaTimeJcaW)kUlG|g;cYEl`xSpLpB5V z$a^#fxmkCD$sp%Mjj_UY06=LeYR!qZH-M=yh=^c`3oMDmml~zJAGI8-OLK^M#_m8v z&{yqqo<|&v!MG&-`XvfWZ-m~LhPyz#q$!<7Uv%jMy0*`Zd`DDVw7276sLO!1V+zP* zMPH<8(_C8TN{5~R`h}d!)Y5x=17U|nH)*v)Ym)Vh1v|O=VO71*9sF~7S5pw<1N|xo-rH+=LJ7D7$xHhKd6!U2_n7 z@A^U~Nv8h_6^rIsZ5=QAsS8RG!F4QVd%Y5GHz0!EiXOQ*mLhQi7RFkB{#4-4?(!?k z21gR@q2AqFpKAO6xqM}UmEHkWW^+BYNtJDxogWP6kI}9iNOIAnQUMLD!Iee%Zm`e> z!YP#9AFH(qW6Z-?dU+_dRhQOES>87E^9 zrQ2@r2c&=db%#jELRvExK%)cy02KK0{fxRng$DQQJNB@gBQFRNY$K{$K!)?`OQ}); zMyf}=dC#p`gT-@XS%MVBJ1T1DzQGVH6;t5{y(+&-n=LM89<*JEmGJ5GODnK(HU-$+ zG?(q9mx0J*Ht>HHQd@EzK6~@zmX-#cHNSp6D%c+1HB}7m+)>voU^(Ww zgx4*8+@NT3q_LE5U{Bl1gp3pjgWG++aR*d#Ld?nT;aO85sSQB*>M4njvpqY@npWK& z$GjoFj_yscakWlL z#X)g~CNr?;jYN5-5p&8$3RNFOo7L&4r0MiYQY?yhy9mR(E1k?;fvIFC>~`yjRT~1^ z_{qBgcal`E2#x?Kjhy5LYM>%iJUAtz<*QasatJ6Vc{Q<)c>GBjEk1a=8fS|QWY`uu zMJS=?>^~CK(Ax>Y=;k$NB`q%3zOnQWAI4~C!a*n2QLH+8HNhvT;UIK71R6L#8m9R7 zx1$toYH@Dg8?~C?#s{$aeQ*9wVws4I2F2YE05QR-S<|w^G9j2Tu+6Ks(opdQE9)Gn zb?8*PcH-)-ys$sBm4=g8#NYZ@9JZ2Hpd@&*aJH`7c0;v!R5{6)Q9~I0vCsVKhUF;) zShM|52`!>pu`aRvoWvZ8g|J9wcf#Y-L@l@z+!E%h9_+OrBsgVn9<(By`qMshmHWu*2KY`T9wlbuP_+7x2^ss>t zLbh)pJL>E+FLaOkb|9*`u<^GV?teC6>?bq#GxkfaF(oOx37CTJr&BjU(tmDFOPrCgGI35wBN8{$WEL~Q=L;LFy^d1EnuBRH}hGW#?{ z@fv*fmjzISS~x25kMf?kbiBCMOTTt|b=n&r|qy9BIgum+G_DFPiEx{}fY;+6hGDEAr;&NhT}V|_<160qAlhu9$eb;fgH0i za}@|}zs6Nt&+tn?erkNq501H~ZWOBYr;MeMFIpZ`5D7pp%%*c%f9d>o(rZ{dWgzzs zaR(6Rg3J!7dD+sDQJ3MMcr#ud3b;&|e^lK(3ejjvk4xW_WZ<~BuibO+ctB;}ZsBtjZsB3;mP8mJ>yt7Aq_NNWr!GeA{fIz9OQbJFg@0K8 zS9d`ePbd+7RT_y0zb%Paatj1TX3^)H*4&8Bjv4(P(@zQEk-Hgk|BG#^^G*Shvh2wq zcoH^s0f5khf5htWthPBOKx)!Ui+gN$l{OlyBvvrDIjZ&!3j|@tag9!4`C1dMb`Gj- zuYPCjD>SB@})+Rf$5nG{#cbm#f29s|kz^2DLtvg4bH?=#vB-AGOUZ z1xXZ^2y1Nob%G2mpeaIKMRKGwjapOpV6&^@B<0HH#p*pdzf#$*Vm=-j1NhcsbIEQp zNNaSWv0``BJFjWjNdGPL$(^hWn*%=2pjLMyJh~i`Ai7Ql>}t<8jHn5r^^+{AGkD{^ zB|&ZOr-aY^8>2o_GIR#jt|1*fK%lrV*4(FE%);O>bfTwY(^m8GcgpTyz_cSV!TG||tPzX7w8d&aqv;-DKC9c*O`K!P{b zQq=*sN7(q1+~~8Oi|k}&y9%*`XT_&T6%oCf9cfMKqlUKcL{sg@T)CWnZ__r)Tnoaw zW2>mF7z!?YZfput#Lc_S#dwdixc**}9>P63y3(H+sg_ilFl+B9GZ^MfyT2 z{~`X$cXL%k=t~bUlB(^aAdi?h;j#uQ#H+yp02~rcNy&s&-v)xR>Bcm5ktRc zU*#0>@aEa>NQa}i^5aWpJL|RI9ZSoyZw~-f6AKYNX7L`1uocthd-fgOCICkiywQCJ5f|5?%?L0(kzFB~T8a@n zmwz+_J35%AY1hIZu#yU{`>Yt;`S+%wl*C*U@uM`AdE>Ir8;C%gNbueB9v$Dj3KQ!& zg1a`MD2-j2n==)`J|Dxw7OzSi+PwEHB5Cx+_5#X_TXHcZ&n~UCK5b8+{|Pni@kmjC zV`pRXw1`gEDiA`vRIo#+%KU7#QN<^*ew%;j`K-UMp`G>kf z(-*Y34C}wi@0KXlHnj!MuXX1C5IF(9nY57Lrba&HalRHBJGBeJcVt5*<@MfbFJa>y z2Of>XMmVI1b5a|hlc{3}T0!zrLqm9()XIGsl2$WGixk`@+Y+ZO9~Ub zXi*_?VgI}AVglns^AcX-F+Rhk@5|;+zCgr&E6G1sN^1A3Q7`$mXUnwLlLgq_yp0mC zf8=}mNCayCM@+8NLN|ThtpZth^6_QPHysza-Z$qptfb~HpBfzrzAh6SkVM^SyC+r> zGE~slSLIg2qywE?E${UUQw3Uc`t`nFc%smR+Apig!8ho&=}jM+8e~h*36co=X8*$J zZI+4}CgA+z_(P`Tg=BBNn|A|{Vl!>ScJj)d<+VdDL}da%WeTi}*%S(RJnw0-aZVd? zzU=#s;(89LuVa0!w`oaDcpK+ZthkwkC%pB3(vY}a#4ojz%hkKEGr|4j>@Iw~=te#F zsRVtj5NI$5>WUJ&UD;T-Q;UH?2U9*3EhOIk0e(JsQQx5Sd+)sE86BlK9_3<10XBbmPSMqlN^ZN3S4~aoHfD|QVh0O86`x#v)X1lwk>e&&lPuHk z-IYu0i1!hk>nYDe_vUp(K~+bujii}Kr}hkR9H!e^e^&~y99tD#>DG~4Wv;|5`ILlC zxHUD;Nyyg5Hn@d;Y}ra1{B|{%Ww6^UmuFXwWN#{!XBquVdwAWY%ml%3;$fl9!=3rXL z15b2Frg4Ruk)dSp{afvU{IOwRNW9jo(4*Zg<`I$7*pMI7?<4Q#90O_J`&}|9kHsR+ zI-fktv%~RJB6{81C)EuA<{mQ_)58FGc5e{9GB^P4%d4}n&~IDfLR~in$=$H#fkHaa z>6fCe_V1xFtCno4h~A*z8eQ#nAwCOn->PQ7-_>Aeb!KJ?pD8Vrx zGvlS6^=NK?X1@{Sww>f`VG?5|tPj;dLBIa-8M-2cG7I)eYU3#v%Y|N2R%eRoO5ASg z1jDi~QU$Dj*&v!M zWK(zp!H;a&?)Yg1`KZvBA?IX(s7(s+jhGt=Cazl*C=_;WT`{rl&T2ZX+jT}zaEs?> zN7!R2;ivVn0TvdBPDI>467FZFY6MhF54y{N9<0Zc;L?IF`yzdSdb+e+kx%W2hF^#5 z=q^Y-74_}o?%U^=paVi2HaOP-I_(vDX^E$}uFR)(ks$pO<28zJ%}iBV-?-Y*6pZ&T zG59$wQ>ik4`(yauk82yBc?mZcYrlkj zTNKI#jA?XkJkfES`)-0Q@?{qx7* zA}ussQI6|5Li|AA71-;o`Foy-gMJM}SYedxsZnXCiC>s2*y8md$^fU+jaM(Mn-bSm zpgKC1SmI}#kVxV9{Rp)1u}76T5QJOk*{{{7{k~}~oOToz7;*MjguPv@Z*F>4=&HG1 zoUoUP;xCqvynoS6PD(aW1 z0^w*J>xOr>s#m{C&vog{_o5sNzj8U7agCZzCR{v|xOatf!P|E(P{$@2{8fSQvT`nh zo0r&WA&88Vdzr+u+fNFGl zJDLJ`7>t!$E;9e3e&Qxd){ky*N9&xAE!Q)agY#Jn_f3vSa&k^@1N)X-}!gc5hI{`5gYZjd*lg05Qk%= zF5a6j4*YSmJ4McIw1;+WYpyf&4}@CVa4~*iNCM8UWIcVAS{A;3)$Ir;f00w7x??Ws z$Z6{5A*()>YOiONmC(=3<$|?F+OMeai-N*;zlyeWE{PN6Wd2GOpM!gA&s$FyNa_5l zaJLh`e3Z9XzS(X@P;XlWyibsHPUm>urb0gXsSx4eEVTYO;azO+iP2YcCGIQuaSyaw z;Ho@9$9b>uM`!FF9$WFwjS|L@-w^|uTH&BG-EybXt&4k#@c>v|>8GRFqX}=33k+I;;J;U5cbq<&cs?PL(;K1u8hV*cO2XlOyO==>D=Zx_VLSAJCx^yvHd(( zmO-y)M=v^os%&&lx$O?n8pNKS1Onc0>d*a{B$2WUmle(%zEyK{oHAFYQNdANFTKXa zZgL_;+Dk)^w!9S914p$kc^^`ce8MYsyaP5Ft1>gL_K5d)dZbN`@AWt~lq75`R%Fqa zGIvvu7u+b}1(<`~E~ez;CB!%b!Qi=2M3>nyXJKA`r2fN;G~ShM z(zy>XJ0u0RW%7ZakI5?Q=?FRx=I_nOWEty>5Z^(DDtAtse!eOk?LC~}pHvNK%DKs{ zCB29*lC**~^r@pw9MKZ49?Aexn0Ea&iz-6z>hr$~=*Ny*heO^=NWx0!5pGMq)YvLv zy{F0TjMLNe4fW^WJT94bwa!9QU~ zv>+x7>T8=qQZ!-QkWYkTyWr7B%~Je;LpNU=@P>i(V_t;rn6E3{RK5I3$m^RLS&eho z$nj%HWVk%HMub<43KTf=@bu|vpC4S2)JJmA$+w`sPuJqx5@-a>uVx8qzEj-!o(BIqyhDSeF#-`De zk8B2`B8lJG@p#WvPi|hSh>&~P9U_cZ?K#J4ah?=PZPcW`0Cx|@(1;N9?U`H4P^kgJ zS4M!q{B2ZOq}M}(CwvuIzd~(@&`JASMa)kcjC+yV=t$lX!w*Q$Pl2x_YZ<-R2pN3_ zxYKg`E5}8eGu3^W@y52y(7h%D-W7_8>y5a z?vJ|iIYTzo^fE#SQRg*m&sc2OlXBN^;e^vW@!aI2-xqpYh3R$^3VWI@m6V(BVqR-< zaQ>nvekfw36=c) zUDf%^Zf?N6DnYp)#z%*00vaBVXX@@cFfA>kHR;JyOZE3+--c)~cKPNI-Zv)DFTLMj z1hbUC0Vv%LG^=w9ewULUDqC|7iF6Rm^$G|)!TST#DPkH-ivFD<+ajKZF7N(5cUMg{ z(vu{dhf!9kAY3}kH}_;Mh>G!2zRX)n^z41f%ibv@%dNbXP_%l?3j61FO!uxBcGpX? z@1mStxXuK8Cw71%cqTJQSQ!=6_o~)Xs^>6D`mmtf>wErY zXj4ev1}k!Z*M%1Hz4P0kp~P)x;c0hQ+V}d?%0X|xz%C~po{N*ow;Q*YywvP8D5PRg z%VE!^OE(#*$geuD{PmbeBQQM!x99IyA;aop5A}_=TqKtSTjU(~mYX3gZry}f71Rj_4_ z(3R!t^v@;PT!|`l%Z2WL}uS%I#;T}6EG?TGSOQ@Y|_aKLpaM+f@#K_7*R zuEl^(7xHurAN8H?tlyhFiPWF$xkcUiD!nM!gPIF1v3BS2*W1B|ucbAWf%9vMw-=>| zn@oZd-Q-WQX!p9O#&FF&-IZUv^KRbg^EJW|y#u2^!Tka@W)onSdvN8=<%oDXMkVan zuA8YSuSoQfHgsy1mW`S8pX#*MOPZwWrdCr0I|1Ui!s3GBG#9`__w*BA>cCMpgxh+} zAQz%U`oKEtl=Rvu?~VbgN13ek&)bF+)eJ$ezaJ4jtJL&>zxlfte@Vbzoca4rgz}>f z-tb*zbTa5HZz=m)6r{Drd2`n?JlCy!s!#TN$lW{`#ZFgQ_x<9&s|8O|)8nzHyF=<{gt}l63&n3M*7wKe%wnaiZ zd<>8$7hmQ5y0|rO?05&{7wi=Db%6JkhGQutQbHB^k4kI5&kkLY`*?%$Ebmx)!pl{j zE82~MHct=Ua2XFD5#t^I%Mmlv$<4+Qno#6~pUfhiiRik@!5OE9y*GWx+ioJKOjEi$ zrS5ey(4E0tAU5$a(FT~#dVzZekQw`=R5`~{^g!#DuQ12&gc1!gvi+Un&*-7}{KG^Y zK%Xk|pRN{NuLEMGPUg1v^@_%6``nAosN1GTW22npGPnHDBE?XhxIo-Yu2)D!8P!Ii znwl~1s)N*T^e+9&`Ivek))29>s&z^Et4qtF#lIrG?F`^s(*k}QRa?UEa=A%9r(1=t zU=84csbB5=b2m<|x}0r!xtVIrRO?7=`8}mG^hcvjG5EySdg$p^5e0c8j=w8ry7-)` z=sIz>D7=E9peo$#2zN)PASkRPyl~4~U|myURpsxz`AD@nT<~#CdWdZs9sJX-(Z`lF z0NgcRq9G`ei1GGii`tyG?pN|$c}TBoIyX~n^!gq?$y^BlzrLuna~%zJfr*vtMuPoH zy^U;uFHeHn7Qz;#{ZM5=&HpnWc3e%FpTn!8@apb^fy#OFLvxkK5H7}~J&eiy-Ty_2?=B&Iw~;CC|!=YxlEJK05* zIjS{H4dQZcr%T0I#_Fm)nQP6OFnQ9`jIw(Lls51~dF7|Dxo6(RQB8)0rECVFKeCAP z?+F}CymUhOX=QF7$<|`4dp{Hr{=k%3pW-4GZYCdGKEI%OdH2TL`x>Bt(_e#2FFfDm zwqy79oRw;RtVj@-7wNHIxg~8O@V0p($I4OawcLUVd8NG7Ue*R=U0iOZfw0mAoXZti zl-FC`n&tuI^uZ%pM%<65c6sQqX6fCpXwlWXf8-MU@t{y0cjNk^Gt`Rkbc~=H4{yD+ zp+7A2Mx+ybcH+-b&X}$N8xz4s?v{{&_mR7bQ&mAO8~- z{v_NyIbBwKV8tfuSR1%jSo~?yu<*)rZrbsOKRv0V>VkI3w{ zF=_-Ht&yPMt>fdF)vvC-F0~VXrt6zjb=N-2pmrx^*Fu?_7x4uJbW#aiq?D^CXm#lg z)aItLqCLytp@DP`PSW{P~AI};(f zr@zY)!K@7l-rS0O|cuSb&hIA1#x5?a@`i(cEzQ=Yyp|f|9?h-C&NWrE(2A z_(is|Qh6XjIoJ!ap!pmtr9^O`{|tMcHtQ&P`EOoZj2m{ht4t2C7dBr9ss{E`l^jr^ zWd$E&Gyn`R-lp)>X7$Co!kxAB_PR~(aYf0>$3ZG14cL^+$P?I*ryKfX}=`B3P!@FDOV@439sj2KyMi*tosP8U2;!Yxtw zlk=`%QQmiu^sl+&9TWhsy_p&OdhFvd>`RiI0E#Dgo|}q}`s7KatqFr{x^;SWd8_j| zQGU(~pNtuMez>k9`t_8q%7ALjv=-K?_lz{k;|yWvFqm7T0CZp^@KJ;>1V8&WwJKe_8HO1A5sVmC zT~-|7->sBoi~6x*3{8oE6`VYX4LP%8^`p=Z@kJ+*XH$_R4{ja(<-gT3oU5w|NTZ8GM~^Ood^>Wfq}sV&c_JZnk^4u*E`TfZ)(9$DCEtDLOoNY@ zv4tH5%Z*s2YAyn8(^ezoCY0k&q-53Y`Yc%+1Fi2FmGYp9Z@YN(<6!=pZVHp|^mc7`k)aaviDlQ zw)Xe)of}mk;d&)+J=0faI{Q|{!8(tgq@p~OP?J*GdW?}6Ufe_OO7-y2DSn!1*LE!F zWJJ%U!l3q#P7(Nh#Ddj-iEuD3<|ox0#5E}o9BPp=2knY$q%T_5_t;IbwbJdr6QTGev>VdWCn5}X$?Ii`5{R?k)QiRRRy1~1`OJ7o>W#LF2 zS{dcrl3MPZ?YsLe_3`R~gqjia@#lJzxqHRC>%|5HMOB83ZC)jIX4UAFDRR2#+{`b( zsUT@!Z4i2!tEW4Cjv%i$x-8~pnB3adx4egQs%cA9Dq?^+K$X1w`f=*SxhfZd=vH(R zc0z)pmLrQ;Y!|8Yc2uo)+uI~QJT(ql&6~!@pUii{@iKiX!>~IbYlcjUl0w~nYdOkN( z2e+nix8^D{1vZD+t4n!FFnC09 zEDAFwoi7l`oiA_z$A-^bUNXi<6fPaF00&ph?aMo7oAnl|{K{nmYS)POyh8o2=N>?H zVTkEf9Gw~47Ew!OTi4#aWMti?!57PpYByrh%RgsubUi`l`kX%R(j$BkXYCoTf}{OS zM!fh-{)eAt>K_WNT({Svte4RvZ5k?b&6dmdGFcgH(<*~x5G05G@_|&iads}1K|$!^ z+Ek2%cInY$Z)mndh+NzEe9NQC$NUM_P4i4EVfPoUik|x^^q(?1e^4CM+KyCP;=*)n6-#cuYt2lh3h525{R`|DG0xd@lsmOwMLu4;%XyU)At8}) zGp1zZ%R24_vs^`r@SX>RCvYJH9WChi1SH|%&W2Ro#I+N=f<*bCvdadJeyl|c>I}~L++(jo~yMf$+xYo9>@^r zURw>em-22_IKLkES=L9ziQMwLP?DRrmm3Uh^ae6TR3EQpj59~+i-2l;^Wjz;YiE82 zZsK+Rg9dInDvhkXWuKKI*+`UoF{t@oOqmW-)g>*Q48<$*9NU$tg|qQ-e-k~ES(8G3 zw`WSdimq-&hjbkXo>m${N~4tO_?T)=#M}^?I!w$e8&r6g=3NK&NnAt`fBd8bju1-> zE>kHRk5Bv@8n!T{VmxaP9y5wn4!|g#T0iEouFd)B4W6#R*Jcl8;Iva#jYZpG$EltP zli63kMCsbo$vxdumj*KLZhV;srN(g)uC!`jr+H>~f>~3wUrt+RK(&qI7r&;Ho3Ht9 z8x~_Lg+!XlwngSABJ!VDZVjdZaLg^C+w!QoQa67+^25ds+_H!gi@ar$^@oRh$Gd5| z!BqVQuOo+X{}s$|zwi0W(tNgjSu$gHnU^Ft=Y0Yy_j4~E+c4go!bDwkbbaOGWIt^k ztiBzhWLNZ>ctvSk>~6Gdk6mO`thHZIdyynrt%9SVS|ISYo!`sFEY_Y&xPBbR(Zz2* zzA9dql^o8_96K`m9!*0>pHIiC0}8487l*J^yPUaY>bY-+gg$7@Ft~f*0pydrL6C#@{bs@h4i6h zPDh@yPF@;)qaYBbmZ$v%*7{bHce1HNBa3~Vsk*Xig7gKA?uh8-y2_ja{qXWPt@_8` zt2`!lyfF?K?Eb7rM?d%B+=5vSaqxvJ)mpdXlp1MwitG{Mvr6YV5X4{MB8iKNJ{ig< zN~A_;jZb{Fc~^N`t@v?4YP2V@HvBOC?P#EFOQyB&q<)ia_P!T27LnQeIXd@#*ETDPxU!@FYMDvU;cO8u zyM9yio^FsYj~94PfCp#BSrp>Hf#}MZEB-yJ|M(SlO2)O0?*8tTaW60d_%57p6>09; znWjtc@*r8;!MT7At`y0N`4m@BU}PjSVGBDeTD zS4fS;R?e9rj_6z)-goEgwrrz1X_n2s+^Utb{ROAvVu#wr`WrpF=DUjCT`dwL?)U#N z_{yP>xx!X5((gSVwmpO-CS3GJ{D5HY8Fela2+U}2Com>^zRbQ9u|<$Do=&A=6=X2c zFKbQ^17n8OgO4(;rL+&A+7vQ}$Ggl_X7cRfw8GfzUs@@sd}e6PR7Ss_b%dU<-xN6V&Bq`v^RAZ!=8c_|zn%u4q%I4GWz&%x z=)YR10_+}MpYi3WQoLwk^uhU%hh#n7Xr#o8slS$rj&j_x0!Kk_Sa#6vqH{L08M!R> zfRge(uK%;Ro1S8^fr0L`9SN>AJIX`+IlbG^H65(d3_%-@PgWoOm>PMQW&nHE>Y8)y zMWz|gw-%9`_FF7Lc#@)lQsldJ_z#Y$1tJ9h;J$>CZ{T7oxsiT)K`2W>3pODn!i8v<)ngBP9lFa zXoYC4qY4f_8hF0_HoBBgK;PJ_{D$uRCD|giBOSsKmiOknl8Z-09}*3f+xP=z%{gTy zb3fU9wYX!_r>#4Dt>TRm6-9!IYN5}`RFzu61B+jIxwZ5PrLFI-FjDSqj%HQpZ!Dvv zs(n;*aahLgIfGMf8z@2Tv}Py56Q@OZMR1h5Rw_G`KPx}&lO?{~j4pp7!jN*$w{!Cl z@vvs6OJHC}E-@)1I+%M6pWx~!9ZNn#wcSKbgWCu$XcRlhH`Qmvs=_fng^Q7>ed#B@ zn1^|vtTbYi;L($NScNIOoI%s*UV4tNqqcn80|u)*%xgE*5!H;^cxN31^{?>jx+|HbG= zLHD5)$ zLu>@i;LwiAz7~F}+%w9e{!2&MrY|cWx?FawwsvFU%&Pu&7jtckkwkO!_fyJKe_as3 zrRstMCJ3r2OC=d>KLJD zm#K`57dQ~ew04JagWJm0E-KGTMwNR{)Whkhu>;(k6pwePSsaaSD&L;)VaPoC#A@T+ zJJG^cyi-q)-q8(SoM5x_jS+9WeDlNkt?8uPX6CC~ZIULjG2i6%Fr9Bk464dYriI&d z`cGHLXbwf%$u@m&U~Zc$7COi6#kGb@@&b?Ay<&JaP}VB`$Z4aKAs4e+o;t|Ak4x31 zU&wvG`i5^OW_ojAV{wW+<+=R+jPJbP)b*!lI7!nlC^c2%{KrwV8#|NpX8DNUzD>`~ zd#BFKRUFmW%!)4hN?DjX{cxUUG2e5JLxl3UmkYUwWF^|)&r(s<7-v(~g(t z$cyBnmGN~KzSGH9SOXQBBkzC=5;Sw_n9h)v8=g7V^Q(p-+NhOwhy?#tnXtYKPoQ~tYX zJKNME(w#x<-MO;$DvW0G{xH_(r{=p%_h|vA$qzQ&3bI?Qyj- z*{&saJWG8@L+T0tt6Hswy`er z7q`XQ#%d?+TzFQ*tNFYP*ufx&+)({}>T%`y*4gqXV+Cv9;^&X8S7y2nP=@ErHGM11 zT_RPOZ4y`wUS3T*sBDk%ITe-mm=T5TT^&P>UF6k3#l`meFR@Ulk@9$Ab0zH~Dn(X@ zT=;Mw;Rr@o4F`7WvCg7}8re7jSDdC~z~dfQ!<4TcmjL9r5!Vwq z4`|qT^x88<^jx(oET+*5T;|uSmMM?SsJ@{)j*isf<-Ai{{|YO*n8K}u>rhDGN$4Uz z^4ASWd;DBod?D-Joz@C*k>XEn7M8oX4uELSzIz1I30zODey7QTEX=x^r8$ zBx6HL;@xX+1=C*E>uTBEqDeEpv*Ehx_R98;WgD{gPB3L9AIW3#I?2xLV!#|`e0}7K zPM*1u!+62NeR1L-2pKDG9|KdvNyM0bY)I+qGBDROR+Xv^N7v%W`8x7*vGhL6t5>Ebr+ScRq&hu}w zl7ZrW^onkLPya_Z`)$swGn8r#Pr!W1dOt-`StqwGnL3`i&%Q<9H-Peb0PRI*Cgy>_ zvN~T&GWC1?CIhN74Q==M?Ca0?Mfm%iMSK5zBOdiKdze`E9r~L6`9Vrp@BXopY$*Wz z&;n{wgbAE|=zsOQ`a4$j{Il=u!$5wX&8el*HnsVV)zsw%qntCrc~69QDn zWY8##P+(&KEXfOhrsrA$b_-QUC!h_4MuHjmD0xRBcp;hj#F6dQOY0D6w?PE56Rru@ zp54^j^IK2{iiN7hwsG{eT03q4w@6J#t@c@)H7)@3BKisff6mwX`8oCmItK3O7(v%F z#4`ZeE#VM*Sxdqelw^B*x2W-oW7tN!cAl=;pX+?z28UWpYy+g<_ACy7zSa8l>fZEO zpuLUHK==i`d!aZs0|JMaFi@kMF)+MZ9N$2@rUbOi=?Is1T=;GoAu~1Vg)l%~wKsc{ z>fGTY+`8-)y^ZO1CinwbsJPzx;w#e-Suwnli-oXQ0uWD*0KJre191+rFQA6EE!;Ez zaEuRJKn<&)R>;2ro*6mNIScRP)eB6$vbq7_t&gE z_$0xj-^SWc{*xdVEe{0gRtAE@b!7EI3J=(n^|`7lbCMwtE4*|v04|*+Tj~HZq?~T7 z1ZtUlWx+zcoNQ?in>oP6W|(glna4NY147&CB|Ex_HvlSJv1ChWNf9stMcR|?*_YNK zz!_n(3IqID`>Xpt#3GtCFUZo(Gm-(4borsLY$b7s?j8b25SGHyu7`kSf|{^n*;DC# z-My}56UsI>OkVBksI%h^%0tcCEjh1^P~{^b0w zZM{beieh-6j2#rZ22Qlzh9c6DDjGk_FH^L6#-%u@@G5f}`Cz`i=vELvWUsUaB-4`$ zhQhmPsp#`ene=kOK4~XA@gXpZ-oC#BV#O|Z!FwgARd&o@2||dhcs}y_Mi*Vy{_NZ6 zp4vEWaKISG+&~w9avMQR3cFY^_jp3qF6PTf4^OrXXhg{a^P><-EfT(?VOL!vke^O_ z-49aa%noz@s0>Jp?WFqMdp1vHnARSALEicsBb?!qyPHn3pojn7CTZ%wvighsD~MEi~%Cg%)s<6}>n z#2Ssb(+5%p1blN2;u^FtQ_QF3ubp_J$%k65tgF5Ch>9i|N|Tb!{n2s(Oz+sn7qd8W z9hAeO{kQO#LOJA}SOWgYk1Zpo!8C7pAe#xz7$~r9c1i|F*f@Y3bNUly{Z~I)a5Z$eOaVp-UHclvk}YQxF+C6)aCW5BDq7KlxSXM^ zIH^Az#%O2We9urW?64UW*~2e@D?qXv+U`P$!QNiR+FcJQ{V*R@?9nIih|p{N-a}3( zf@`yE@Xk9+J6Odwx<6dd?E3>OJh%ahNKlz%W3>wqGn!Mhi6R+zBpx=Ej>6GB-xAgfH{RDsz(+#Rzh!EGi zF?k~AhA5edrE@b2>@%=F0!UESzp(^aqy;r9M}X*PUb*C%D^zN>Ctnp?0G}1bCfroS zjVI5IOVZ~_CIG~Gyx$p1JIbK_yW73H3vQ{_=KJN;p~4vA<(rH605SJt-bIs@w}y%H zA|eQhA0g2I_WbppgWpzJp9cD^kkX~AY#2V~C@l;Dm9&|s~Y`~)h5%Qu) z!9f*{($%6oMVhTZ9)AogU%ds;Rdw+UQW{o#e1D<-%`bk>>k!!JWnY$3Rx6` z$3BD5zwG)ns^nEoNQ8k@uhI9FJb#i9+q&cfmqf@s2LbPH*$2~ffS=5X&pl(Yu!n8V zbzorFqkwW}f*O5(XwdY={_sy#t16Gsdi8+QCr6G<+Y&&G6&fIx$?`n_MYzW~Q4zr_ z9SE*s$d+SD8OZL~6*2LWxkY~1Y%k!zZBF*^R;G{i@N-L47hvj)hZmm{piX%r`GIdo zgxSByWO$di&hMnyVZhg0QH$!{91lOUOxMhO^5a98_$S+&igu+cz&J3u_auz=?eXVw z6@`)2{A)9NQ;n!ottd7Go}wPFc8x6VA3RBkyUKr^9JCVEcL4B{z23D4Jv>fFzj}E= z|Jk(a>vd3Ui6KA==|o?^yOHoOPJ0J)s(OOy&%ntTuzq%+?s?R}uwBmmQj7aRq z7g~cz2e!6eC%-gd6g&0+cSxO080Q=>46Ipk^A{14&#zE0_8?AT^Z^^HKi`{cez&0>g zkE%woIm!^`M>Mt&x~7g_Z9cQj?tB~VPlqBYYoCX9I@GXK2L**-TUuF zee}noRuejXq?awb2<)L{c_j1WYhPA!%PU{2A;qY zZO}+l{NX!dx!)$H`QO1Yw;`Doer}t7XGmj*Xs_p60#jm0(e#ca|@`LaS5QTvet$^ z4e8JkMIY&SvP@@fvHD4iPeJufyd=o!!TknAuk50(UG+X@HJnTfyqUx#a(vLl_D1*>nvnIjDXIs+N~T2 zv*le71c%i8+se#8I>?{*wn0QyU54;F zCY?rUApl#wIVX?Uc5DOGyEhTQs=D*e{&6kCbTa2*fCe-tLUJ3IJdrxQ0whtS`y)h3 zw8<=GA~opG`_B~rBj$q2J!y5=XPyA~I}1X>kT8GVq_^?+_q=o~8scKpVM|khMtT+4 z)~2`ntris3Izl8M{DQ_cdn2FGQTDC@st|UsqjL~q5@H_V*_p~KNw&Y~BRs?V`z5UD zE&ZO#NBSltJOj8zt}1{pqjVQ3zz<4$F#fURsPe&!mrV8?5{6xMD6jXoWr$xw%wd4B zhVlzP;Q!)u-s~mQx4E-4;j;q2zo}Npzac>K5JC{jVuz)<9-~iheR^uN5)qSTt$^o5 z%ufP`Ox1rIOmIDg!MhxwxRj7u6bWscGX?FHeX>(q1s*$;WC^Nr6(bqJH*Hst<$ zxdDNEg1AP&rp2w_CgT~%3W>gp@3D|tLO}R}(2e20jP>=9e@8gYUjEswhJps>lUWRT z8w*=KxJ~7l+C~n8y&k3x8&4%An*0&7|MvY!AorU(`Io zmpEjA4TMCKJxBI)x47&n=m_e3lbqFXB67YcImD9(7>~i+O zs47lJkAnD5f*b&IR`D^p@sB;f_kj*qIDOz%_c=0EC>(8J;kbwZ>TR4`?H)5{$58O$ z)8sp4Et`LPEqbDSO$qH}aWOC;6 zG&AV;z0y%@LwAWoIMNWI6dz?rT`vrQ{67PGZv#Y`5!Uh1$A*s_mq5a(772z81m0MS%l8tDD&_XVlSTnaB|0yM1BL3%)VA7iENbTUxg zhv+$QEBqH|{6%3oq4=MEn*aD#Uoxq$Qf?Hi7h>gFAhGyuz~>RCczKXrUSc68g#ZSl zGj6TGiptC5pV{982aSp_94^qoikPZQOeMfp-Hk}d07GGdUIwe4f=fB@RZ`qI8eY#J zZ|@DNEfaJ_#BcWttc_=ZSLn@9=1t=-g2piL zw>%vBeS7AIf8WEh{R|@GeumP&o1vfO+K(fJ|JT23`2u{#Kt+nUymp@G9>YBR*9Qv%|btui6{}B@DJ5+XTB8Gn;k`(m;S|`fJF#?pf_>U4+)?oJj zb6M4cV?;3Pz$MRt+Tq7YKZsGu6Sg+n#^qp|FAbaip_dFS1JK(Je!*iXuDE0{=)^*p zB;s%77Uh~?1p=1*44V8LQj-Zw;6HG$H?{pyT}F0xWG| zIQUONF_K7vDAA3TFqklqKIf`B$B92nUW@GWp76u~&{9>g5QPcOa4-kH10S~=eyBtL z_`kGth=m-Sav}410_YG{-IhBv^^jwi3=oj82z#0R7*$!$?LRv~RelaofO5&h=}97k z;_~NTZQTYL7Q2JHAgm5F6sA9|IgzWiFHgmHy`C=#c4t>F_agZZ;G?ndV-pax4;?BU#svP>PyYp8`qk@FUa&P~|(XYa?v)TDPQ33yw^ ztA_+&y2$RJ*Y*L;h%V(E%5Gq&$6rjihAWB^f~8&47Ga zU69morUOKn9~LHg*%lp>KbK-{{*&6IJ*$QXk0DNjN+9RyBFl#8G+vkc`?l*11~n8h zc7drP^tYns|1A6)^l<+h*xC>wzWiA&1FrZsi#LUjzrf^b3g_}L^bnrv>t6jYa{{`@ z%;(3n^SzeYJ20Yqe{b-=HMG?_ESlib#EAvB3n#1gYZM2YCj-H7LgVVd2VkbFqLIn- zkAIsDE4`O^=*Qp)BHn+NcZUxB&lvdr-R2%T^oKX_V;drwg5ta9iXK}oG(_HU?u@Q_ J?rDp_{{a=&m-PSu literal 0 HcmV?d00001 diff --git a/assets/img/sprint_points_full.png b/assets/img/sprint_points_full.png new file mode 100644 index 0000000000000000000000000000000000000000..8b206db3d0c2652b3fa91d1d1e8448db36d96d08 GIT binary patch literal 87029 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%0AV8>*kg=1Bv*8_}J-5ocDBA|u)!MU%aZue` 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�|?B%*N=yf4MeBt=_Au%xCzUXHcXNR!sf0 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 literal 0 HcmV?d00001 diff --git a/assets/img/versioning.png b/assets/img/versioning.png new file mode 100644 index 0000000000000000000000000000000000000000..742c6a5d057d743ae67707dd4b7e16c6777fbfff GIT binary patch literal 25672 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 literal 0 HcmV?d00001 From 4f728bf3795e06816f47e00486d215a350770308 Mon Sep 17 00:00:00 2001 From: Yocelin Garcia Date: Tue, 22 Jun 2021 23:31:08 -0500 Subject: [PATCH 2/6] Fix ortography --- _posts/20201-06-21-sprint-points.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/_posts/20201-06-21-sprint-points.md b/_posts/20201-06-21-sprint-points.md index f7831ea..0794259 100644 --- a/_posts/20201-06-21-sprint-points.md +++ b/_posts/20201-06-21-sprint-points.md @@ -47,20 +47,20 @@ Story points allow you to calculate team velocity and estimate work in an object 0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100 ### What Goes Into a Story Point? -In the Agile Methods like XP(`Extreme Programming`) and Scrum have a planning phase for development team members to discuss each prioritised backlog item and collectively estimate the effort involved to complete, and then make a Sprint forecast outlining how much work the team can achieve within the Sprint. The collective effort estimation is where story points come in. Story points represent the overall effort required to fully implement a product backlog item or any other piece of work. In the Scrum literature, the effort is a multi-facet construct consisting of risk, complexity and repetition. +The Agile Methods like XP(`Extreme Programming`) and Scrum have a planning phase for development team members to discuss each prioritised backlog item and collectively estimate the effort involved to complete, and then make a Sprint forecast outlining how much work the team can achieve within the Sprint. The collective effort estimation is where story points come in. Story points represent the overall effort required to fully implement a product backlog item or any other piece of work. In the Scrum literature, the effort is a multi-facet construct consisting of risk, complexity and repetition. ![effort in Scrum](/wiki/assets/img/effort.png) Because story points represent the effort to develop a story, a team’s estimate must include everything that can affect the effort. That could include: - The amount of work to do - The complexity of the work -- Any risk or uncertainty in doing the work. You should consider dependencies you might have as you work, these can be both internal (i.e. a MS someone else developed and you have no prior knowledge of) and external (i.e. a third party integration such as Auth0) +- Any risk or uncertainty in doing the work. You should consider dependencies you might have as you work, these can be both internal (i.e. an MS someone else developed and you have no prior knowledge of) and external (i.e. a third party integration such as Auth0) When estimating with story points, be sure to consider each of these factors. Let’s see how each impacts the effort estimate given by story points. ### Consider Everything in the Definition of Done -A story point estimate must include everything involved in getting a product backlog item all the way to done. +A story point estimate must include everything involved in getting a product backlog item all the way to do. - Docs (If required) - Tests (unit, integration tests) @@ -91,7 +91,7 @@ The bottom line is, it’s difficult to estimate the precise amount of time need Since story points are an Agile estimating method, they make no definite commitment (like within one week or next Friday). Instead, they provide a relative estimation of the overall effort that’ll go into a task. -This will help reduce unnecessary stress of meeting tight, unrealistic deadlines. Instead, you’re left with a far more reasonable and accurate estimate. +This will help reduce the unnecessary stress of meeting tight, unrealistic deadlines. Instead, you’re left with a far more reasonable and accurate estimate. ## Story points aren’t subjective Sometimes, people differ in their estimations for how long a task in an Agile project is going to take. This often leads to subjectivity while using time estimates. @@ -118,7 +118,7 @@ The second story, of course! Compared to it, the first story won’t take much w So the second story will get more points than the first one because of the greater story size. ### Risk and uncertainty -Eevery project has its risks and uncertainties, especially with certain types of backlog items. +EEveryproject has its risks and uncertainties, especially with certain types of backlog items. For example: if the product backlog item involves working with a new framework that your team doesn’t have much experience with, that risk factor will increase the story point value. @@ -133,7 +133,7 @@ The first one is a piece of cake, just some tweaks here and there and voila!. Th Naturally, during the effort estimation process, such user stories clearly earn more points. ## How Story Points Are Calculated In Agile? -You can calculate Agile story points by creating a base story, choosing your scale and estimation technique, and then calculating accordingly. +You can calculate Agile story points by creating a base story, choosing your scale and estimation technique, and then calculated accordingly. Story point estimation is usually done by using a method called ‘the planning poker.’ ### Set up the poker table (create a base story) @@ -168,15 +168,16 @@ During this Agile estimation meeting: * If they don’t match, the estimators discuss further to reach a consensus By the end of the planning poker, our table will be filled with user stories beside their assigned points. + Expect the story point estimation matrix to look something like this: ![sprint point table fullfilled](/wiki/assets/img/sprint_points_full.png) `Important Disclaimer!` -Many times when a team is nos sync, the person who will take a task will have the last word about the sprint point number to be assigned, remember that the practice makes you perfect and no one should force you to have the same rithm also if you are starting with a new team. +Many times when a team is nos sync, the person who will take a task will have the last word about the sprint point number to be assigned, remember that the practice makes you perfect and no one should force you to have the same rhythm also if you are starting with a new team. -Sprint points technique allows you and your teams to become tecnically equal when time passes and is a very fexible technique. +Sprint points technique allows you and your teams to become technically equal when time passes and is a very flexible technique. ### Calculating team velocity and planning project schedule After the estimation meeting, the [sprint backlog](https://clickup.com/blog/sprint-backlog/) is created after a backlog refinement session, and the team works on the stories. @@ -199,7 +200,7 @@ The effort estimated in a Sprint is a latent concept, meaning cannot be directly Due to the different views on the story point and the under-defined steps to estimate, it is not surprising to observe several methods used to estimate story point in practice. ### Use the First Story as a Benchmark -Assign a number for the first story. Any other story in this Sprint will be compared to the first story. Future Sprints will repeat this process and align on the same scale. For example, if a story is about the same amount of work like the one you have already sized, give it the same number of points. It is clear that the effort estimation is done relatively. +Assign a number for the first story. Any other story in this Sprint will be compared to the first story. Future Sprints will repeat this process and align on the same scale. For example, if a story is about the same amount of work as the one you have already sized, give it the same number of points. It is clear that the effort estimation is done relatively. #### Pros * The human brain is good at comparing, and therefore, this method has a less cognitive load. @@ -214,7 +215,7 @@ Assign a number for the first story. Any other story in this Sprint will be comp ### T-Shirt Sizes -Use multiple sizes such as extra-small (XS), small (S), medium (M), large (L) and extra-large (XL) to estimate the effort at a high-level. Each size corresponds to a value from the Fibonacci sequence, e.g. XS — 1, S — 2, M — 3, L — 8, XL — 13. +Use multiple sizes such as extra-small (XS), small (S), medium (M), large (L) and extra-large (XL) to estimate the effort at a high level. Each size corresponds to a value from the Fibonacci sequence, e.g. XS — 1, S — 2, M — 3, L — 8, XL — 13. #### Pros * As it gives a quick and rough estimate for how much work is expected for a project, it is time-efficient. * Independent to time, this method rewards team members for solving problems and focus on value delivery. @@ -222,7 +223,7 @@ Use multiple sizes such as extra-small (XS), small (S), medium (M), large (L) an #### Cons * It is unclear how risk, complexity and repetition attribute to the size estimation, and therefore difficult to achieve consistency over time. * The nature of the various T-Shirt sizes is ordered categories, corresponding to the ordinal scale. When converting to the Fibonacci sequence as story points, the value assignment is arbitrary. Someone can easily challenge why a size gets assigned to one value instead of another. -* The summation, subtraction and average on the story points are not meaningful, e.g. Does the difference in effort between a medium size story and a small size story is extra-small size story? What does velocity as 20 story points mean, e.g. two large and two small stories? +* The summation, subtraction and average on the story points are not meaningful, e.g. Does the difference in effort between a medium size story and a small size story is an extra-small size story? What does velocity as 20 story points mean, e.g. two large and two small stories? * This method doesn’t translate from story points to the time required to completed and therefore, couldn’t answer a common question from stakeholder: how long will feature A be completed? Note: Some other methods refer to effort different from T-Shirt sizes, such as animals and gummy bears. Essentially they’re the same idea. From fedb2e98763a2fc2409c60f49b6a4486829e124f Mon Sep 17 00:00:00 2001 From: Yocelin Garcia Romero Date: Wed, 23 Jun 2021 19:58:44 -0500 Subject: [PATCH 3/6] Fix typos --- _posts/20201-06-21-sprint-points.md | 2 +- _posts/2021-06-21-versionado-y-uso-de-branches.md | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/_posts/20201-06-21-sprint-points.md b/_posts/20201-06-21-sprint-points.md index 0794259..fdd0878 100644 --- a/_posts/20201-06-21-sprint-points.md +++ b/_posts/20201-06-21-sprint-points.md @@ -19,7 +19,7 @@ At the end of every iteration, you develop a version of your product called an i You then incorporate this feedback into your next iteration planning process and repeat until you have a final product. ## What Are Agile Story Points? -Before we talk about what a story point is, we need to understand two terms: ‘user story’ and ‘product backlog.’ +Before we talk about what a story point is, we need to understand two terms: ‘user story’ and ‘product backlog’ * A user story is an informal explanation of features that your user wants in the system. A real-world user story example is: “As a gamer, I want my hero to be able to fly.” diff --git a/_posts/2021-06-21-versionado-y-uso-de-branches.md b/_posts/2021-06-21-versionado-y-uso-de-branches.md index 4e70413..136490d 100644 --- a/_posts/2021-06-21-versionado-y-uso-de-branches.md +++ b/_posts/2021-06-21-versionado-y-uso-de-branches.md @@ -23,8 +23,8 @@ Es usual que las empresas usen herramientas de versionado como lo son GitHub y G | Tipo | `ms - Microservicio` > `fn - Lambda Function (Azure Function)` > `fw - Framework` > `back - Backend` > `front - Frontend` > `npm - Librería para npm` > `nuget - Librería para nuget` > `int - integración con otra aplicación` > `mig - migraciones de otras aplicaciones` | | Descripción del proyecto | Descripción breve del nombre del proyecto. En algunos casos puede incluir el módulo al que corresponde. Siempre-va-separado-por-guiones-medios | -De esta manera, un ejemplo para un microservicio que se encarga de crear y manejar notificaciones, que será usado en un ERP, pordría llamarse de la siguiente manera: -> erp-ms-pending-item +De esta manera, un ejemplo para un microservicio que se encarga de crear y manejar pendientes, que será usado en un ERP, pordría llamarse de la siguiente manera: +> erp-ms-pending-items ## Branches @@ -107,7 +107,7 @@ La nomenclatura a seguir para este branch es la siguiente **hotfix/x.x.x** #### ¿Por qué? -Debido a que en una emprese se tienen varios proyectos que tienen muchas dependencias tenemos que tener un control para versionar nuestros productos de forma que con sólo leer la versión podamos identificar el estatus de un proyecto. +Debido a que en una empresa se tienen varios proyectos que tienen muchas dependencias tenemos que tener un control para versionar nuestros productos de forma que con sólo leer la versión podamos identificar el estatus de un proyecto. Este sistema es un estándar llamado **[Semantic Versioning 2.0.0](https://semver.org/)** usa 3 números los cuáles se usan de esta forma. @@ -135,7 +135,7 @@ Por ejemplo el proyecto A usa como dependencia la version 1.10.2 de B, si quiere #### Reglas -1. Un número de versipon normal deberá tomar la siguiente estructura: X.Y.Z donde X, Y, y Z son números enteros positivos, y no deberpa contener ceros a la izquierda. X corresponde al `major` versión, Y es the `minor` versión, y Z la `patch` versión. Cada elemento deberá ser incremental, por ejemplo: 1.9.0 -> 1.10.0 -> 1.11.0. +1. Un número de versión normal deberá tomar la siguiente estructura: X.Y.Z donde X, Y, y Z son números enteros positivos, y no deberpa contener ceros a la izquierda. X corresponde al `major` versión, Y es the `minor` versión, y Z la `patch` versión. Cada elemento deberá ser incremental, por ejemplo: 1.9.0 -> 1.10.0 -> 1.11.0. 2. Una vez que se ha hecho release de los cambios, ** el contenido de esa versión NO DEBE modificarse. Cualquier modificación DEBE ser lanzada como una nueva versión.** 3. La versión principal cero (0.y.z) es para el desarrollo inicial. Cualquier cosa PUEDE cambiar en cualquier momento. ** La API pública NO DEBE considerarse estable.** 4. La versión 1.0.0 define la API pública. La forma en que se incrementa el número de versión después de esta versión depende de esta API pública y de cómo cambia. @@ -164,7 +164,7 @@ Esto nos servirá para que cualquier miembro del equipo pueda visualizar los ca - La última versión va primero. - Debe mostrar la fecha de publicación de cada versión. - Indicar si el proyecto sigue el [Versionamiento Semántico](https://semver.org/). -- Cada versión se escribe a manera de titulo, acompañado por la fecha del release: `[v1.5.10] - 2021-06-21` +- Cada versión se escribe a manera de título, acompañado por la fecha del release: `[v1.5.10] - 2021-06-21` - Mientras no se libere un release con la nueva versión, los cambios se sumen a la próxima liberación se pueden colocarse con la etiqueta: `[Unreleased]` #### Tipos de cambios From f615c213b936e3fd2d99afe71599fbeb5b265608 Mon Sep 17 00:00:00 2001 From: Yocelin Garcia Romero Date: Mon, 28 Jun 2021 21:02:06 -0500 Subject: [PATCH 4/6] Convert to spanish the sprint points post --- _posts/20201-06-21-sprint-points.md | 287 ++++++++++++++-------------- 1 file changed, 143 insertions(+), 144 deletions(-) diff --git a/_posts/20201-06-21-sprint-points.md b/_posts/20201-06-21-sprint-points.md index fdd0878..b6e314a 100644 --- a/_posts/20201-06-21-sprint-points.md +++ b/_posts/20201-06-21-sprint-points.md @@ -5,241 +5,240 @@ layout: post --- # Sprint points -Story points are an Agile estimation technique that gives you a relative estimate of how much work and effort will go into a particular task. +Los *sprint points* son una técnica de estimación ágil que le brinda una estimación relativa de cuánto trabajo y esfuerzo se dedicará a una tarea en particular. -## What is Agile? -Agile is a project management approach that has been widely used in software development and project delivery. It breaks down the entire project into shorter development cycles (called an iteration or sprint), which lasts only about 2-4 weeks. +## ¿Qué es Agile? +Agile es un enfoque de gestión de proyectos que se ha utilizado ampliamente en el desarrollo de software para la entrega de proyectos. Se basa en desglosar todo el proyecto en ciclos de desarrollo más cortos (llamado iteración o sprint), que dura solo alrededor de 2-4 semanas. -The main goal of the [Agile methodology](https://clickup.com/blog/agile/agile-project-management/) is to involve customers at every step of the development process. +El objetivo principal de la [metodología ágil](https://clickup.com/blog/agile/agile-project-management/) es involucrar a los clientes en cada paso del proceso de desarrollo. -How does it do that? +## ¿Como hace eso? -At the end of every iteration, you develop a version of your product called an increment. You present this increment to the customers for their feedback. +Al final de cada iteración, desarrolla una versión de su producto llamada *iteración*. Presenta esta *iteración* a los clientes para recibir sus comentarios. -You then incorporate this feedback into your next iteration planning process and repeat until you have a final product. +Luego, incorpore esta retroalimentación en su próximo proceso de planificación de iteración y repita hasta que tenga un producto final. -## What Are Agile Story Points? -Before we talk about what a story point is, we need to understand two terms: ‘user story’ and ‘product backlog’ +## ¿Qué son los *sprint points*? +Antes de hablar sobre qué es un sprint point, debemos comprender dos términos: "*historia de usuario*" y "*acumulación de productos*". -* A user story is an informal explanation of features that your user wants in the system. A real-world user story example is: “As a gamer, I want my hero to be able to fly.” +* Una historia de usuario es una explicación informal de las funciones que su usuario desea en el sistema. Un ejemplo de historia de usuario del mundo real es: "Como jugador, quiero que mi héroe pueda volar". -* A product backlog contains a list of every user story that needs to be worked on and implemented into the final product. +* Una cartera de productos contiene una lista de cada historia de usuario en la que se debe trabajar e implementar en el producto final. -A `story point` is a unit assigned to a user story to express how much time and energy would be required for that job. +Un *sprint point* es una unidad asignada a una historia de usuario para expresar cuánto tiempo y energía se requeriría para ese trabajo. -It’s sort of like the difficulty level in a game. A higher number means a more difficult level. +Es como el nivel de dificultad de un juego. Un número más alto significa un nivel más difícil. -However, this is where most people get it wrong. In a video game, level 2 doesn’t necessarily mean it’s twice as difficult as level 1. But that’s not the case in story points. +Sin embargo, aquí es donde la mayoría de la gente se equivoca. En un videojuego, el nivel 2 no significa necesariamente que sea el doble de difícil que el nivel 1. Pero ese no es el caso en los sprint points. -Story points are a relative estimation technique (also called relative sizing). +Los sprint points son una técnica de estimación relativa (también llamada tamaño relativo). -Relative estimation means that values are assigned on a comparison basis. That means there are no standard units for story points. +La estimación relativa significa que los valores se asignan sobre una base de comparación. Eso significa que no hay unidades estándar para los sprint points. -For example, if a user story A has a point 2 and user story B has a story point 1, it’ll mean that A will take twice the amount of effort as compared to completing B. So, story points have one similarity: points of reference. +Por ejemplo, si una historia de usuario A tiene un punto 2 y la historia de usuario B tiene un sprint point: 1, significará que A requerirá el doble de esfuerzo en comparación con completar B. Por lo tanto, los sprint points tienen una similitud: puntos de referencia. -For example, let’s say two teams are building two similar puzzle mobile games. Level 10 in the first puzzle game wouldn’t necessarily be as difficult as level 10 in the second puzzle game, right? +Por ejemplo, digamos que dos equipos están construyendo dos juegos móviles de rompecabezas similares. El nivel 10 en el primer juego de rompecabezas no sería necesariamente tan difícil como el nivel 10 en el segundo juego de rompecabezas, ¿verdad? -Similarly, your team could assign a story point value of 8 to one user story, and another team can make a point estimate of 13 points to a similar story. The value of your story points is totally dependent on your team and your task. +De manera similar, su equipo podría asignar un valor de sprint points de 8 a una historia de usuario, y otro equipo puede hacer una estimación de puntos de 13 puntos a una historia similar. El valor de los sprint points depende totalmente de tu equipo y tu tarea. -Story points allow you to calculate team velocity and estimate work in an objective way. +Los sprint points te permiten calcular la velocidad del equipo y estimar el trabajo de manera objetiva. -## Story points values +## Valores de print points 0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100 -### What Goes Into a Story Point? -The Agile Methods like XP(`Extreme Programming`) and Scrum have a planning phase for development team members to discuss each prioritised backlog item and collectively estimate the effort involved to complete, and then make a Sprint forecast outlining how much work the team can achieve within the Sprint. The collective effort estimation is where story points come in. Story points represent the overall effort required to fully implement a product backlog item or any other piece of work. In the Scrum literature, the effort is a multi-facet construct consisting of risk, complexity and repetition. +### ¿Qué entra en un Story Point? +Los métodos ágiles como XP ("Programación extrema") y Scrum tienen una fase de planificación para que los miembros del equipo de desarrollo discutan cada elemento de la lista de trabajos pendientes priorizados y estimen colectivamente el esfuerzo involucrado para completar, y luego hagan un pronóstico de Sprint que describa cuánto trabajo puede lograr el equipo dentro del Sprint. La estimación del esfuerzo colectivo es donde entran los sprint points. Los sprint points representan el esfuerzo general requerido para implementar completamente un elemento de la cartera de productos o cualquier otro trabajo. En la literatura de Scrum, el esfuerzo es una construcción de múltiples facetas que consiste en riesgo, complejidad y repetición. -![effort in Scrum](/wiki/assets/img/effort.png) +![esfuerzo en Scrum](/wiki/assets/img/esfuerzo.png) -Because story points represent the effort to develop a story, a team’s estimate must include everything that can affect the effort. That could include: -- The amount of work to do -- The complexity of the work -- Any risk or uncertainty in doing the work. You should consider dependencies you might have as you work, these can be both internal (i.e. an MS someone else developed and you have no prior knowledge of) and external (i.e. a third party integration such as Auth0) +Debido a que los sprint points representan el esfuerzo por desarrollar una tarea, la estimación de un equipo debe incluir todo lo que pueda afectar el esfuerzo. Eso podría incluir: +- La cantidad de trabajo por hacer +- La complejidad del trabajo +- Cualquier riesgo o incertidumbre en la realización del trabajo. Debe considerar las dependencias que pueda tener mientras trabaja, estas pueden ser tanto internas (es decir, una MS desarrollada por otra persona y de la que no tiene conocimiento previo) tanto como externas (es decir, una integración de terceros como Auth0) -When estimating with story points, be sure to consider each of these factors. Let’s see how each impacts the effort estimate given by story points. +Al realizar estimaciones con sprint points, asegúrate de considerar cada uno de estos factores. Veamos cómo afecta cada uno a la estimación de esfuerzo proporcionada por los sprint points. -### Consider Everything in the Definition of Done +### Considere todo lo necesario para que una tarea se considere *hecha* +El sprint point estimará todo lo que involucre finalizar una tarea, desde su inicio hasta que se considere finalizada -A story point estimate must include everything involved in getting a product backlog item all the way to do. +- Documentos (si es necesario) +- Pruebas (pruebas unitarias, de integración) +- Pull requests -- Docs (If required) -- Tests (unit, integration tests) -- PR +## Se puede calcular la velocidad del equipo +La [velocidad de su equipo](https://clickup.com/blog/agile/velocity-chart/) es una métrica importante que simplemente no se debe ignorar. -## Team velocity can be calculated -Your team’s [velocity](https://clickup.com/blog/agile/velocity-chart/) is an important metric that you simply can’t ignore. +Al calcular la velocidad del equipo, así puede visualizar: -By calculating your team’s velocity, you can visualize: +* Eficiencia del equipo ágil +* Velocidad a la que progresa el equipo ágil +* Puede hacer mejores predicciones para el cronograma de sus proyectos futuros. -* Efficiency of your Agile team -* Speed at which your Agile team is progressing -* You can make better predictions for your future project schedule. +### Velocidad +La velocidad (también llamada velocidad de sprint) muestra la cantidad de trabajo que se ha realizado en cada sprint. Es el total de sprint points completados divididos por el número total de sprints. -### Velocity -The velocity (also called sprint velocity) shows the amount of work that has been done in each sprint. It’s the total completed story points divided by the total number of sprints. +Por ejemplo, digamos que su equipo termina 50 sprint points en 2 sprints. -For example, let’s say that your team finishes 50 story points in 2 sprints. +Entonces, su velocidad de sprint será (50/2) = 25 puntos por sprint. -Then, their sprint velocity will be (50/2) = 25 points per sprint. +## Estimación sin compromisos de tiempo específicos +Las cosas no siempre salen según lo planeado, incluso en un proyecto ágil. -## Estimate without specific time-commitments -Things don’t always go according to plan, even in an Agile project. +Y cuando utiliza una estimación de tiempo, solo especifica un tiempo aproximado. Es posible que dedique más tiempo a tareas que pensó que se completarían en un santiamén y viceversa. -And when you’re using a time estimate, you’re only specifying an approximate time. You might spend more time on tasks that you thought would be completed in a jiffy, and vice versa. +La conclusión es que es difícil estimar la cantidad precisa de tiempo necesario para una tarea técnica. -The bottom line is, it’s difficult to estimate the precise amount of time needed for a technical task. +Dado que los sprint points son un método de estimación ágil, no hacen un compromiso definitivo (como dentro de una semana o el próximo viernes). En cambio, brindan una estimación relativa del esfuerzo general que se dedicará a una tarea. -Since story points are an Agile estimating method, they make no definite commitment (like within one week or next Friday). Instead, they provide a relative estimation of the overall effort that’ll go into a task. +Esto ayudará a reducir el estrés innecesario de cumplir con plazos ajustados y poco realistas. En cambio, se queda con una estimación mucho más razonable y precisa. -This will help reduce the unnecessary stress of meeting tight, unrealistic deadlines. Instead, you’re left with a far more reasonable and accurate estimate. +## Los sprint points no son subjetivos +A veces, las personas difieren en sus estimaciones de cuánto tiempo llevará una tarea en un proyecto Agile. Esto a menudo conduce a la subjetividad al utilizar estimaciones de tiempo. -## Story points aren’t subjective -Sometimes, people differ in their estimations for how long a task in an Agile project is going to take. This often leads to subjectivity while using time estimates. +Es por eso que este enfoque no siempre proporciona una estimación precisa. -That’s why this approach doesn’t always provide an accurate estimate. +Por ejemplo, un desarrollador senior puede asignar una tarea "7 horas" de acuerdo con su estándar, pero al desarrollador junior le puede llevar 15 horas completar esa misma tarea. ¡No se puede comparar a un jugador novato con un programador profesional!) -For example, a senior developer might assign a task ‘7 hours’ according to their standard, but it might take the junior developer 15 hours to complete that same task. You can’t compare a novice gamer to a pro programer!) +Mientras calcula un sprint point, todo el equipo se sienta junto y decide qué puntos asignar a la historia del usuario. -While calculating an Agile story point, the whole team sits together and decides what points to assign to the user story. +## Factores clave que afectan los sprint points +### Cuánto trabajo se necesita hacer (tamaño de la historia) +No todos los elementos de que estan pendientes por realizar son iguales; un elemento puede requerir más trabajo que otro. -## Key Factors That Affect Story Points -### How much work needs to be done (story size) -Not every backlog item is equal; one product backlog item may require more work than another one. +Por ejemplo, suponga que hay dos elementos de la lista de trabajos pendientes diferentes: -For example, suppose there are two different backlog items: +* Quiero una nueva arma para el héroe principal, Monkey King +* Quiero nuevas armas para todos los héroes. -* I want a new weapon for the main hero, Monkey King -* I want new weapons for all heroes +¿Cuál crees que llevará más tiempo? -Which one do you think will take more time? +¡La segunda historia, por supuesto! Comparado con él, la primera historia no requerirá mucho trabajo. -The second story, of course! Compared to it, the first story won’t take much work. +Entonces, la segunda historia obtendrá más puntos que la primera debido al mayor tamaño de la historia. -So the second story will get more points than the first one because of the greater story size. +### Riesgo e incertidumbre +Cada proyecto tiene sus riesgos e incertidumbres, especialmente con ciertos tipos de elementos de la lista de pendientes. -### Risk and uncertainty -EEveryproject has its risks and uncertainties, especially with certain types of backlog items. +Por ejemplo: si el elemento pendiente implica trabajar con un nuevo marco con el que su equipo no tiene mucha experiencia, ese factor de riesgo aumentará el valor de los sprint points. -For example: if the product backlog item involves working with a new framework that your team doesn’t have much experience with, that risk factor will increase the story point value. +### Complejidad +La complejidad es definitivamente un factor muy importante para cualquier técnica de estimación ágil. Aquí hay dos historias similares con diferentes criterios de aceptación: -### Complexity -Complexity is definitely a very important factor for any Agile estimating technique. Here are two similar stories with different acceptance criteria: +* "Quiero un disfraz nuevo para el personaje de Geralt" +* "Quiero un nuevo ataque especial para Geralt" -* ‘I want a new costume for the character Geralt’ -* ‘I want a new special attack for Geralt’ +El primero es pan comido, solo algunos retoques aquí y allá y ¡listo !. El segundo requiere que codifiques un nuevo ataque especial y veas cómo funciona en el juego. Luego, tendrás que probar si hay errores. -The first one is a piece of cake, just some tweaks here and there and voila!. The second one requires you to code a new special attack and see how it works in the game. Then, you’ll have to test for bugs. +Naturalmente, durante el proceso de estimación del esfuerzo, estas historias de usuarios claramente ganan más puntos. -Naturally, during the effort estimation process, such user stories clearly earn more points. +## ¿Cómo se calculan los sprint points en la metodología Agile? +Puede calcular los sprint points creando una historia base, eligiendo su escala y técnica de estimación, y luego calculando en consecuencia. -## How Story Points Are Calculated In Agile? -You can calculate Agile story points by creating a base story, choosing your scale and estimation technique, and then calculated accordingly. +La estimación de los sprint points generalmente se realiza mediante un método llamado "el póquer de planificación". +### Prepara la mesa de póquer (crea una historia base) +El primer paso de la técnica de estimación es crear una historia de referencia o una historia base. -Story point estimation is usually done by using a method called ‘the planning poker.’ -### Set up the poker table (create a base story) -The first step of the estimation technique is to create a reference story or baseline story. +Es una historia de usuario completa de un ciclo de iteración anterior asignado con un valor de sprint point (generalmente 1 por simplicidad). -It’s a completed user story from an earlier iteration cycle assigned with a story point value (generally 1 for simplicity). +Este será su sprint point normalizado. La nueva lista de pendientes también se presenta con todas las nuevas historias de usuarios. -This will be your normalized story point. The product backlog is also presented with all the new user stories. +### Reparte las cartas (elige una escala para la estimación) +Hay dos escalas que se utilizan para la estimación de sprint points: -### Deal the cards (choose a scale for estimation) -There are two scales used for story point estimation: +- Escala lineal: contiene números naturales como 1, 2, 3, etc. +- Escala de Fibonacci: números de la serie de Fibonacci como 1, 2, 3, 5, 8, etc. +En aras de la simplicidad, la mayoría de los equipos ágiles tienden a elegir la serie Fibonacci para su estimación de sprint points. -Linear scale: contains natural numbers like 1, 2, 3, and so on -Fibonacci scale: numbers from the Fibonacci series like 1, 2, 3, 5, 8, and so on -For simplicity’s sake, most Agile teams tend to pick the Fibonacci series for their story points estimation. +En esta técnica de estimación, la escala de Fibonacci se inserta en una tabla donde puede asignar un valor a cualquier historia de usuario. -In this estimation technique, the Fibonacci scale is then inserted into a table where you can assign any user story to a value. - -Here’s how an estimation table looks like when the team first starts filling it in! -![sprint point table](/wiki/assets/img/sprint_points.png) +Así es como se ve una tabla de estimación cuando el equipo comienza a completarla: +![tabla de sprint points](/wiki/assets/img/sprint_points.png) ### Planning poker -Planning poker is an Agile estimation technique that focuses on general consensus. This estimation technique is also used for estimating things other than user story points. +El planning Poker es una técnica de estimación ágil que se centra en el consenso general. Esta técnica de estimación también se utiliza para estimar cosas distintas a los sprint points del usuario. -During this Agile estimation meeting: +Durante esta reunión de estimación ágil: -* Each estimator receives a set of cards containing numbers from the Fibonacci scale -* One backlog item is presented at a time and estimators have a detailed discussion about it -* After the discussion is over, each estimator selects a card with a Fibonacci number -* Everyone reveals their card together (just like poker, all cards on the table) -* If all the estimates match then the value is assigned -* If they don’t match, the estimators discuss further to reach a consensus +* Cada estimador recibe un conjunto de tarjetas que contienen números de la escala de Fibonacci. +* Se presenta un elemento del backlog a la vez y los estimadores tienen una discusión detallada al respecto. +* Una vez finalizada la discusión, cada estimador selecciona una tarjeta con un número de Fibonacci. +* Todos revelan su carta juntos (como en el póquer, todas las cartas sobre la mesa). +* Si todas las estimaciones coinciden, se asigna el valor. +* Si no coinciden, los estimadores analizan más para llegar a un consenso. -By the end of the planning poker, our table will be filled with user stories beside their assigned points. +Al final del póquer de planificación, nuestra mesa estará llena de historias de usuarios junto a sus puntos asignados. -Expect the story point estimation matrix to look something like this: +Espere que la matriz de estimación de sprint points se vea así: -![sprint point table fullfilled](/wiki/assets/img/sprint_points_full.png) +![tabla de sprint points completada](/wiki/assets/img/sprint_points_full.png) -`Important Disclaimer!` +`Aviso importante!` -Many times when a team is nos sync, the person who will take a task will have the last word about the sprint point number to be assigned, remember that the practice makes you perfect and no one should force you to have the same rhythm also if you are starting with a new team. +Muchas veces cuando un equipo no está sincronizado, la persona que tomará una tarea tendrá la última palabra sobre el número de sprint points que se le asignará, recuerde que la práctica lo hace perfecto y nadie debe obligarlo a tener el mismo ritmo también si está comenzando con un nuevo equipo. -Sprint points technique allows you and your teams to become technically equal when time passes and is a very flexible technique. +La técnica de Sprint Points te permite a ti y a tus equipos llegar a ser técnicamente iguales cuando pasa el tiempo y es una técnica muy flexible. -### Calculating team velocity and planning project schedule -After the estimation meeting, the [sprint backlog](https://clickup.com/blog/sprint-backlog/) is created after a backlog refinement session, and the team works on the stories. +### Calcular la velocidad del equipo y planificar el cronograma del proyecto +Después de la reunión de estimación, el [sprint backlog](https://clickup.com/blog/sprint-backlog/) se crea, después de una sesión de refinamiento del backlog el equipo comenzará a trabajar en las historias. -The story points Agile help you track the team’s performance and make better forecasts. +La historia señala que Agile lo ayuda a realizar un seguimiento del desempeño del equipo y hacer mejores pronósticos. -After the first sprint is over, there’s a sprint [retrospective meeting](https://clickup.com/blog/scrum-meetings/). +Una vez finalizado el primer sprint, hay una [reunión retrospectiva](https://clickup.com/blog/scrum-meetings/). -This provides you with the data to calculate the team velocity (the number of story points completed during a sprint). +Esto le proporciona los datos para calcular la velocidad del equipo (el número de sprint points completados durante un sprint). -Once you get the sprint velocity, you can determine how many sprints it’ll take your project team to complete the whole project. +Una vez que obtenga la velocidad del sprint, puede determinar cuántos sprints necesitará su equipo de proyecto para completar todo el proyecto. -Iif your Agile project has a total story point estimate of 480 and your actual velocity is 48, then you can calculate that it’ll take your team 10 sprints to complete the entire project. +Si su proyecto Agile tiene una estimación de sprint points con un total de 480 y su velocidad real es 48, entonces puede calcular que su equipo necesitará 10 sprints para completar todo el proyecto. -This makes it easy to plan your Agile project schedule. +Esto facilita la planificación de la programación de su proyecto ágil. -## Ways of Estimating Story Points -The effort estimated in a Sprint is a latent concept, meaning cannot be directly observed or measured, unlike observable concepts such as temperature and distance. Therefore, it is not surprising to see different even contradictory views on how effort should be estimated, particularly if story points should be a function of time. +## Formas de estimar los sprint points +El esfuerzo estimado en un Sprint es un concepto latente, el significado no se puede observar ni medir directamente, a diferencia de conceptos observables como temperatura y distancia. Por lo tanto, no es sorprendente ver visiones diferentes, incluso contradictorias, sobre cómo se debe estimar el esfuerzo, particularmente si los sprint points deben ser una función del tiempo. -Due to the different views on the story point and the under-defined steps to estimate, it is not surprising to observe several methods used to estimate story point in practice. +Debido a las diferentes opiniones sobre el spint point y los pasos subdefinidos para estimar, no es sorprendente observar varios métodos utilizados para estimar el spint point en la práctica. -### Use the First Story as a Benchmark -Assign a number for the first story. Any other story in this Sprint will be compared to the first story. Future Sprints will repeat this process and align on the same scale. For example, if a story is about the same amount of work as the one you have already sized, give it the same number of points. It is clear that the effort estimation is done relatively. +### Utilice la primera historia como punto de referencia +Asigne un número para la primera historia. Cualquier otra historia de este Sprint se comparará con la primera historia. Los Sprints futuros repetirán este proceso y se alinearán en la misma escala. Por ejemplo, si una historia tiene aproximadamente la misma cantidad de trabajo que la que ya ha dimensionado, dele la misma cantidad de puntos. Está claro que la estimación del esfuerzo se realiza de forma relativa. #### Pros -* The human brain is good at comparing, and therefore, this method has a less cognitive load. -* Since only need to compare with the first story, the estimation is relatively lightweight in cognitive processing and time-efficient. -* Independent to development time, this method rewards team members for solving problems and focus on value delivery. -* The story points are in the interval scale and are meaningful in summation, subtraction, and medium. The interval scale is sufficient for the velocity calculation. +* El cerebro humano es bueno para comparar y por lo tanto, este método tiene una carga cognitiva menor. +* Dado que solo es necesario comparar con la primera historia, la estimación es relativamente liviana en el procesamiento cognitivo y eficiente en el tiempo. +* Independientemente del tiempo de desarrollo, este método recompensa a los miembros del equipo por resolver problemas y centrarse en la entrega de valor. +* Los sprint points están en la escala de intervalo y son significativos en suma, resta y medio. La escala de intervalo es suficiente para el cálculo de la velocidad. -#### Cons -* The initial point assigned to the first story is entirely arbitrary. Even though the value doesn’t matter as all the following points are assigned relatively, the initial point and story do matter as they set up the story point system’s scale. -* Although it is easy to compare the efforts between tasks, it is difficult to gauge the magnitude of difference as the numeric values don’t pertain to anything directly measurable/observable. -* This method doesn’t translate from story points to the time required to completed and therefore, couldn’t answer a common question from stakeholder: how long will feature A be completed? +#### Contras +* El punto inicial asignado a la primera historia es totalmente arbitrario. Aunque el valor no importa, ya que todos los puntos siguientes se asignan relativamente, el punto inicial y la historia sí importan cuando configuran la escala del sistema de sprint points. +* Aunque es fácil comparar los esfuerzos entre tareas, es difícil medir la magnitud de la diferencia ya que los valores numéricos no pertenecen a nada directamente medible / observable. +* Este método no se traduce de los sprint points al tiempo requerido para completar y, por lo tanto, no pudo responder una pregunta común de las partes interesadas: ¿cuánto tiempo se completará la tarea A? -### T-Shirt Sizes -Use multiple sizes such as extra-small (XS), small (S), medium (M), large (L) and extra-large (XL) to estimate the effort at a high level. Each size corresponds to a value from the Fibonacci sequence, e.g. XS — 1, S — 2, M — 3, L — 8, XL — 13. +### Tallas de camiseta +Utilice varios tamaños, como extrapequeño (XS), pequeño (S), mediano (M), grande (L) y extragrande (XL) para estimar el esfuerzo en un nivel alto. Cada tamaño corresponde a un valor de la secuencia de Fibonacci, p. Ej. XS - 1, S - 2, M - 3, L - 8, XL - 13. #### Pros -* As it gives a quick and rough estimate for how much work is expected for a project, it is time-efficient. -* Independent to time, this method rewards team members for solving problems and focus on value delivery. +* Dado que proporciona una estimación rápida y aproximada de la cantidad de trabajo que se espera para un proyecto, es eficiente en el tiempo. +* Independientemente del tiempo, este método recompensa a los miembros del equipo por resolver problemas y centrarse en la entrega de valor. -#### Cons -* It is unclear how risk, complexity and repetition attribute to the size estimation, and therefore difficult to achieve consistency over time. -* The nature of the various T-Shirt sizes is ordered categories, corresponding to the ordinal scale. When converting to the Fibonacci sequence as story points, the value assignment is arbitrary. Someone can easily challenge why a size gets assigned to one value instead of another. -* The summation, subtraction and average on the story points are not meaningful, e.g. Does the difference in effort between a medium size story and a small size story is an extra-small size story? What does velocity as 20 story points mean, e.g. two large and two small stories? -* This method doesn’t translate from story points to the time required to completed and therefore, couldn’t answer a common question from stakeholder: how long will feature A be completed? +#### Contras +* No está claro cómo el riesgo, la complejidad y la repetición se atribuyen a la estimación del tamaño y, por lo tanto, es difícil lograr consistencia en el tiempo. +* La naturaleza de los distintos tamaños de camiseta está ordenada por categorías, correspondientes a la escala ordinal. Al convertir a la secuencia de Fibonacci como sprint points, la asignación de valor es arbitraria. Alguien puede cuestionar fácilmente por qué se asigna un tamaño a un valor en lugar de a otro. +* La suma, la resta y el promedio de los sprint points no son significativos, p. Ej. ¿La diferencia de esfuerzo entre una historia de tamaño mediano y una historia de tamaño pequeño es una historia de tamaño extrapequeño? ¿Qué significa la velocidad como 20 sprint points, p. Ej. dos historias grandes y dos pequeñas? +* Este método no se traduce de los sprint points al tiempo requerido para completar y, por lo tanto, no pudo responder una pregunta común de las partes interesadas: ¿cuánto tiempo se completará la función A? -Note: Some other methods refer to effort different from T-Shirt sizes, such as animals and gummy bears. Essentially they’re the same idea. +Nota: Algunos otros métodos se refieren a esfuerzos diferentes a los tamaños de camiseta, como animales y ositos de goma. Básicamente, son la misma idea. -### Use Ideal Hours or Days -This method is from the XP methodology. For each story, the delivery team discusses how many ideal days or hours it requires. The ideal day or hour, using the Fibonacci sequence, can be based on the average time a dev needs, or the time an average dev needs. To determine when a feature can be finished, we can use a load factor (i.e. an ideal day equals to 3 actual days) or a percentage (i.e. assume in a day, we only have 70% of the time to do actual work) to convert the ideal days or hours into the actuals. +### Usar horas o días ideales +Este método es de la metodología XP. Para cada historia, el equipo de entrega analiza cuántos días u horas ideales requiere. El día u hora ideal, usando la secuencia de Fibonacci, puede basarse en el tiempo promedio que necesita un desarrollador o el tiempo que necesita un desarrollador promedio. Para determinar cuándo se puede terminar una función, podemos usar un factor de carga (es decir, un día ideal equivale a 3 días reales) o un porcentaje (es decir, supongamos que en un día solo tenemos el 70% del tiempo para hacer el trabajo real) para Convierta los días u horas ideales en reales. #### Pros -* Using ideal hours or days to estimate effort promotes story points to the ratio scale. This allows meaningful comparison between story points in various ways, such as summation, subtraction, multiplication, division, medium, etc. For example, a story with story points as 8 means 4 times more effortful to complete than a story with story points as 2. The ratio scale also allows producing any metric of interest, e.g. error metrics. -* The measurement of effort is more well-defined and easy to explain. -* The three aspects of effort can be easily captured by time. -* Can directly generalise the average times needed for specific tasks, e.g. 2 ideal days for writing tests, 0.5 ideal days for documentation, - -#### Cons -* Human is not good at estimating effort in time as we are inclined to overestimate our capability and thus, under-estimate the ideal days or hours needed. -* Management may hold the hours or days against the delivery team on why the development falls behind. +* El uso de horas o días ideales para estimar el esfuerzo promueve los sprint point en la escala de proporción. Esto permite una comparación significativa entre los sprint points de varias formas, como suma, resta, multiplicación, división, medio, etc. Por ejemplo, una historia con sprint points como 8 significa 4 veces más difícil de completar que una historia con sprint points como 2. La escala de razón también permite producir cualquier métrica de interés, p. Ej. métricas de error. +* La medida del esfuerzo está más definida y es más fácil de explicar. +* Los tres aspectos del esfuerzo se pueden capturar fácilmente con el tiempo. +* Puede generalizar directamente los tiempos medios necesarios para tareas específicas, p. Ej. 2 días ideales para redactar pruebas, o 5 días ideales para documentación, + +#### Contras +* Los humanos no son buenos para estimar el esfuerzo en el tiempo, ya que estamos inclinados a sobreestimar nuestra capacidad y por lo tanto a subestimar los días u horas ideales necesarios. +* La gerencia puede mantener las horas o los días contra el equipo de entrega sobre por qué el desarrollo se atrasó. ## Fuentes From 747b22102fbc045a9f20fdea0a25cb05064330db Mon Sep 17 00:00:00 2001 From: Yocelin Garcia Romero Date: Tue, 29 Jun 2021 20:33:57 -0500 Subject: [PATCH 5/6] Apply feedback with story point name instead of sprint point --- _posts/20201-06-21-sprint-points.md | 118 +++++++++++++--------------- 1 file changed, 55 insertions(+), 63 deletions(-) diff --git a/_posts/20201-06-21-sprint-points.md b/_posts/20201-06-21-sprint-points.md index b6e314a..2eed84d 100644 --- a/_posts/20201-06-21-sprint-points.md +++ b/_posts/20201-06-21-sprint-points.md @@ -1,11 +1,11 @@ --- -title: Sprint points +title: Story points category: foundations layout: post --- -# Sprint points -Los *sprint points* son una técnica de estimación ágil que le brinda una estimación relativa de cuánto trabajo y esfuerzo se dedicará a una tarea en particular. +# Story points +Los *story points* son una técnica de estimación ágil que le brinda una estimación relativa de cuánto trabajo y esfuerzo se dedicará a una tarea en particular. ## ¿Qué es Agile? Agile es un enfoque de gestión de proyectos que se ha utilizado ampliamente en el desarrollo de software para la entrega de proyectos. Se basa en desglosar todo el proyecto en ciclos de desarrollo más cortos (llamado iteración o sprint), que dura solo alrededor de 2-4 semanas. @@ -14,54 +14,54 @@ El objetivo principal de la [metodología ágil](https://clickup.com/blog/agile/ ## ¿Como hace eso? -Al final de cada iteración, desarrolla una versión de su producto llamada *iteración*. Presenta esta *iteración* a los clientes para recibir sus comentarios. +Al final de cada iteración, se desarrolla una versión de su producto llamada *iteración*. Presenta esta *iteración* a los clientes para recibir sus comentarios y mejorar el proceso. Luego, incorpore esta retroalimentación en su próximo proceso de planificación de iteración y repita hasta que tenga un producto final. -## ¿Qué son los *sprint points*? -Antes de hablar sobre qué es un sprint point, debemos comprender dos términos: "*historia de usuario*" y "*acumulación de productos*". +## ¿Qué son los *story points*? +Antes de hablar sobre qué es un story point, debemos comprender dos términos: "*historia de usuario*" y "*product backlog*". * Una historia de usuario es una explicación informal de las funciones que su usuario desea en el sistema. Un ejemplo de historia de usuario del mundo real es: "Como jugador, quiero que mi héroe pueda volar". -* Una cartera de productos contiene una lista de cada historia de usuario en la que se debe trabajar e implementar en el producto final. +* Una *product backlog* contiene una lista de cada historia de usuario en la que se debe trabajar e implementar en el producto final. -Un *sprint point* es una unidad asignada a una historia de usuario para expresar cuánto tiempo y energía se requeriría para ese trabajo. +Un *story point* es una unidad asignada a una historia de usuario para expresar cuánto tiempo y energía se requeriría para ese trabajo. Es como el nivel de dificultad de un juego. Un número más alto significa un nivel más difícil. -Sin embargo, aquí es donde la mayoría de la gente se equivoca. En un videojuego, el nivel 2 no significa necesariamente que sea el doble de difícil que el nivel 1. Pero ese no es el caso en los sprint points. +Sin embargo, aquí es donde la mayoría de la gente se equivoca. En un videojuego, el nivel 2 no significa necesariamente que sea el doble de difícil que el nivel 1. Pero ese no es el caso en los story points. -Los sprint points son una técnica de estimación relativa (también llamada tamaño relativo). +Los story points son una técnica de estimación relativa (también llamada tamaño relativo). -La estimación relativa significa que los valores se asignan sobre una base de comparación. Eso significa que no hay unidades estándar para los sprint points. +La estimación relativa significa que los valores se asignan sobre una base de comparación. Eso significa que no hay unidades estándar para los story points. -Por ejemplo, si una historia de usuario A tiene un punto 2 y la historia de usuario B tiene un sprint point: 1, significará que A requerirá el doble de esfuerzo en comparación con completar B. Por lo tanto, los sprint points tienen una similitud: puntos de referencia. +Por ejemplo, si una historia de usuario A tiene un punto 2 y la historia de usuario B tiene un story point: 1, significará que A requerirá el doble de esfuerzo en comparación con completar B. Por lo tanto, los story points tienen una similitud: puntos de referencia. Por ejemplo, digamos que dos equipos están construyendo dos juegos móviles de rompecabezas similares. El nivel 10 en el primer juego de rompecabezas no sería necesariamente tan difícil como el nivel 10 en el segundo juego de rompecabezas, ¿verdad? -De manera similar, su equipo podría asignar un valor de sprint points de 8 a una historia de usuario, y otro equipo puede hacer una estimación de puntos de 13 puntos a una historia similar. El valor de los sprint points depende totalmente de tu equipo y tu tarea. +De manera similar, su equipo podría asignar un valor de story points de 8 a una historia de usuario, y otro equipo puede hacer una estimación de puntos de 13 puntos a una historia similar. El valor de los story points depende totalmente de tu equipo y tu tarea. -Los sprint points te permiten calcular la velocidad del equipo y estimar el trabajo de manera objetiva. +Los story points te permiten calcular la velocidad del equipo y estimar el trabajo de manera objetiva. ## Valores de print points -0.5, 1, 2, 3, 5, 8, 13, 20, 40, 100 +1, 2, 3, 5, 8, 13, ... ### ¿Qué entra en un Story Point? -Los métodos ágiles como XP ("Programación extrema") y Scrum tienen una fase de planificación para que los miembros del equipo de desarrollo discutan cada elemento de la lista de trabajos pendientes priorizados y estimen colectivamente el esfuerzo involucrado para completar, y luego hagan un pronóstico de Sprint que describa cuánto trabajo puede lograr el equipo dentro del Sprint. La estimación del esfuerzo colectivo es donde entran los sprint points. Los sprint points representan el esfuerzo general requerido para implementar completamente un elemento de la cartera de productos o cualquier otro trabajo. En la literatura de Scrum, el esfuerzo es una construcción de múltiples facetas que consiste en riesgo, complejidad y repetición. +Los métodos ágiles como XP ("Programación extrema") y Scrum tienen una fase de planificación para que los miembros del equipo de desarrollo discutan cada elemento de la lista de trabajos pendientes priorizados y estimen colectivamente el esfuerzo involucrado para completar, y luego hagan un pronóstico de Sprint que describa cuánto trabajo puede lograr el equipo dentro del Sprint. La estimación del esfuerzo colectivo es donde entran los story points. Los story points representan el esfuerzo general requerido para implementar completamente un elemento de la cartera de productos o cualquier otro trabajo. En la literatura de Scrum, el esfuerzo es una construcción de múltiples facetas que consiste en riesgo, complejidad y repetición. ![esfuerzo en Scrum](/wiki/assets/img/esfuerzo.png) -Debido a que los sprint points representan el esfuerzo por desarrollar una tarea, la estimación de un equipo debe incluir todo lo que pueda afectar el esfuerzo. Eso podría incluir: +Debido a que los story points representan el esfuerzo por desarrollar una tarea, la estimación de un equipo debe incluir todo lo que pueda afectar el esfuerzo. Eso podría incluir: - La cantidad de trabajo por hacer - La complejidad del trabajo - Cualquier riesgo o incertidumbre en la realización del trabajo. Debe considerar las dependencias que pueda tener mientras trabaja, estas pueden ser tanto internas (es decir, una MS desarrollada por otra persona y de la que no tiene conocimiento previo) tanto como externas (es decir, una integración de terceros como Auth0) -Al realizar estimaciones con sprint points, asegúrate de considerar cada uno de estos factores. Veamos cómo afecta cada uno a la estimación de esfuerzo proporcionada por los sprint points. +Al realizar estimaciones con story points, asegúrate de considerar cada uno de estos factores. Veamos cómo afecta cada uno a la estimación de esfuerzo proporcionada por los story points. ### Considere todo lo necesario para que una tarea se considere *hecha* -El sprint point estimará todo lo que involucre finalizar una tarea, desde su inicio hasta que se considere finalizada +El story point estimará todo lo que involucre finalizar una tarea, desde su inicio hasta que se considere finalizada -- Documentos (si es necesario) +- Documentación (si es necesario) - Pruebas (pruebas unitarias, de integración) - Pull requests @@ -75,9 +75,9 @@ Al calcular la velocidad del equipo, así puede visualizar: * Puede hacer mejores predicciones para el cronograma de sus proyectos futuros. ### Velocidad -La velocidad (también llamada velocidad de sprint) muestra la cantidad de trabajo que se ha realizado en cada sprint. Es el total de sprint points completados divididos por el número total de sprints. +La velocidad (también llamada velocidad de sprint) muestra la cantidad de trabajo que se ha realizado en cada sprint. Es el total de story points completados divididos por el número total de sprints. -Por ejemplo, digamos que su equipo termina 50 sprint points en 2 sprints. +Por ejemplo, digamos que su equipo termina 50 story points en 2 sprints. Entonces, su velocidad de sprint será (50/2) = 25 puntos por sprint. @@ -88,38 +88,38 @@ Y cuando utiliza una estimación de tiempo, solo especifica un tiempo aproximado La conclusión es que es difícil estimar la cantidad precisa de tiempo necesario para una tarea técnica. -Dado que los sprint points son un método de estimación ágil, no hacen un compromiso definitivo (como dentro de una semana o el próximo viernes). En cambio, brindan una estimación relativa del esfuerzo general que se dedicará a una tarea. +Dado que los story points son un método de estimación ágil, no hacen un compromiso definitivo (como dentro de una semana o el próximo viernes). En cambio, brindan una estimación relativa del esfuerzo general que se dedicará a una tarea. Esto ayudará a reducir el estrés innecesario de cumplir con plazos ajustados y poco realistas. En cambio, se queda con una estimación mucho más razonable y precisa. -## Los sprint points no son subjetivos +## Los story points no son subjetivos A veces, las personas difieren en sus estimaciones de cuánto tiempo llevará una tarea en un proyecto Agile. Esto a menudo conduce a la subjetividad al utilizar estimaciones de tiempo. Es por eso que este enfoque no siempre proporciona una estimación precisa. Por ejemplo, un desarrollador senior puede asignar una tarea "7 horas" de acuerdo con su estándar, pero al desarrollador junior le puede llevar 15 horas completar esa misma tarea. ¡No se puede comparar a un jugador novato con un programador profesional!) -Mientras calcula un sprint point, todo el equipo se sienta junto y decide qué puntos asignar a la historia del usuario. +Mientras calcula un story point, todo el equipo se sienta junto y decide qué puntos asignar a la historia del usuario. -## Factores clave que afectan los sprint points -### Cuánto trabajo se necesita hacer (tamaño de la historia) +## Factores clave que afectan los story points +### ¿Cuánto trabajo se necesita hacer? (tamaño de la historia) No todos los elementos de que estan pendientes por realizar son iguales; un elemento puede requerir más trabajo que otro. Por ejemplo, suponga que hay dos elementos de la lista de trabajos pendientes diferentes: -* Quiero una nueva arma para el héroe principal, Monkey King +* Quiero una nueva arma para el héroe principal. * Quiero nuevas armas para todos los héroes. ¿Cuál crees que llevará más tiempo? -¡La segunda historia, por supuesto! Comparado con él, la primera historia no requerirá mucho trabajo. +¡La segunda historia, por supuesto! Comparado con este, la primera historia no requerirá mucho trabajo. Entonces, la segunda historia obtendrá más puntos que la primera debido al mayor tamaño de la historia. ### Riesgo e incertidumbre Cada proyecto tiene sus riesgos e incertidumbres, especialmente con ciertos tipos de elementos de la lista de pendientes. -Por ejemplo: si el elemento pendiente implica trabajar con un nuevo marco con el que su equipo no tiene mucha experiencia, ese factor de riesgo aumentará el valor de los sprint points. +Por ejemplo: si el elemento pendiente implica trabajar con una nueva tecnología con la cual que su equipo no tiene mucha experiencia, ese factor de riesgo aumentará el valor de los story points. ### Complejidad La complejidad es definitivamente un factor muy importante para cualquier técnica de estimación ágil. Aquí hay dos historias similares con diferentes criterios de aceptación: @@ -131,31 +131,31 @@ El primero es pan comido, solo algunos retoques aquí y allá y ¡listo !. El se Naturalmente, durante el proceso de estimación del esfuerzo, estas historias de usuarios claramente ganan más puntos. -## ¿Cómo se calculan los sprint points en la metodología Agile? -Puede calcular los sprint points creando una historia base, eligiendo su escala y técnica de estimación, y luego calculando en consecuencia. +## ¿Cómo se calculan los story points en la metodología Agile? +Puede calcular los story points creando una historia base, eligiendo su escala y técnica de estimación, y luego calculando en consecuencia. -La estimación de los sprint points generalmente se realiza mediante un método llamado "el póquer de planificación". +La estimación de los story points generalmente se realiza mediante un método llamado "el póquer de planificación". ### Prepara la mesa de póquer (crea una historia base) El primer paso de la técnica de estimación es crear una historia de referencia o una historia base. -Es una historia de usuario completa de un ciclo de iteración anterior asignado con un valor de sprint point (generalmente 1 por simplicidad). +Es una historia de usuario completa de un ciclo de iteración anterior asignado con un valor de story point (generalmente 1 por simplicidad). -Este será su sprint point normalizado. La nueva lista de pendientes también se presenta con todas las nuevas historias de usuarios. +Este será su story point normalizado. La nueva lista de pendientes también se presenta con todas las nuevas historias de usuarios. ### Reparte las cartas (elige una escala para la estimación) -Hay dos escalas que se utilizan para la estimación de sprint points: +Hay dos escalas que se utilizan para la estimación de story points: - Escala lineal: contiene números naturales como 1, 2, 3, etc. - Escala de Fibonacci: números de la serie de Fibonacci como 1, 2, 3, 5, 8, etc. -En aras de la simplicidad, la mayoría de los equipos ágiles tienden a elegir la serie Fibonacci para su estimación de sprint points. +En aras de la simplicidad, la mayoría de los equipos ágiles tienden a elegir la serie Fibonacci para su estimación de story points. En esta técnica de estimación, la escala de Fibonacci se inserta en una tabla donde puede asignar un valor a cualquier historia de usuario. Así es como se ve una tabla de estimación cuando el equipo comienza a completarla: -![tabla de sprint points](/wiki/assets/img/sprint_points.png) +![tabla de story points](/wiki/assets/img/sprint_points.png) ### Planning poker -El planning Poker es una técnica de estimación ágil que se centra en el consenso general. Esta técnica de estimación también se utiliza para estimar cosas distintas a los sprint points del usuario. +El planning Poker es una técnica de estimación ágil que se centra en el consenso general. Esta técnica de estimación también se utiliza para estimar cosas distintas a los story points del usuario. Durante esta reunión de estimación ágil: @@ -168,35 +168,27 @@ Durante esta reunión de estimación ágil: Al final del póquer de planificación, nuestra mesa estará llena de historias de usuarios junto a sus puntos asignados. -Espere que la matriz de estimación de sprint points se vea así: +Espere que la matriz de estimación de story points se vea así: -![tabla de sprint points completada](/wiki/assets/img/sprint_points_full.png) +![tabla de story points completada](/wiki/assets/img/sprint_points_full.png) `Aviso importante!` -Muchas veces cuando un equipo no está sincronizado, la persona que tomará una tarea tendrá la última palabra sobre el número de sprint points que se le asignará, recuerde que la práctica lo hace perfecto y nadie debe obligarlo a tener el mismo ritmo también si está comenzando con un nuevo equipo. +Muchas veces cuando un equipo no está sincronizado, la persona que tomará una tarea tendrá la última palabra sobre el número de story points que se le asignará, recuerde que la práctica lo hace perfecto y nadie debe obligarlo a tener el mismo ritmo también si está comenzando con un nuevo equipo. -La técnica de Sprint Points te permite a ti y a tus equipos llegar a ser técnicamente iguales cuando pasa el tiempo y es una técnica muy flexible. +La técnica de story points te permite a ti y a tus equipos llegar a ser técnicamente iguales cuando pasa el tiempo y es una técnica muy flexible. ### Calcular la velocidad del equipo y planificar el cronograma del proyecto Después de la reunión de estimación, el [sprint backlog](https://clickup.com/blog/sprint-backlog/) se crea, después de una sesión de refinamiento del backlog el equipo comenzará a trabajar en las historias. -La historia señala que Agile lo ayuda a realizar un seguimiento del desempeño del equipo y hacer mejores pronósticos. +Esta metodología Agile lo ayuda a realizar un seguimiento del desempeño del equipo y hacer mejores pronósticos. Una vez finalizado el primer sprint, hay una [reunión retrospectiva](https://clickup.com/blog/scrum-meetings/). Esto le proporciona los datos para calcular la velocidad del equipo (el número de story points completados durante un sprint). -Una vez finalizado el primer sprint, hay una [reunión retrospectiva](https://clickup.com/blog/scrum-meetings/). +Una vez que obtenga la velocidad del sprint, puede determinar cuántos sprints necesitará su equipo de proyecto para completar todo el proyecto. Si su proyecto Agile tiene una estimación de story points con un total de 480 y su velocidad real es 48, entonces puede calcular que su equipo necesitará 10 sprints para completar todo el proyecto. Esto facilita la planificación de la programación de su proyecto ágil. -Esto le proporciona los datos para calcular la velocidad del equipo (el número de sprint points completados durante un sprint). +## Formas de estimar los story points +El esfuerzo estimado en un Sprint es un concepto latente, el significado no se puede observar ni medir directamente, a diferencia de conceptos observables como temperatura y distancia. Por lo tanto, no es sorprendente ver visiones diferentes, incluso contradictorias, sobre cómo se debe estimar el esfuerzo, particularmente si los story points deben ser una función del tiempo. -Una vez que obtenga la velocidad del sprint, puede determinar cuántos sprints necesitará su equipo de proyecto para completar todo el proyecto. - -Si su proyecto Agile tiene una estimación de sprint points con un total de 480 y su velocidad real es 48, entonces puede calcular que su equipo necesitará 10 sprints para completar todo el proyecto. - -Esto facilita la planificación de la programación de su proyecto ágil. - -## Formas de estimar los sprint points -El esfuerzo estimado en un Sprint es un concepto latente, el significado no se puede observar ni medir directamente, a diferencia de conceptos observables como temperatura y distancia. Por lo tanto, no es sorprendente ver visiones diferentes, incluso contradictorias, sobre cómo se debe estimar el esfuerzo, particularmente si los sprint points deben ser una función del tiempo. - -Debido a las diferentes opiniones sobre el spint point y los pasos subdefinidos para estimar, no es sorprendente observar varios métodos utilizados para estimar el spint point en la práctica. +Debido a las diferentes opiniones sobre el story point y los pasos subdefinidos para estimar, no es sorprendente observar varios métodos utilizados para estimar el story point en la práctica. ### Utilice la primera historia como punto de referencia Asigne un número para la primera historia. Cualquier otra historia de este Sprint se comparará con la primera historia. Los Sprints futuros repetirán este proceso y se alinearán en la misma escala. Por ejemplo, si una historia tiene aproximadamente la misma cantidad de trabajo que la que ya ha dimensionado, dele la misma cantidad de puntos. Está claro que la estimación del esfuerzo se realiza de forma relativa. @@ -205,12 +197,12 @@ Asigne un número para la primera historia. Cualquier otra historia de este Spri * El cerebro humano es bueno para comparar y por lo tanto, este método tiene una carga cognitiva menor. * Dado que solo es necesario comparar con la primera historia, la estimación es relativamente liviana en el procesamiento cognitivo y eficiente en el tiempo. * Independientemente del tiempo de desarrollo, este método recompensa a los miembros del equipo por resolver problemas y centrarse en la entrega de valor. -* Los sprint points están en la escala de intervalo y son significativos en suma, resta y medio. La escala de intervalo es suficiente para el cálculo de la velocidad. +* Los story points están en la escala de intervalo y son significativos en suma, resta y medio. La escala de intervalo es suficiente para el cálculo de la velocidad. #### Contras -* El punto inicial asignado a la primera historia es totalmente arbitrario. Aunque el valor no importa, ya que todos los puntos siguientes se asignan relativamente, el punto inicial y la historia sí importan cuando configuran la escala del sistema de sprint points. +* El punto inicial asignado a la primera historia es totalmente arbitrario. Aunque el valor no importa, ya que todos los puntos siguientes se asignan relativamente, el punto inicial y la historia sí importan cuando configuran la escala del sistema de story points. * Aunque es fácil comparar los esfuerzos entre tareas, es difícil medir la magnitud de la diferencia ya que los valores numéricos no pertenecen a nada directamente medible / observable. -* Este método no se traduce de los sprint points al tiempo requerido para completar y, por lo tanto, no pudo responder una pregunta común de las partes interesadas: ¿cuánto tiempo se completará la tarea A? +* Este método no se traduce de los story points al tiempo requerido para completar y, por lo tanto, no pudo responder una pregunta común de las partes interesadas: ¿cuánto tiempo se completará la tarea A? ### Tallas de camiseta @@ -221,9 +213,9 @@ Utilice varios tamaños, como extrapequeño (XS), pequeño (S), mediano (M), gra #### Contras * No está claro cómo el riesgo, la complejidad y la repetición se atribuyen a la estimación del tamaño y, por lo tanto, es difícil lograr consistencia en el tiempo. -* La naturaleza de los distintos tamaños de camiseta está ordenada por categorías, correspondientes a la escala ordinal. Al convertir a la secuencia de Fibonacci como sprint points, la asignación de valor es arbitraria. Alguien puede cuestionar fácilmente por qué se asigna un tamaño a un valor en lugar de a otro. -* La suma, la resta y el promedio de los sprint points no son significativos, p. Ej. ¿La diferencia de esfuerzo entre una historia de tamaño mediano y una historia de tamaño pequeño es una historia de tamaño extrapequeño? ¿Qué significa la velocidad como 20 sprint points, p. Ej. dos historias grandes y dos pequeñas? -* Este método no se traduce de los sprint points al tiempo requerido para completar y, por lo tanto, no pudo responder una pregunta común de las partes interesadas: ¿cuánto tiempo se completará la función A? +* La naturaleza de los distintos tamaños de camiseta está ordenada por categorías, correspondientes a la escala ordinal. Al convertir a la secuencia de Fibonacci como story points, la asignación de valor es arbitraria. Alguien puede cuestionar fácilmente por qué se asigna un tamaño a un valor en lugar de a otro. +* La suma, la resta y el promedio de los story points no son significativos, p. Ej. ¿La diferencia de esfuerzo entre una historia de tamaño mediano y una historia de tamaño pequeño es una historia de tamaño extrapequeño? ¿Qué significa la velocidad como 20 story points, p. Ej. dos historias grandes y dos pequeñas? +* Este método no se traduce de los story points al tiempo requerido para completar y, por lo tanto, no pudo responder una pregunta común de las partes interesadas: ¿cuánto tiempo se completará la función A? Nota: Algunos otros métodos se refieren a esfuerzos diferentes a los tamaños de camiseta, como animales y ositos de goma. Básicamente, son la misma idea. @@ -231,7 +223,7 @@ Nota: Algunos otros métodos se refieren a esfuerzos diferentes a los tamaños d Este método es de la metodología XP. Para cada historia, el equipo de entrega analiza cuántos días u horas ideales requiere. El día u hora ideal, usando la secuencia de Fibonacci, puede basarse en el tiempo promedio que necesita un desarrollador o el tiempo que necesita un desarrollador promedio. Para determinar cuándo se puede terminar una función, podemos usar un factor de carga (es decir, un día ideal equivale a 3 días reales) o un porcentaje (es decir, supongamos que en un día solo tenemos el 70% del tiempo para hacer el trabajo real) para Convierta los días u horas ideales en reales. #### Pros -* El uso de horas o días ideales para estimar el esfuerzo promueve los sprint point en la escala de proporción. Esto permite una comparación significativa entre los sprint points de varias formas, como suma, resta, multiplicación, división, medio, etc. Por ejemplo, una historia con sprint points como 8 significa 4 veces más difícil de completar que una historia con sprint points como 2. La escala de razón también permite producir cualquier métrica de interés, p. Ej. métricas de error. +* El uso de horas o días ideales para estimar el esfuerzo promueve los story point en la escala de proporción. Esto permite una comparación significativa entre los story points de varias formas, como suma, resta, multiplicación, división, medio, etc. Por ejemplo, una historia con story points como 8 significa 4 veces más difícil de completar que una historia con story points como 2. La escala de razón también permite producir cualquier métrica de interés, p. Ej. métricas de error. * La medida del esfuerzo está más definida y es más fácil de explicar. * Los tres aspectos del esfuerzo se pueden capturar fácilmente con el tiempo. * Puede generalizar directamente los tiempos medios necesarios para tareas específicas, p. Ej. 2 días ideales para redactar pruebas, o 5 días ideales para documentación, From b1a11dba2d58f2dcb92311d0c695b83c67337677 Mon Sep 17 00:00:00 2001 From: Yocelin Garcia Romero Date: Tue, 29 Jun 2021 20:36:37 -0500 Subject: [PATCH 6/6] Renema file sprint point for story points --- .../{20201-06-21-sprint-points.md => 20201-06-21-story-points.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _posts/{20201-06-21-sprint-points.md => 20201-06-21-story-points.md} (100%) diff --git a/_posts/20201-06-21-sprint-points.md b/_posts/20201-06-21-story-points.md similarity index 100% rename from _posts/20201-06-21-sprint-points.md rename to _posts/20201-06-21-story-points.md